本文来源于:2022年第六届农村中小金融机构科技创新优秀案例评选,作者:陕西农信

陕西农信:基于自主可控技术的中小银行软件自动化测试体系建设探索

2022-10-03 关键词:农信/农商行,自动化,安全可控5591

一、项目背景


随着金融行业经营生态日益丰富、金融信息科技不断深化,敏捷项目的快速迭代交付已成为常态。中小金融机构受限于人员、资金投入、供应商产品过度依赖等问题,在紧张的测试周期下自主可控地保证软件产品质量,成为一项艰巨的挑战。


陕西省农村信用社联合社(以下简称“陕西农信”)立足当下,围绕测试全生命周期,以保障信息系统质量、提升测试质效为目标,针对中小银行信息系统特点和测试工作痛点、难点,创新工作方法,以测试体系和流程优化为先导,以测试工具发展和资产积累为手段,基于自主可控技术全面推广自动化测试应用,逐一克服自动化测试过程中遇到的管理和技术难题,将案例选取、脚本开发、代码管理、调度执行、统计分析、结果展示等自动化测试过程标准化、规范化。针对项目场景多、链路长、平台广、外设多等特点,着重探索UI和接口混合测试、跨平台测试和外设处理等,通过开源框架集成、对接相关功能,自主实现了自动化测试的平台化,探索出了一条中小金融机构自主可控的自动化测试体系建设之路。


二、项目方案


1.项目目标

陕西农信开展自动化测试体系探索的目标,一是节省人力成本,缩短回归测试时间,提高测试交付速度和测试质量,将测试人员从简单、重复、枯燥、繁琐的手工测试中解放出来,完成无人值守的操作。二是按需快速创建测试数据,生成建立真实测试所需的特定数据,助力手工测试人员聚焦其他复杂场景、关键需求,减少手工测试人员等待时间。三是持续保证环境、版本、配置的连通性、可测性、稳定性,排除主观因素干扰,在自动化测试在环境、版本、配置变更时快速回归所有主要功能流程。


2.系统架构

基于银行软件全流程自动化测试驱动的管理理念,自动化测试平台以Robot Framework、Jenkins和测试管理平台(以下简称CTP)为核心,通过集成测试管理平台、代码开发平台、代码管理库、测试任务调度平台、执行机集群,实现从测试需求-案例开发、案例开发-案例执行、案例执行-报告展示流程的结合,流程引擎高效运转,完成24小时无人值守测试工作,为提高回归测试效率、解放手工测试、提升测试质效提供了有力支撑。自动化测试平台如图1所示:


49.png

图1 自动化测试平台


测试管理平台:主要负责自动化测试案例管理、脚本维护管理、执行结果汇总、展示等。

代码开发平台:基于Python的开源自动化测试框架,允许任意文本编辑器,支持关键字驱动,兼容多种类型客户端和接口测试,支持分布式测试执行,可以通过引入第三方库,灵活实现定制需求。

Jenkins:测试任务调度平台,用于发起、监控持续重复的工作。在本次实施过程中,主要实现了自动化测试调度任务的监控。

代码管理库:代码托管平台,主要用于自动化测试脚本的代码管理。


各平台功能之间流程协作:首先从测试管理平台资产库选取自动化回归测试案例,依据选取测试的案例在本地进行测试脚本开发、上传代码管理库,测试任务调度平台根据编排好的测试任务,*****步从代码管理库拉取代码,第二步分发测试脚本到执行机集群,第三步执行测试脚本、第四步收集测试结果并合并、第五步将测试结果同步到测试管理平台,通过测试管理平台展示测试结果,生成多维度测试报告。


在自动化测试项目实施和持续运行过程中,陕西农信紧密结合自身需求同步优化测试工具、体系,基于自动化测试项目实施经验,规范自动化测试可行性分析、需求分析、制定计划、脚本设计开发、测试调度执行、报告维护各流程实施过程,制定自动化需求调研表、可行性检查单、测试脚本开发计划、脚本开发规范、任务编排规范、自动化测试报告等标准化文档,提升自动化测试各流程的过程质量。自动化测试流程如图2所示:


