编者注:在2023年2月25日举办的“2023 MeterSphere开源持续测试平台城市遇见· 北京站”活动中,北京合思信息技术有限公司(即易快报)的项目测试高级工程师豆云谦分享了题为《易快报接口自动化项目落地实践分享》的主题演讲。以下内容根据本次演讲整理而成。
北京合思信息技术有限公司(即 “易快报”)创立于2014年11月,是中国SaaS行业报销费控的领军企业,主营业务是为企业提供差旅订购、电子报销、预算费控、发票管理等一站式服务。作为一款敏捷的企业报销费控与聚合消费平台,易快报可以对接多方发票平台、网银、第三方消费平台、财务软件,以及企业办公平台与业务系统等,协助企业实现全面集成、数据互联的一体化管理。
▲图1 易快报项目测试高级工程师 豆云谦
一、接口自动化项目的背景与目的
为落实公司各业务线接口自动化“从零到一”的目标,提升测试的效率,测试部门需要通过引入合适的接口自动化测试平台来保证核心业务主流程的质量。
那么是出于哪些原因,让易快报的测试团队产生了构建接口自动化测试平台的想法呢?
首先,就是希望尽快解决产品质量问题频发(如接口质量)的问题。长期以来,易快报的产品质量重度依赖UI层测试,公司产品在迭代过程中有UI层的定位,且改动、维护的成本均较大,测试团队需要改进这一现状;
其次,在有80%的团队成员不具备接口测试能力的情况下,团队的主要落地目标是实现接口自动化测试。也就是说要,在考虑到公司所有接口总量高达5000多个的情况下,达成公司全业务线90%以上的接口自动化覆盖率;
最后,易快报的业务是在测试环境、集成环境、灰度环境等多个环境上运行的。在此基础上,要使用可以兼容多种环境的测试脚本来保持整个接口自动化的持续测试,实现自动化项目的可持续性,降低维护多套自动化测试的成本。
二、为什么选择MeterSphere开源持续测试平台?
在引入MeterSphere开源持续测试平台之前,易快报的测试团队也尝试过使用其他的测试工具,例如Postman、Jira等。在使用过程中发现,Postman更适合用于单人场景,比如在一个测试发现一个问题后,反馈给第三方去调试;而使用Jira等自动化测试框架需要编写代码,对测试人员的编码水平要求较高。在公司接口数较多的情况下,需要招募的测试开发人员过多。
MeterSphere开源持续测试平台可以很好地解决以上这些问题。总结来说,MeterSphere平台的的优势包括:
1. 平台易用性高,上手快,并且有较好的文档支持;
2. 有效降低了测试人员的使用门槛,可以实现全部测试人员在低学习成本的情况下参与企业的自动化测试建设过程,实现企业级的降本增效;
3. 覆盖多种接口协议,可以自由组合接口自动化的测试场景;
4. 测试数据一站式,测试报告展示清晰明了,便于总结分析;
5. 支持定时任务、持续集成等,可以自动调用、触发自动化的测试。
三、测试工作流水线设计思路
为了实现接口自动化测试的项目目标,易快报的测试团队梳理了整个测试工作流水线的思路,并开始着手进行员工培训。其工作流水线涉及能力筑基、接口导入、用例转化和结果输出四大步骤。
1. 能力筑基:各业务线测试成员首先要熟悉MeterSphere平台的功能和使用方法,加强对接口测试的理解,并且明确要使用MeterSphere来解决哪些业务问题。
为了达成这一目标,需要做到以下两步:
① 制作培训大纲并实行
■ 团队成员学习单接口的录入与用例调试,为用例场景组建提供基础;
■ 团队成员学习用例场景编排、断言、参数提取与传递等,以应对基本的测试场景,代替手工测试作业;
■ 学习控制器与BeanShell等脚本断言,以应对一些较有难度的测试场景。
② 回馈实践中遇到的问题,真正形成闭环
学员在培训过程中针对业务线中熟悉的场景进行实战演练,在此过程中发现并反馈遇到的实际问题,形成闭环。然后团队成员集中讨论并逐步解决所遇到的问题,实现共同进步。培训历时约2~3周,此次培训结束后,团队共30余人基本都可以熟练掌握MeterSphere平台的使用方法。
2. 接口导入:通过MeterSphere的接口批量导入功能来汇总文档中的接口。
在引入MeterSphere平台之前,易快报的接口录入流程不够规范,各业务线都有JSON、Swagger、Postman等不同格式的接口文档。引入MeterSphere后,就可以将这些不同格式的旧文档统一集成到MeterSphere平台,自动规范管理文档中的接口。
目前,易快报的测试团队结合MeterSphere平台的应用,对接口导入制定了新的规范流程,具体如下:
① 制定标准:质量部为研发人员制定包括接口示例、请求参数、返回样本等多个方面在内的接口文档标准;
② 输出文档:产品研发人员讨论、梳理各自业务线的核心接口,并向测试人员提供标准的接口文档;
③ 检查落实:测试人员检查这些接口文档的合规性,并将自己业务域内的合规文档导入到MeterSphere平台,落实接口对应责任人;
④ 实现巡检:根据已录入到MeterSphere平台的核心接口,测试人员组建业务线内的核心接口用例场景,实现7*24小时的线上巡检机制,尽可能快地发现问题、解决问题;
⑤ 同步发版:如果有新增接口和修改接口的情况,研发人员需要及时向测试人员同步文档,由测试人员在每次新版本发布之后,将发生变动的接口录入到MeterSphere平台,并参数化用例,打造公司接口自动化的标准质量测试流程。
制定标准与输出文档阶段共耗时约一个月的时间。在此期间,团队重新梳理了5000个以上的接口,检查落实阶段耗时约一周。
3. 用例转化:在MeterSphere平台调试单接口与场景用例,以可视化的方式组装接口自动化用例。
① 接口录入:选择对应项目,根据开发人员提供的接口文档,录入模块内的接口或与模块关联的接口;
② 用例转化:编辑调试单接口用例与场景用例,根据核心功能用例,组建核心场景自动化,并逐步创建多场景测试计划;
③ 自动构建:设置定时任务或Jenkins任务,建立接口自动化的每日构建,并通过设置测试环境自动触发接口自动化,实现测试左移。
4. 结果输出:设定测试计划,24小时持续监控,及时查看或导出测试报告,实现核心问题早发现、早预防,保证产品线的质量和稳定性。
四、自动化测试的应用场合
易快报通过MeterSphere平台进行的自动化测试主要的应用场景包括:
1. 通过MeterSphere实现核心主流程的接口自动化,并形成7*24小时线上巡检机制,提高了线上产品的整体质量及稳定性,使得一些隐蔽的问题更容易被发现并得到及时解决,并且能够通过接口自动化不断地巡检来降低测试成本;
2. 可以将高频工单转化为接口自动化状态,便于补救以往漏测事故中的缺陷,并应用于发版前的回归测试,以提高产品质量;
3. 研发人员不需要再去自行编写单元测试,而是直接以TestNG(Test Next Generation)监听方式,通过接口自动化的运行状况推算代码的覆盖率。实际上,易快报的测试团队在MeterSphere中实现了产品研发中多数类与方法的覆盖,功能代码覆盖率接近100%;
4. 开发发布代码后可以立即直接在MeterSphere中触发接口自动化执行,在100条左右的用例量级下,MeterSphere可以快速完成核心用例的冒烟测试。在此自动化测试通过后即可介入手动测试,提升提测效率和产品质量。
五、接口自动化落地过程中遇到的实际问题与解决方案
在易快报项目通过MeterSphere平台进行接口自动化测试落地的过程中,也遇到了一些问题和阻碍。通过不断地学习与思考,结合MeterSphere平台的实际应用,易快报测试团队逐个攻破了这些难题,收获了宝贵的测试经验。
1. 多接口并发执行用例
单接口、单场景的测试执行数量较多的情况下,耗时往往也会过长,在测试过程中通常需要多接口并发执行测试用例。但在实际测试过程中,往往会出现一个域中有一个账号登录时,同时登录其他账号会使得该账号强制下线的情况。
为了解决这种问题,测试人员需要先把登录的Token信息存储到中间件,在使用场景中并发执行用例时再去中间件取回Token信息继续登录。MeterSphere平台可以支持数据库以及Redis中间件的连接,可以方便地实现用例的并发执行。
2. 智能等待组件开发
在UI自动化测试中,很多单据状态护理相关的接口会有智能等待需求。如果不能快速获取单据状态信息,会影响到后续测试用例的执行。
易快报的测试团队借用前端研发的“组件化封装”思想,通过开发并在MeterSphere平台引入智能等待组件的方法,将等待状态信息流转的步骤进行组件化封装,在测试中直接智能获取组件状态,大幅提高了测试效率。
3. 组件化开发与参数复用
在MeterSphere平台中,如果测试自动化建设采用线性开发,每创建一次场景就直接录入一次接口,在接口发生变动之后,测试人员就需要浪费大量时间去手动修改所有应用了该接口的测试用例。
为了防止这种情况发生,易快报测试团队参照Page Object的思想,进行组件开发,并将有关联的接口模块化。在场景开发量比较大的情况下,可以将多个接口组件化,使用BeanShell工具为组件传参,形成动态的场景模块,直接在测试用例中复用,能够有效降低后期维护成本。
4. 多个业务环境适配
由于易快报在测试中所使用到的往往不止一个环境,如果写出的测试脚本只能在某个特定环境中运行,会导致测试人员需要写出多个脚本以应对不同测试环境的需要,造成人力物力的浪费。
为了解决这个问题,团队需要在理解业务内容的基础上,通过脚本的参数化设计,使得同一脚本可以适配多个业务环境。由于不同公司的脚本参数种类与数量不同,参数化的难度与成本也可能不同。
六、易快报使用MeterSphere平台带来的项目收益
目前,易快报基于MeterSphere平台的接口自动化建设已经初见成效。项目中比较核心的支付模块已经完全实现了接口自动化的目标,7*24小时的线上实时监控机制有效提高了产品的稳定性,保证了线上产品的质量。在引入MeterSphere平台后,测试团队的线上工单数量相较于引入MeterSphere平台前一年降低了60%,交付效率得以推进。
降本增效方面,如果单纯通过人工执行测试,团队完成一个项目的测试工作大约需要2到3天。而如果通过MeterSphere平台执行接口自动化测试,实施定时任务、回归任务,每次发版都可以为测试团队节省30多个人天的工作量,大幅提高工作效率,降低了人力成本。
值得强调的是,MeterSphere平台在扩大接口自动化测试群体方面实现了划时代的进步。它将接口自动化操作从编码层面提升至界面化操作的级别,实现了“人人都可以参与接口自动化工作”的目标。
易快报测试团队成员共30余人。在引入MeterSphere平台之前,团队内拥有接口自动化测试能力的成员只有2到3人,其余同事均因编码能力不足而无法进行接口自动化测试。引入MeterSphere平台后,自动化测试不再与人员的编码水平挂钩,而是与界面化的简单操作相关。技术门槛大幅降低,在经过一定时间的学习后,团队中实现了人人都可以参与自动化测试工作。