中华联合保险集团股份有限公司(以下简称为“中华保险”)始创于1986年,是全国唯一一家以“中华”冠名的国有控股保险公司。截至2022年12月底,中华保险总资产为1006.06亿元,在全国拥有超过2900个营业网点,员工超过4万人。中华保险坚持“服务国家、服务三农、服务民生,全心全意为人民群众提供保险保障”的初心使命,坚持以客户为中心,以科技、保险、投资为驱动,致力于打造客户满意、员工获益、股东放心、社会认可的高质量、有价值的现代金融保险集团。
一、引入接口自动化的背景
1.需求快速迭代,回归测试成本越来越高
随着新一代IT系统建设的深入推进,中华保险的项目体量越来越大,软件版本高速迭代,基本保持一周一次小迭代和两周一次大迭代的频率,而且每次迭代发布的应用超过180个,单次人工回归测试的成本越来越高;
2.业务复杂度高,流程长且繁琐
保险业务的流程非常复杂,例如承保链路,从开始出单到生成保单的过程中可能涉及几十个系统之间的互相调用,涉及到的接口更是近百个。加之保险产品的种类繁多,而且每种产品都有不同的条款、费用计算方式等,重复性工作较多,人工测试很难实现完全覆盖;
3.系统特性明显,回归有效性难以衡量
随着保险业务中台的建设,中台对外提供的基本都是接口,没有页面。这给测试团队的工作带来了许多困难,比如人工测试不方便、回归测试时容易出现遗漏、重度依赖平台方的测试结果等,导致测试管理难以衡量回归有效性。
二、为什么选择Metersphere开源持续测试平台?
1.自动化体系总体架构
基于中华保险的数字化战略背景和“需求交付短平快”的原则,中华保险的测试团队希望在技术资源有限的前提下,选择一款一站式的开源持续测试平台作为基建平台,打造一套属于自己的自动化测试体系。
两年多来,经过不断实践和打磨,中华保险的测试团队已经确定了其自动化测试体系的整体架构。从最初的雏形想法,到如今的成熟落地,在这一过程中,自动化接口测试已经成为测试团队每位成员的基础能力,并且串联在整个项目的流程之中。中华保险的自动化测试体系框架如图1所示。
▲图1 中华保险的自动化测试体系框架
中华保险测试团队的自动化测试体系框架主要由以下模块构成:即培训分享、持续集成层、监控告警层和度量管理层。
■ 培训分享:展开不定期的培训分享,提升团队的自动化意识。小到自动化平台的操作使用和标准规范的制定,大到每年一次的“自动化月”主题活动。通过这些活动,让测试团队成员从认知上重视自动化,理解自动化的价值与意义,以及其在日常测试中的重要性;
■ 持续集成层:充分利用自动化的价值。借助自动化平台的能力,在平台的基础能力之上挖掘更多价值,并将其强串联在项目流程的各个阶段中,使其发挥更大作用,以获得更高的ROI(Return on Investment,投资回报率);
■ 监控告警层:借助通知和播报能力,实现工作效率和影响力的双重提升。主动通知感知脚本的稳定性,并且定期向外播报自动化测试的稳定性结果,既可以督促测试团队成员自觉加强自己的脚本稳定性,也可以提高测试部门对外的影响力;
■ 度量管理层:科学管理测试团队,提升自动化率。构建代码覆盖率平台,让每个测试团队成员真实的自动化率有了更加直观的反映,也给质量管理层提供了更好的抓手。
2.自动化测试平台的建设进程
在选择自动化测试基础设施时,中华保险的测试团队调研、对比和分析了市面上的多个开源自动化测试平台。从工具的易用性、基础功能的完善度、社区的活跃度和功能拓展的便利程度等维度综合考虑后,中华保险的测试团队最终选择了MeterSphere开源持续测试平台作为其统一的自动化测试基础设施,并于2021年5月开始使用。
MeterSphere开源持续测试平台的系统架构如图2所示。
▲图2 MeterSphere开源持续测试平台的系统架构
MeterSphere平台提供的接口测试功能很好地契合了中华保险自动化测试的需求。对于中华保险的测试团队来说,MeterSphere开源持续测试平台的主要优点包括:
■ 用例编写可视化,降低测试门槛
MeterSphere开源持续测试平台能够实现用例编写的可视化,这一功能有效提升了平台的易用性,便于测试人员快速上手,有利于业务聚焦;
■ 支持多种格式的接口集导入和定时同步
MeterSphere平台兼容多种协议,支持多种协议类型的API管理,包括HTTP、TCP、RPC等协议,极大地方便了中华保险测试团队对各域接口进行统一管理。MeterSphere平台还支持Postman、Swagger、JMeter等多种格式的接口用例集导入和定时同步,还可以通过插件打通IDEA与测试平台进行接口同步;
■ 采用主流技术栈,方便二次开发
MeterSphere平台使用Java语言开发,采用了前后端分离的架构设计,后端使用Spring Boot框架,前端使用Vue.js框架,这些技术栈与中华保险测试团队人员使用的技术栈相匹配,方便开展二次开发。除此以外,MeterSphere平台在接口自动化功能和性能测试功能上与JMeter保持一致,并在一定程度上对其进行了二次封装,这使得测试操作更加简单、方便;
■ 丰富的插件体系,扩展性强
目前,MeterSphere平台对外提供了许多插件,比如支持发布流水线接入的Jenkins插件、支持工程中接口同步的IDEA插件、支持UI测试的Selenium插件等,甚至还支持用户开发各种自定义插件。丰富的插件种类和活跃的开源社区极大便利了中华保险测试团队发挥MeterSphere平台的业务价值。
三、自动化测试的成果与实践
1.接口自动化现阶段成果
由于从准备建设自动化测试平台之初,中华保险的测试团队就选定了Metersphere平台,所以减少了很多不必要的麻烦,例如资产迁移、换工具的学习成本等。截至目前,中华保险内部已接入MeterSphere平台的应用系统为62个,平台用户277人,沉淀的接口用例数和场景数多达24,000条,P0级核心回归链路的自动化率超过70%。
仅2023年,中华保险的测试团队就通过MeterSphere平台拦截了近百个缺陷或环境问题。借助MeterSphere平台在自动化脚本方面的赋能,通过脚本实现复杂链路造数功能达到数十条。基于保险业务的特性,在回归测试之外,中华保险的测试团队在日常业务测试中也会使用MeterSphere平台,例如产品域通过CSV数据驱动的方式,实现了多个功能模块的业务测试自动化。
▲图3 借助MeterSphere平台实现业务测试自动化
2.MeterSphere平台中的接口自动化实践
中华保险的核心业务链路,大到承保链路、批改链路、履约链路,小到单个保费的计算功能,涉及的系统、场景、接口都非常多,链路也都非常长。测试团队在两年多的实践过程中遇到过各种各样的问题,但总能通过Metersphere平台找到对应的解决办法。以下抽取其中一部分实际场景来举例说明:
■ 公共场景提取,提高脚本的易维护性
随着版本的快速迭代,场景越来越多,当脚本沉淀到一定量级时,对脚本的易维护性的要求就变得非常高。因此在编写接口自动化脚本时,脚本的易维护性尤为重要。在中华保险测试团队的规范中,会要求提取出通用场景作为原子场景。如图4所示,在保单服务域中,定义完大量的原子场景后,在MeterSphere平台中只需通过组装和编排,即可得到最终的自动化链路;
▲图4 MeterSphere平台中的场景引用
■ 常规断言和传参较难,使用脚本更加灵活
中台查询保单详情接口时,返回的报文可能多达上万行。如果使用常规的断言和传参方式,会导致工作量变得非常大,脚本的可维护性也会变差。在面对这种情况时,中华保险的测试团队借助Metersphere平台支持编写多种语言脚本的特性,采用了更为灵活的方式,使用代码脚本快速完成工作(如图5所示);
▲图5 MeterSphere平台支持自定义脚本
■ 利用插件,便于持续集成
为了将自动化测试串联在CI/CD(持续集成/持续部署)流水线中,需要在部署完成后,自动触发自动化的脚本。但中华保险的部署工具LinkE不支持打通。好在Metersphere平台提供了Jenkins插件,中华保险的测试团队才能轻松打通测试链路,具体链路如图6所示。
▲图6 在CI/CD中串联自动化测试
3.Metersphere开源持续测试平台的能力拓展
■ 数据工厂
因为回归测试和日常造数据需求的脚本基本重合,所以在完成了自动化脚本后,中华保险的测试团队希望脚本不但能够满足回归测试的需求,也能满足日常造数据的需求,从而实现脚本收益的最大化。为此,测试团队抽取了部分通用的自动化脚本,集成到质量平台上,通过间接执行并且统计脚本收益的方式,延伸完成了数据工厂的后端框架搭建,具体如图7所示;
▲图7 中华保险的数据工厂后端框架
■ 自动化结果数据延伸
截至目前,中华保险的测试团队每天定时、部署后自动触发的测试计划达到上百次,测试场景超过3000次。为了充分利用这些数据,提高测试团队成员主动维护自动化脚本的意识和对外的影响力,中华保险的测试团队制作了自动化测试周排行榜,定期进行播报。
▲图8 在质量平台中发布自动化结果周报
▲图9 定期公布自动化通过率
四、自动化测试的规划与展望
1.降低系统间的耦合性
完成一条完整的承保主链路,涉及的系统非常多,并且系统之间互相耦合。目前,系统间主要通过RPC接口访问,现有的HTTP接口的Mock能力已经不能满足所需,中华保险的测试团队计划在未来加强RPC的Mock能力,从而提高整体的自动化脚本通过率,降低噪音;
2.测试场景自动生成
中华保险的测试团队希望已有的流量回放平台和MeterSphere平台能够打通,使流量回放录制的接口报文在MeterSphere平台自动回放,从而自动生成真实测试场景及参数,使场景覆盖更加全面、真实,得到更高的ROI;
3.测试用例智能关联
MeterSphere平台已经具备了自动化脚本管理和测试用例管理的能力,并且能够实现脚本和测试用例的互相关联。但是,随着应用的频繁迭代,自动化脚本的数量会越来越多,如果每次都跑全量的自动化脚本,测试时会十分困难且效率低下。中华保险的测试团队期待未来通过精准连接测试平台,在开发人员改动代码后,MeterSphere平台能够智能关联对应的测试用例及自动化脚本,从而实现精准的自动化测试。