金融行业自动化测试解决方案应用

2019-07-16 11:55张明礼
电子技术与软件工程 2019年8期
关键词:测试项目测试数据控件

张明礼

摘要:本文结合浦发银行测试工作实际,说明了自动化测试框架的构成及设计思路,对比了手工测试和自动化测试的成本、收益和适用场景.D

[关键词]金融业软件测试自动化测试

1引言

云计算、大数据以及移动支付等新一代互联网技术的革新,推动金融行业衍生出更多业务模式,推出更多产品和服务。然而随着产品线的拉长,发布周期的缩短,投产变更风险随之增大,对研发测试质量也提出了更高的要求。自动化测试是一种让计算机代替手工的测试方法,通过自动化技术手段模拟人工完成测试案例的执行工作,通过完成大量可重复性、相对稳定的测试案例执行工作,将大量的人力从枯燥的測试执行工作中释放出来,节省测试工作周期。自动化测试技术可以高效检测出系统缺陷,明显降低银行IT系统的测试成本,缩短系统发布周期,但也存在初期投入大,维护成本高等问题。如何结合手工测试并充分发挥自动化测试的作用?如何将自动化测试技术应用到金融行业的核心系统测试?本文进行理论和实践的探索。

2解决方案概览

根据我们在测试实践中的经验总结,自动化测试需要考虑测试项目管理、测试要素管理、测试执行的动态均衡调度等多个关键问题。图1展示了自动化测试解决方案示意图。

2.1测试项目管理

我们经常遇到多个系统的集中变更,因此经常需要同时开展多个测试项目,而多项目的并发进行容易造成测试资源管理的混乱,延长了系统发布周期,提高了测试成本。测试项目管理负责对多个并发进行的测试所使用到的流程、工具、方法和资源进行规划和监控,按项目生命周期组成的整体统一管理流程,能够有效减少由于测试项目数量增大造成的混乱状况,帮助组织机构掌控测试的开展,了解测试进度、合理安排测试阶段,使得测试项目有序进行。

2.2测试要素管理

不同的测试项目可能同时需要使用测试资源,因而需要跨项目的测试要素管理,实现合理分配资源、控制风险。测试要素管理用于管理测试工作各个环节的参与要素,包括测试需求、测试案例、测试数据、测试环境信息及测试版本管理等,能够做到统一管理,保障测试流程高效运转,测试执行全面监控。

测试要素管理是支持自动化测试实施的核心。自动化测试需要对测试执行全过程的所有参与要素进行细粒度的控制,用来支持测试启动,测试过程和结果记录等众多自动化步骤的实现。为了提高自动化测试能力,测试要素管理模块需要对多种测试要素数据存储和管理进行优化,从而能够支持对大规模测试的功能和性能要求。

2.3测试执行动态调度

自动化测试的关键环节是测试执行的高效率实现。对于复杂的金融系统,数量庞大的测试案例对测试管理和测试执行效率带来了双重挑战。可以采用测试案例的分级管理,按照是否并发运行分类,也可以根据测试需求的实际需要构建不同的测试场景,可以有效降低管理复杂度。同时,通过部署在执行机(移动设备)上的微代理,调度端可及时掌握该执行机(移动设备)的软硬件资源配置情况、自动化任务执行情况等。测试执行机资源不再与单个测试项目绑定,实现执行机资源按需动态分配,测试执行机(移动设备)可以被多个项目使用,实现资源复用,最大限度提高测试执行效率。

3成功案例

浦发银行云测试管理平台是按照上述方案搭建的自动化测试工作平台,通过提高自动化测试水平、对接测试资源池和集成行业测试工具,实现了并发测试任务与测试资源的自动匹配、调度和管理,支持接口类、字符终端类、GUI界面类、Web页面类和移动应用类等多种类型的自动化测试,为用户提供了按需响应的测试服务。

3.1系统组成

3.1.1测试项目与要素管理模块

测试项目管理模块支持测试项目统一流程管理,为管理层提供测试项目进度视图。测试项目管理模块包含五个核心功能包括:项目管理,计划管理,度量分析,资源管理和监控等。测试项目管理模块覆盖功能、技术类测试等全部测试类型。

测试要素管理模块能够全面管理各个测试项目全生命周期的各类测试资源,包括测试需求、测试案例、测试数据、测试缺陷和测试结果等测试要素,从而为质量测试全面监控提供细粒度的管理支持。图2是测试要素管理模块的示意图。

3.1.2测试动态调度执行模块

测试动态调度执行模块包括分发主控服务器和自动化测试执行客户端。自动化测试分发主控服务器负责接收测试计划执行请求,按照测试计划提供的配置,打包分发各个测试场景中的业务流,并接收自动化测试执行客户端返回的执行结果信息。同时,提供一系列的API,供其它系统监控执行情况和获取执行结果数据。

分发主控服务器支持多任务并发下的测试申请,自动匹配执行机(移动设备)资源池中可用资源。分发调度主要遵循以下原则:“按优先级匹配原则(缺省为先到先服务);最小属性集优先匹配原则,先满足先执行”。动态调度支持执行机资源分配动态伸缩,主要包括“资源充足时贪婪分配算法和资源紧张时均衡收缩算法”。负载均衡调度机制支持测试案例执行的进度监控。对于紧急发生的测试需求,平台支持人工干预,对测试任务进行必要调整。图3是动态均衡调度机制示意图。

3.1.3自动化控件管理模块

基于原子控件的自动化案例设计模式通过对用户操作行为的分析,将被测系统中的用户控件进行原子化操作分类,例如文本输入、点击(按钮、链接)、选择(单选、多选)、滑动等,以实现对被测系统中原子化操作的定向驱动。同时支持基于原子控件的二次封装,以更好的适应项目的具体需要。例如网银系统自动化测试案例准备时,既可以直接使用原子控件WebClick,也可以使用二次封装后的UIAPEBLogin控件。

