银行业务系统自动化测试实践
作者:王燕梅
来源:《中国金融电脑》 2019年第2期
随着金融科技的不断进步,银行业不断推出各种适应新需求的新兴业务并朝着网络化和自助化方向发展。
要在激烈的市场竞争中占有一席之地,银行不仅需要积极地进行业务转型,更需要快速研发产品,及时响应市场需求。本文从银行业务系统特点入手,阐述科学、统一的自动化测试服务系统基本架构,并通过应用实例来说明自动化测试在银行业务系统中的价值。
一、银行业务系统的特点
金融行业的软件系统在整个软件行业中有着特殊地位和显著特点。银行业务系统作为金融行业的典型应用,更具有其代表性及特殊性。
1. 业务复杂
涉及业务种类广,为保障各项业务顺利开展而建设的系统多达几十甚至上百个。系统之间业务关联紧密,一个业务的优化可能影响着其他业务的开展。
2. 系统复杂
业务的复杂性决定了系统的复杂性,既有B/S 架构的网上银行、直销平台,也有C/S 架构的手机银行、ATM 和VTM 等系统。
3. 数据移植复杂
一般新系统的研发上线,除了支持新增数据之外,还要求兼容存量数据,这就涉及旧系统的数据迁移, 其中包括数据迁移、维护新旧系统数据字典和解决缺失字段等问题。
4. 系统批处理频繁
为完成日间业务清算、稽核和业务系统日期切换等各项工作,核心账务系统每天晚间需要进行批处理。
基于以上银行系统软件的特点,为进一步保障产品质量,测试工作显得尤为重要。例如:系统之间关联紧密,如何进行相关系统接口的测试;业务优化更新,如何快速进行回归覆盖测试;多个项目共用一套测试环境,如何设计节点批处理,从而降低系统批处理对各项目测试进度的影响。自动化测试在面对快速更新、大量纷繁复杂的回归测试中具有明显的优势,银行业务系统引入并实施自动化测试将成为趋势。
二、银行业务系统自动化测试规划与建设
当前,福建省农村信用社联合社(以下简称“福建农信”)现有业务系统支撑着全省农信所有业务。面对激烈的行业竞争以及满足市场不断变化的需求,业务系统的维护方式特点是不断变更开发升级和及时测试维护。为响应优化升级快速回归测试、提高覆盖率和测试效率,降低人力成本,福建农信搭建自动化测试系统,建设自动化案例基准库,在银行业务系统测试过程中引入自动化测试,作为对手工测试的补充,缩短系统更新周期,降低系统上线的风险,进
一步提高系统质量。福建农信自动化测试系统同时采用B/S、C/S 混合模式架构,统一了普通PC 桌面应用和移动设备应用自动化测试。自动化测试系统架构如图1 所示。
PC 桌面应用范围既包括GUI 界面测试应用,也包括接口类测试应用,采用的是基于QTP 自动化测试框架,主要基于以下三点:
一是支持多系统、多虚拟机。在福建农信当前工作环境PC 机数量有限的情况下,可通过克隆复制多台虚拟机,同时在多台虚拟机同步运行,达到自动化测试调度,满足测试机负载均衡。
二是测试脚本具有良好的扩展性。QTP 采用VBS的脚本编程语言,将每个功能写成类,方便进行类函数的调用,而且VBS 文件移植性好,在QTP 的任何版本都可以运行。
三是具有强大的对象库。录制脚本的过程中,会把界面操作所涉及的对象都自动地添加到对象库中,当测试界面不断改变测试对象时,可通过Object Spy 工具查看、了解控件行为,便于判断测试结果。
移动应用的自动化测试基于Appium 实现,Appium具备以下优势:
一是无脚本语言, 支持Python、Java 和JavaScript 等脚本语言。
二是跨平台,支持安卓、iOS 等移动操作系统。
三是快速识别对象,修改工作量少。根据控件要素
的标题、描述、ID 和XPath 等元素识别所需控件对象。
可以识别设备屏幕上所有控件,在此基础上完成其他后续操作,比如点击、输入等,无需为实现自动化测试重新编译或修改App。
福建农信目前已完成自动化测试系统桌面端两期的项目建设,一期包括核心存款、凭证、现金和总账内部账等模块,涉及206 笔交易,8000 多个自动化测试案例基准库;二期包括覆盖外围服务单元17 笔交易,共1582 个案例的接口自动化案例基准库,涉及11 个信贷产品共28,772 个案例的信贷自动化案例基准库。移动端测试包括手机银行、福万通掌上生活等交易脚本案例基准库。福建农信自动化测试基准库建设内容如图2 所示。本文重点以桌面端自动化测试建设及实践为例进行阐述。
三、银行业务系统自动化测试应用实践
1. 自动化快速迭代测试
近几年福建农信业务发展迅猛,对核心账务系统的运行稳定性、扩展灵活性和性能高效性的要求也相应提高。为满足业务量的持续增长,福建农信启动对核心账务系统架构的整合升级。根据工作的复杂度及影响范围等,项目分不同阶段展开。
项目建设目标,一是调整API 粒度,能够分别对活期存入、支取、凭证、现金、内部账及清算子交易进行整合,规范子交易的使用; 二是安全控制,能够对核心的主控交易进行安全保护控制,支持新旧主控并存。
项目开发特点,一是开发人员在前期对模块或程序修改确认较为频繁; 二是整合升级是从核心底层主控代码逻辑进行优化修改,并不改变原有交易操作界面。
(1)测试策略
本次项目具有以下一些特点:项目周期长、版本持续更新; 总体模块变化较小,测试对象较为明确;需要反复测试,质量要求高;对常规交易及高频交易的测试,实现自动化测试执行及脚本维护时间小于手工测试所有轮次所需的时间。经过前期的回归实践,自动化基准库已逐步趋于稳定,具备根据小范围修改进行快速更新回归测试功能。因此,在核心账务系统架构整
合中,首次在开发快速交付中引入自动化迭代测试,积极进行自动化快速迭代测试探索与实践。
本次测试实践主要分为两个不同策略阶段进行,一是前期开发阶段的快速冒烟与迭代自动化测试,二是后期功能测试阶段全量回归自动化测试,如图3 所示。
部署升级版本进行测试时,首先进行基本功能冒烟测试验证,以确保当前测试版本没有引入新的严重问题,这个阶段主要根据开发修改模块,有针对性地在基准库中挑选合适测试案例进行测试。
对前一个版本发现的缺陷进行快速迭代自动化测试,采用原来的测试用例可以防止手工测试的随意性,达到完全现场恢复的目的,同时也能提高测试效率。
在版本稳定后,采用全量的自动化测试案例库进行回归测试,验证全量交易稳定。
(2)实践成效
本次实践完成七轮快速迭代自动化测试,三轮全量回归自动化测试,执行案例数和发现缺陷情况见表1。
在核心架构升级项目中进行自动化迭代测试,不仅有效地解决快速迭代中短时间内需要多次测试的问题,而且大大降低手工测试人员的重复测试压力,使手工测试人员有更多的时间关注核心参数配置的测试。同时通过自动化快速迭代测试的实践,为福建农信业务快速更新所带来的系统更新提供了创新的质量保证方式。
2. 验证环境回归测试
目前福建农信项目或任务的投产上线较为频繁,其中以综合业务系统核心或柜面的优化投产较多,优化的对象主要是项目组或基层行社所提交的故障单。这些故障单呈现随机分布的特点,测试范围广,并且每次优化时间有限,手工测试人员在重点测试完所优化内容外,难以进行大范围的覆盖测试。作为投产上线最后一环,同时也是最接近生产环境的验证环境,环境控制严格,代码版本稳定,在此环境上进行自动化轮次回归测试,意义不言而喻。该测试不仅能够补充手工覆盖范围,而且可以通过“无人值守”,缩短投产测试周期,提高测试效率,为每周的投产上线提供进一步的质量保障。
(1)测试策略
一般每周投产代码版本在周一或周二完成部署,为确保从部署到投产上线的短周期内,可以完成自动化回归测试执行、测试缺陷分析和报告总结提交等一系列过程。自动化人员在获取版本已部署的通知后,进行测试周期为24 小时,每轮近万个案例的自动化回归测试。测试中发现的问题提交给开发人员及业务人员进行确认,并对业务规则变更的案例及时进行更新,在下一批次中进行验证,批次回归测试流程如图4所示。
(2)实践成效
从最初的在准生产环境进行自动化回归测试,到后期推广到验证环境回归测试,目前已在验证环境进行46 轮回归测试,执行案例数327,192 个,提出缺陷及建议9 个。通过这一实践,收到的成效如下。
① 加快测试速度,缓解了测试人员工作压力。每批次一人,投入10 台执行机并发执行,在环境正常的前提下,1 个工作日就可以完成所有案例的执行,执行效率达到7021 案例/ 人天(个别轮次中批处理条件未满足,相关案例未执行),比人工测试效率快175 倍(按人工平均每天执行40 个案例计算),大大节省了测试人员手工测试工作量。
② 提高测试效率,缩短投产周期。在应用自动化测试之后,测试效率大大提高,综合业务系统优化的投产周期也较原先缩短。
③ 为综合业务系统优化提供了质量保障。系统优化由于故障单比较分散,无法对全交易进行大覆盖度的测试,自动化测试具有执行速度快、案例覆盖面广的优势,对优化的回归测试具有很好的补充作用,争取实现质量前移。
3. 测试数据生成服务福建农信2017 年累计进行项目与任务建设235 个(同一个项目不同增量算一个),手工执行测试案例数231 400 条,这些案例的执行也意味着需要同等规模的测试数据需求。我们尝试利用自动化测试系统为测试人员提供测试数据生成服务,以此践行“留给测试更多时间”理念。
(1)测试策略
根据测试所需常用数据类型,结合已积累的自动化测试交易模板脚本,自动化提供消耗型与非消耗型测试数据。非消耗型数据包括机构、柜员和客户证件等,消耗型数据包括凭证、各种类型账号等。
以操作交易为依据,通过利用Pairwise 组合原理,多字段要素的组合,以及综合不同交易功能, 把手工操作交易流程通过自动化脚本实现,涉及的所有数据脚本统一放到服务器。用户需要测试数据时,只需登录福E测系统(面向用户的数据服务生成系统),根据提供的数据表模板,填写所需类型数据值,上传该模板到福E测系统,点击执行脚本;系统网页端发送请求到服务器;服务器通过数据库查询当前可用的虚拟机,并把执行脚本下发到对应的虚拟机;虚拟机接收命令后,开始准备数据,数据准备完成后,上传数据表,并删除执行的脚本;服务器把该数据表返回给系统;用户即可以从网页端下载已准备完成的数据。数据准备交互流程如图5 所示。
(2)实践成效
福建农信自动化测试系统仅2017 年已为项目组提供有效测试数据1 602 448 个,包括各类账号、卡号、柜员和客户信息等数据。若手工准备这些数据需要90人天,而投入自动化,只需10 人天。通过提供数据准备服务,不仅可以让测试人员更加关注自身的测试场景设计,节省测试时间,而且为环境准备提供造数功能,节省环境准备时间。
综上所述,通过在银行业务中进行自动化测试的应用实践,为福建农信业务快速创新所带来的系统更新提供了创新的质量保证方式。为提高福建农信整体测试效率,节约回归测试人力成本,下一步福建农信拟扩大自动化测试范围,进一步提升自动化测试服务能力,结合当前福建农信业务需求,在卡业务模块、支付结算模块和新一代网上银行等稳定成熟、应用程度高的模块进行分析和讨论,将它们纳入到后续建设中,进一步丰富自动化测试基准库。