50.png

图2 自动化测试流程


三、创新点


1.物理外设和安全验证技术应用

银行系统物理外设众多,软件自动化测试工具驱动物理外设比较困难。本项目一是探索基于开源硬件平台arduino的外设处理,通过按键器、机械臂,实现对刷卡器、键盘的简单物理操作,如图3、图4所示。二是基于USB Redirector搭建设备共享服务器,实现并发执行中的多条脚本排队调用同一套物理外设;三是软件自动化测试工具无法直接破解安全验证,实现采取特殊模拟手段对密码控件文本框、验证码的输入,为后续行内自动化测试系统在外设探索上积累了丰富的测试经验。


51.png

图3 机械臂实现刷卡操作


52.png

图4 按键器敲击实体键盘


2.多任务并发的自动化测试模式应用

针对回归测试耗时耗力发现缺陷少,手工测试投入产出比例低,本项目一是通过多任务并发执行自动化测试,大幅缩短回归测试时间、提升回归频次;二是通过混合执行接口、UI自动化脚本准备测试数据,大幅缩短测试环境、数据准备时间,帮助测试人员将注意力更多投向实际测试执行,提升测试效率。


3.跨平台调用的技术框架

银行系统技术架构多样,没有适配所有架构系统的自动化测试工具。本项目通过RobotFramework框架集成不同类库应对多样技术架构,Web\App\CS\API,在脚本中调用各类库实现跨平台测试过程,特别是基于AI图像识别的C/S客户端自动化测试框架,实现了基于openCV图像识别、对比,消除了被测客户端技术框架的差异,从而任意C/S客户端具备了通用UI自动化测试的可能。


4.全中文脚本开发

针对脚本语言生涩难懂,执行日志理解困难,测试结果分散难以阅读的情况,本项目一是通过变量、步骤、组件、脚本完全中文化封装;二是执行过程全程录像,正在被操作的元素高亮提醒,查看执行过程可无需阅读日志;三是建立测试信息驾驶舱,通过多维度自动生成执行结果统计图、失败原因分析图、功能模块风险热力图,提升测试结果可视化效果。


四、技术实现特点及优势


本项目基于RobotFramework框架自主实现了脚本组件化,脚本编写的结构化,加强编写规范,有效提升了脚本开发效率、批量执行效率,降低分析维护工作量。基于jenkins和Selenium-Grid自主实现了执行并发和顺序自动优化、日志自动合并和结果解析回传等机制,提高了获取测试结果便捷性和准确性。基于自有测试管理平台,实现测试结果可视化,提升统计分析友好性。主要技术实现特点和优势如下内容:


1.技术实现全面自主可控

陕西农信利用开源框架技术搭建了自主可控的自动化测试平台,通过组建自研发团队,独立开发平台核心功能,将底层代码掌握在自己手中,不依赖供应商开发产品功能,能够快速响应测试实施过程中遇到的实际问题,消除了自动化测试技术在拓展、创新、探索方面的限制,实现了框架搭建和脚本开发、调度执行、结果统计等多层面的平台功能;实现了模拟键盘输入、物理外设调用、并发调度、失败录像等多种特色功能。同时,使用开源框架在技术实现上可以多样化,与测试管理平台、自动化测试调度平台、第三方库集成方式自由,灵活度更强、可控性更强。


2.单片机BADKEY模拟键盘输入密码

借鉴BADKEY原理,在arduino单片机写入特殊USB键盘驱动程序制成BADKEY连接至计算机USB端口,自动化测试脚本便可通过计算机COM通讯串口向BADKEY传入ASCII字符,BADKEY通过USB端口向计算机输出相应USB键盘按键信号,从而实现向密码控件文本框中输入文本的目的,克服了银行系统自动化测试的重大障碍。如图5所示:


53.png

图5 BADKEY模拟键盘输入密码


3.物理设备的远程共享