用户使用构建好的自动化原子控件库即可完成案例的组装,此模式可有效支持同应用类型不同业务系统的自动化驱动,更好的复用自动化封装的控件库资产,最大化的降低自动化封装工程师的代码封装工作,并且专注于具体业务系统中的非标准、安全类、外设类等控件的自动化封装处理工作上。

3.1.4测试数据管理模块

针对金融行业IT系统的海量数据和数据安全性特征,平台支持对多项目跨系统的共享测试数据进行统一管理,最大限度复用测试数据,缩短测试数据的准备周期。为提高测试数据的使用效率,从测试案例执行前的静态配置扩展到执行时进行动态配置,提高测试数据执行时的使用效率。将共享数据(如柜员、凭证等)的分配放在执行时,通过案例编写时的配置,测试案例在执行时再去查询共享数据并加锁使用,使用完成后再解锁。这样保障了共享测试数据的使用效率,同时也节省了数据准备成本。

3.2自动化测试方案特点

(1)适用范围广泛。适用于接口类、字符终端类、GUI界面类、Web页面类和移动应用类等多种系统的自动化测试。

(2)自动化程度高。支持无人值守,具有执行过程自动记录,录像回放等功能,并支持对失效点的定位显示,加快缺陷定位和修复进程。

(3)性能出色。支持上万数量级的并发测试案例执行,得益于其并发测试执行的动态均衡调度机制。高效的并发测试执行调度,能够最大限度发挥资源利用率。

(4)低成本。通过对金融行业的常用功能建立自动化测试原子控件,支持对原子控件的二次封装,实现用户自定义的自动化测试,减少对测试人员的编程能力要求,进一步降低了测试成本。

(5)扩展性好。易于和第三方测试工具集成。平台提供开放的API接口,方便第三方工具集成,例如,可快速集成JIRA,SELENIUM等,从而有效整合测试资源。

3.3效果分析

以核心产品化系统投产验证测试为例,单个变更需要回归执行的测试案例数约为6000个。变更的发布周期平均为2周,包括审批变更计划,编译部署,测试,修复,复测以及发布上线多个阶段,其中可用于测试的时间窗为在3个工作日内。按一个工作日8小时计算,手工测试人员在3天可以完成500个回归测试案例的执行,完成6000个案例的测试执行需要配置12人完成。采用自动化测试方案后,可以24小时无人值守连续运行,完成单个测试案例的统计平均执行时间为0.5分钟,一"次执行平均执行时间约为2小时。

在测试规模较小时,手工测试和自动化测试在时间消耗上差别不大。假定测试人員工作效率恒定,随着测试规模增大,在测试时间窗内所需要的测试人员数量急剧增加,此时的应对策略是潮汐式的增加测试人员或者对测试范围进行剪裁。如果采用自动化测试,则可以通过添加执行机方式实现并发测试能力扩展,自动获得对超大测试案例集的测试能力。

3.4与手工测试的对比

我们知道,自动化测试的准备工作包括测试案例(脚本)的编写,测试数据的准备等环节,首次测试时成本较高,在自动化案例维护成本可控的情况下,其收益与迭代执行次数成正比,自动化测试带来的收益计算公式为:迭代执行次数*(手工执行成本一案例维护成本)一首次自动化测试准备成本。自动化测试和手工测试的成本曲线对比参见图4。

虽然自动化测试在效益和效率上可带来一定程度的提升,但自动化测试并不能取代手工测试,除了首次自动化的准备工作外,我们仍需要人工进行测试结果的分析确认,测试过程中异常排查以及业务变更引发的自动化案例维护等工作。表1中从不同纬度对两者进行了对比。

在开展应用系统自动化测试时,可结合上表和自动化测试收益计算公式进行判断。根据我们的经验,具有以下特点的系统适合做自动化测试:

(1)系统生命周期长,变更频率较高;

(2)系统重要性与出错代价高,往往直接面向外部客户的系统;

(3)系统功能点多,回归测试执行工作量大;

(4)软件前端界面、接口相对稳定。对于大部分的金融应用系统来说,使用自动化测试确实能够对金融IT系统的变更进行全面的回归测试,保障开门交易等重点交易不受变更的影响,从而有力保障金融业务系统的稳定可靠运行。

4小结

目前金融行业中在倡导DevOps理念,提倡加强开发、测试、运维团队之间的协作,以适应越来越快的软件发布频率,这就必然要求提高软件开发、测试、投产全过程中各环节的自动化水平。我们认为自动化测试是手工测试的有益补充,在实际工作中也常常需要把自动化测试和手工测试结合起来才能达到最佳的收益,从而更快更好地满足金融行业对IT系统高可靠性的需要。

参考文献

[1]陈洪震,浅析我国金融电子化的发展现状及其风险防范[J].科技经济导刊,2016.

[2]阚青.对软件测试过程中的质量管理及风险应对分析[J].电子技术与软件工程,2019.

[3]齐海燕,黄少敏,自动化回归测试在软件产品项目中的应用[J].工业控制计算机,2018.

猜你喜欢
测试项目测试数据控件
我国金融科技“监管沙盒”测试项目准入标准制度研究
测试数据管理系统设计与实现
基于自适应粒子群优化算法的测试数据扩增方法
空间co-location挖掘模式在学生体能测试数据中的应用
ASP.NET服务器端验证控件的使用
《国家学生体质健康标准》测试项目修订研究
安捷伦宣布HDMI2.0一致性测试认证方案覆盖最全面的测试项目
影响《标准》测试数据真实性的因素及破解策略
Spreadsheet控件在Delphi数据库系统中的编程与应用