农行 DevOps 进行时之优秀实践分享:DevOps自动化测试问题与解决方案
2020年11月,农行手机银行系统存贷款模块顺利通过 DevOps 评估,标志着手机银行的持续集成、持续部署,持续测试等一些列持续能力得到了官方认证。DevOps 贯标实施过程中,测试团队基于手机银行自身特点对存贷款模块业务场景和交易进行层层梳理,从案例的设计、测试数据的准备、脚本的调试到案例的自动化执行,测试方面得到了很大的优化和提升。
本文将从接口自动化测试和界面自动化测试两方面分享手机银行 DevOps 建设中的自动化测试遇到的问题和解决方法,期望能够给 APP 自动化测试领域提供有益的借鉴。

一、接口自动化测试


手机银行存贷模块共涉及一百多个接口,覆盖存款贷款的所有产品。为了提高自动化接口覆盖率、执行通过率、执行效率,测试团队制定了针对性的解决方案,确保每个参数“体检达标”。

1、自研覆盖率统计工具监控接口覆盖

接口自动化测试案例保存在接口自动化测试平台,接口信息存放在 swagger,接口和接口自动化测试案例单独管理,如何准确地衡量接口自动化案例和接口之间的覆盖关系是一个问题。
为了解决这个问题,测试团队维护了一张接口案例和接口对应的表格,通过自动化的方式实现 swagger 接口和表格接口的比对,最后以网页的形式将比对结果显示出来,有利于及时发现不一致的地方,无需手工频繁核对,支持项目组成员实时查看接口自动化覆盖情况并及时对新接口进行自动化案例覆盖。
农行 DevOps 进行时之优秀实践分享:DevOps自动化测试问题与解决方案

2、Mock 登录提升接口通过率

不同于其他系统的接口交易,手机银行存贷模块绝大部分接口交易发送时都必须要将登录生成的session信息作为报文头同步发送。过去两年时间,掌银一直处于融易通框架向mPaaS框架迁移的改造进程之中。在评级之前,存贷款模块的迁移进度领先于登录交易,登录交易仍处于融易通框架,而存贷模块交易已经迁移到 mPaaS 新框架,因此登录交易生成的 session 信息不能用于存贷模块的交易,导致接口自动化案例通过率非常低,需要采集登录 sesion 信息的接口无法通过。针对此问题,测试团队联合开发同事通过mock方式模拟新框架登录接口,支持生成新框架的session信息并通过ATP的接口关联功能实现了session信息传递,实现了接口向关联系统的正常发送和接收,有效提高接口自动化案例通过率。

3、优化自动化脚本提升执行效率

针对一百多个存贷模块接口,测试团队共设计正反向测试案例两千余条,一次性批量执行耗费时间平均在25-30分钟。为了有效减少执行时间,提升执行效率,测试人员从接口设计逻辑、测试数据、关联系统稳定性等方面对执行超时的场景进行分析,并做了大量的优化。以接口设计逻辑为例,银利多模块的查询在售产品接口会遍历客户名下所有借记卡并返回每张借记卡可以购买的产品,这样经常会导致返回时间超过60秒。为了解决上述问题,测试人员优化了测试数据抽取的逻辑,保证该接口使用单一卡数据,提升了执行效率。经过持续的调试和优化,手机银行存贷模块两千余接口自动化的执行时间大大缩减,效率几乎提升一倍。

二、界面自动化测试


手机银行客户端是整个手机银行应用的入口,是人机交互的载体,直接面向客户。页面要素展示和页面间的跳转体现的是产品功能的业务逻辑和数据展示,对UI组件和页面跳转进行测试,实现端到端的覆盖是DevOps评级的必答题,也是手机银行自动化测试建设进程中的重点。

1、打通平台壁垒,界面自动化脚本集成到流水线中