本项目中,将一台物理计算机设为设备服务器,所有物理设备接入该服务器,通过USB/COM共享工具允许所有执行机远程连接该服务器,并在测试脚本中设计了一套排队等待机制请求、占用和释放指定物理设备,将物理设备映射至执行机本地,并完成测试操作,从而实现了将有限物理设备共享给所有需要使用外设的虚拟执行机,成功解决了虚拟机无法使用外设、物理外设数量有限利用效率低的问题。


4.B/S和C/S架构的测试并发

本项目基于RobotFramework框架pabot工具和selenium-Grid实现了在单个或多个执行机上同时启动多个浏览器进程,如图6所示,自动分发测试脚本,并发执行B/S架构系统Web应用的自动化测试;基于Jenkins并发任务插件实现了在多执行机上分别执行指定测试脚本,并发执行C/S架构系统桌面应用的自动化测试。另外配合并发测试需要,开发了多种执行机制优化功能,如Web测试脚本自动分发、多执行机报告合并、按上次执行时间自动优化执行顺序、获取执行机真实IP、自动暂停执行机上其他并发测试脚本便于调用物理外设等,满足了大规模开展自动化测试的相关需求,极大提高了测试效率、节省了测试时间。


54.png

图6 单机启动10个浏览器


5.失败案例的重试机制和录屏

本项目中,对于失败案例处理也进行了有针对性的设计。首先,在并发执行过程中,失败脚本将自动重试指定次数,并标记重试通过脚本;其次,以并发执行失败脚本自动生成新的执行列表,同时进一步保证测试执行的稳定性,按照串行方式一一执行,并标记重试通过脚本;另外,采用自动启动屏幕录像功能,便于测试人员分析失败原因。从而将测试目的主要放在系统本身功能流程上,避免了环境、系统稳定性对测试结果产生过分影响。


6.脚本组件化

本项目将自动化测试脚本进行了分层组件化封装,从下到上主要包括RobotFramework原生组件、中文化组件、通用操作组件、页面元素组件、测试步骤组件、测试用例组件。此外还包含数据源组件、外设操作组件、框架功能组件等。测试开发人员根据测试需求,开发、维护底层框架代码和通用操作组件。脚本编写人员则侧重于根据用例需求实现测试脚本,开发维护相关页面组件、测试步骤、测试用例组件。通过组件化,从而实现了人员的合理分工,有效提升了脚本开发维护效率。


7.测试结果可视化

基于CTP自主集成新增自动化测试结果接口,实现了在CTP查询展示历史执行记录,设计实现了执行概况、执行详情、失败分析、失败功能模块等6张结果展示图表,如图7、图8、图9所示。通过与CTP的集成,有效提升了测试结果的可视性、分析的友好性,有利于自动化测试工具在各功能测试条线的使用、推广。


55.png

图7 自动化执行失败原因占比



56.png

图8 执行结果分析


57.png

图9 功能模块失败率统计


五、项目过程管理


本项目经历调研分析、准备实施、上线准备和稳步推广几个阶段,各阶段主要工作内容如下:


1.调研分析

此阶段起始时间为2021年3月至2021年4月,期间主要完成了对企业网银、柜面系统特性的分析,重点从部署架构、外设、特殊控件等方面进行调研、分析。根据调研情况,制定了框架设计方案。


2.准备实施

此阶段起始时间为2021年4月至2021年6月,根据框架设计方案,先后完成代码开发平台、调度平台、执行机群搭建、测试管理平台对接,试点项目企业网银脚本开发调试、演示运行等主要工作内容。


3.上线准备

此阶段起始时间为2021年6月至2021年7月,根据投产上线要求,编制设备及环境清单、规划企业网银任务调度顺序等。


4.稳步推广

此阶段起始时间为2021年7月至今,逐步在行内其他重要系统开展自动化测试的实施推广工作,具体如下:

*****批次:2021年11月,完成了商户线上线下一体化、PC商户端等系统。

第二批次:2021年12月,完成了造数脚本,覆盖了核心、柜面、esb、信贷、网贷、数仓等系统。

第三批次:2022年7月,完成了统一C端新柜面、运营管理、档案管理平台、DSG数据同步平台等系统。


六、运营情况


基于自主可控技术的银行软件自动化测试平台,支撑了陕西农信B/S、C/S架构系统和API调用系统,涵盖了页面元素校验、业务规则验证、账务验证、业务流程、数据比对、数据准备等,补充了各系统功能回归测试范围,为信息系统质量提供了有力的保障。


自动化测试平台上线以来,主要完成了企业网银、商户线上线下一体化、PC商户端、新统一C端、运营管理、档案管理、DSG数据同步平台、核心等共计8个系统自动化测试项目实施(7个回归测试+1个数据准备),交付测试脚本1647个,累计执行216624次,平均通过率高达92%。截止目前,累计稳定运行416天,日均执行用时7小时,日均执行脚本507个,发现重要问题缺陷52个,月均新增脚本95个,维护脚本288次。以下是主要自动化测试项目运营情况,如图10所示:


58.png

图10 主要自动化测试项目运营情况


七、项目成效


1.项目回归,提升效率

自动化回归测试项目主要涵盖企业网银、商户线上线下一体化平台、PC商户端、新统一C端、运营管理、档案管理平台、DSG数据同步等共计7个系统,交付测试脚本1609个,累计执行195016次,平均通过率95%。以档案管理为例,交付自动化测试脚本220个,覆盖资产库56.3%,累计执行27069次,经历5个测试版本,通过率高达92.2%,回归测试时间由8人日缩短至1小时,累计提交缺陷3个,验证关闭3个;以企业网银为例,交付自动化测试脚本542个,覆盖资产库47.3%,累计执行107261次,经历4个测试版本,通过率高达97.7%,回归测试时间由18人日缩短至1.7小时,累计提交缺陷8个,验证关闭8个,极大提升测试质量和效率,缩短了测试周期,降低了测试成本。


2.造数功能完备,简单易用

基于Jenkins参数化构建和api-request的测试数据准备工具,通过接口测试脚本实现了凭证领取、对公对私客户新增开户、账户挂失解挂冻结解冻止付解付等多种状态转换、信贷放款还款等测试数据准备操作,造数脚本将一套网银基础客户测试数据准备时间由原来的20分钟缩短为5~10秒。截止2022年6月底完成造数场景31个,适配8套测试环境,累计运行13832次,日均执行80次,按照自动化和人工单次执行分别耗时10秒、10分钟预估,可节省人力283人日,合计13人月,其中自动化造数脚本开发及维护累计花费2人月,共计节省11人月。截止2022年9月底完成造数场景38个,累计运行21608次,日均执行87次,按照自动化和人工单次执行分别耗时10秒、10分钟预估,可节省人力443人日,合计20人月,除去自动化造数脚本开发及维护累计花费2.2人月,共计节省17.8人月。随着造数脚本的持续使用,节省人力方面,自动化测试将发挥极大作用。


3.框架灵活,拓展性强

可根据测试需要引入三方库或自编代码,自主优化,拓展框架功能、特性,兼顾了友好性和开发效率。如采用中文组件、纯文本开发脚本。采取灵活策略提升回归测试效率,如增加线程数、执行机数量、ie、chrome混合执行等。统计方面,实现了各种图表的展示,如饼状图、柱状图、风险热力图,快速发现系统中存在质量风险的功能点,为提高回归测试效率、解放手工测试、提升测试质效提供了有力支撑。


八、经验总结


基于自主可控技术的中小银行软件自动化测试体系坚持“问题导向、目标牵引、科技引领、自主可控”工作原则,一是聚焦中小银行真实测试需求,一方面通过自动化测试技术扩大回归测试范围,提升关键项目测试质量、效率。另一方面通过自动化测试倒逼测试流程规范化、标准化,进一步改进测试工作管理。后一方面通过项目实践,加深对手工测试和自动化测试各自优势、不足的了解,更好地结合不同测试手段。二是针对银行系统的特殊性,大胆鼓励科技创新,采取实用技术手段解决自动化测试遇到的实际问题,不应拘泥于市面上的常见测试工具和项目经验。三是一定要将框架工具掌握在自己手里,为框架功能扩展留下充分灵活的空间,实现对技术问题的快速响应。尤其要指出的是,自动化测试过程中采取特殊方法处理银行系统安全机制,一定要与安全主管部门和领导充分沟通,在得到合理授权的情况下开展自动化测试。四是基于自主可控技术的项目实践,在流程、制度、规范、技术等方面积累了宝贵经验,证明了方案具备可复制性,能够为中小银行软件自动化测试工作的开展起到重要的启发和借鉴作用。