手机银行的界面自动化脚本是通过采购的移动端自动化平台(Testin)进行脚本的开发和执行,但移动端自动化平台在评级之初尚未集成到测试管理平台(TFS)流水线中,导致无法通过流水线跨系统自动调起界面自动化的脚本。
为了解决这个门槛问题,测试人员和工具建设人员共同努力,克服了多平台、多框架的问题,打通了系统间的孤立状态,实现了TFS调用自研平台、自研平台调用移动端自动化平台的自动化案例调起和执行,将手机银行的界面自动化测试纳入到了流水线中,极大提升操作效率。

2、优化测试脚本,提升界面自动化执行通过率

手机银行界面自动化脚本设计完成之初,全量界面自动化案例执行时,客户端经常出现应用闪退、通信超时、元素控件无法定位等问题,导致案例执行通过率较低。通过对出现的异常情况逐个击破、不断调试迭代优化,通过率稳定实现超过95%。
以元素控件无法定位的问题为例,手机银行APP偶发获取session信息异常,导致目标元素无法定位,针对这种情况,测试人员在自动化脚本开发时增加了异常情况判断,在出现上述错误的时候增加元素定位次数,为案例失败提供“保险”,有效提升案例执行通过概率。
农行 DevOps 进行时之优秀实践分享:DevOps自动化测试问题与解决方案

3、依托平台交互,寻求测试脚本版本管理

手机银行建设节奏极快,频繁对UI进行改造和优化,前端页面版本发生变动后,界面自动化的测试脚本需要进行相应的更新,但是外购的移动端自动化平台(Testin)没有脚本版本管理机制,无法记录脚本变动日志,严重影响测试进程的推进和事后分析。在组织级人员的大力支持下,这一问题最终以“移动端自动化平台-自研平台-TFS”三系统联动的方式得以解决,即在移动端自动化平台修改自动化脚本,然后将脚本同步到自研平台并形成自研平台测试案例,之后TFS与自研平台的案例同步,实现对手机银行界面自动化脚本变动的实时跟踪和记录,有效的版本管理减少了测试案例核对的成本,为推进界面自动化从测试案例设计、到脚本录制再到执行监控的全流程推奠定了基础。
雄关漫道真如铁,而今迈步从头越。手机银行试点 DevOps 评估工作已告一段落,而手机银行 DevOps 推广的新篇章才刚刚开始。手机银行测试团队这一年来实践的结晶将推广落地至其他系统模块及后续的研发过程中,不断优化改进,积极为农业银行数字化转型贡献力量!

作者简介:

  • 王栋,入职以来一直从事互联网相关的测试工作,目前主要负责掌银账户和转账模块的测试工作,农行掌银 DevOps 评估测试部分主答辩人。

  • 杨阳,就职于中国农业银行研发中心,从事掌上银行测试工作。喜欢运动、写作,在数字化转型的浪潮中,愿用自己的汗水为我行贡献一份力量。
  • 陈鑫,中国农业银行研发中心 DevOps 总体组成员,参与掌银存款贷款模块 DevOps 贯标实施。

2020年11月27日,由云计算开源联盟指导,由高效运维社区和开放运维联盟联合主办的 2020 GOPS 全球运维大会 · 上海站上,隆重发布了 DevOps 标准持续交付部分第九批评估结果,中国农业银行手机存款贷款模块顺利通过由中国信通院开展的《研发运营一体化(DevOps)能力成熟度持续交付3级评估。DevOps 标准共分 5 级,持续交付部分如果能达到 3 级已经是国内领先水准,这代表着中国农业银行在参评项目的持续交付能力达到国内领先水平。这是中国农业银行在 6 月 19 日同时 5 个项目通过持续交付标准评估之后通过的第 6 个项目。
农行 DevOps 进行时之优秀实践分享:DevOps自动化测试问题与解决方案
中国农业银行通过 DevOps 标准持续交付部分的 3 级评估的项目,分别是:

  • 信贷中台项目
  • 个人网银项目
  • 分布式应用互联平台(AIR)项目
  • 增值税进项税管理项目
  • 金融小店项目
  • 手机银行存款贷款业务