本网站案例,除特殊标明来源的,版权归金科创新社所有,未经许可不得转载,否则将视为侵权,对于不遵守此声明或者其他违法使用本文内容者,本网站依法保留追究权。另,本网站部分案例、观点文章来源于网络素材,如有侵权,请邮件联系 fenglei@fintechinchina.com 处理!
特别提示: 本网站免费为广大金融企业提供IT选型咨询服务,详情点击 【 需求提交 】

推荐阅读

更多

河南农信:基于大数据平台的智能审计管理信息系统

随着河南省农村信用社各项业务的飞速发展及信息化建设的不断深入,创新性金融产品和金融服务不断涌现,业务数据和业务流程复杂程度不断提高,交易信息和管理信息不断膨胀。

2018第二届农村中小金融机构科技创新优秀案例评选 河南农信 2022-10-03

安徽农信:基于人工智能的滨湖数据中心基础设施能效优化

数据中心基础设施能耗巨大,数据中心节能能够带来显著的经济和社会效益。而在数据中心基础设施中,空调能耗又占到全部能耗的70%,本项目通过将人工智能应用到数据中心基础设施空调系统运行控制中,为安徽省联社乃至金融行业数据中心基础设施节能降耗探索一条智能化创新的道路。

2018第二届农村中小金融机构科技创新优秀案例评选 安徽农信 2022-10-03

湖北农信:智慧学习平台

智慧学习平台的建设广泛运用互联网新媒体技术,集教、学、练、考评等要素,通过数字化学习运营将其打造为兼容、开放、共享、规范的多元一体化学习载体,成为全省农商行系统的学习中心,考试中心、直播中心、制度图书中心、员工交流中心,有效地提高了员工学习的时效性、便捷性和覆盖面,成为全省农商行“智慧银行”的建设重要载体。

第五届农村中小金融机构科技创新优秀案例评选 湖北农信 2022-10-03

江西农信:“百福快贷”项目

网络信贷项目依托互联网技术,采用全流程“不落地”线上操作模式,以大数据应用为基础,实现贷款申请受理、审批、放款、回收和贷后管理全部在线完成,整个贷款审批流程无需人工参与,实现了系统几分钟内自动产生审批结果,真正意义上达到了可足不出户就可完成贷款申请和收到贷款的目标。

2018第二届农村中小金融机构科技创新优秀案例评选 江西农信 2022-10-03

江苏省联社:风险偏好与限额管理系统

本项目旨在建设统一风险数据集市,打通风险管理相关数据,建立风险偏好与限额管理系统,提高各类风险识别、计量、监测和数据分析的能力,并提供给农商行风险管理相关的数据支撑,以帮助农商行进行合理的业务拓展与风险管理决策。

第五届农村中小金融机构科技创新优秀案例评选 江苏省联社 2022-10-03

重庆农商行:基于数据决策的全线上零售信贷产品“渝快贷”

“渝快贷”是重庆农商行推出的基于数据决策的个人全线上信用消费贷款产品。

2018第二届农村中小金融机构科技创新优秀案例评选 重庆农商行 2022-10-03

案例库

金融行业全面的数字金融创新案例,涵盖历届“鑫智奖·金融机构数智化转型优秀案例评选”、“农村金融机构科技创新优秀案例评选”、“城市金融服务同业案例征集活动”等科技创新参评案例

  • 农信/农商行
  • 安全可控
  • 自动化

微信
咨询

微信咨询

扫码添加金科小助手微信号
咨询案例和解决方案相关信息
或联系对应机构