社区分享|中华保险基于MeterSphere开展接口自动化测试

中华联合保险集团股份有限公司(以下简称为“中华保险”)始创于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平台能够智能关联对应的测试用例及自动化脚本,从而实现精准的自动化测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet中的请求与响应

Request和Response 1.Request和Response的概述2.Request对象2.1 Request继承体系2.2 Request获取请求数据2.3 解决post请求乱码问题 *2.4 Request请求转发(-,*)2.5 request的生命周期 3.HTTP响应详解(理解)1.使用抓包查看响应报文协议内容2.HTTP响应报文协议介绍 4.…

汇编英文全称

mov move mvn Mov Negative ldr LoaD Register str Store Register lsl Logic Shift Left lsr Logic Shift Right asr Arithmetic Shift Right 算数右移 ror Rotate right 循环右移…

人工智能讲师AI讲师大模型讲师叶梓介绍及大语言模型技术原理与实践提纲

叶梓,上海交通大学计算机专业博士毕业,高级工程师。主研方向:数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家,市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

angular-引用本地json文件

angular-引用json文件,本地模拟数据时使用 在assets目录下存放json文件 大佬们的说法是:angular配置限定了资源文件的所在地(就是assets的路径),放在其他文件夹中,angular在编译过程中会忽略,会…

云计算的两地三中心和灾备介绍

两地三中心是指在不同的地理位置建立两个数据中心和一个灾备中心,其中一个数据中心为主数据中心,另一个数据中心为备用数据中心,灾备中心则用于备份数据和在主数据中心或备用数据中心发生故障或灾难时提供应急支持。 异地灾备则是指在不同的地…

Docker之查看并获取最新Ubuntu镜像(十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

基于springboot+vue的教学资源库系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Nginx配置组成与性能调优

目录 一、Nginx配置介绍 1. 模块组成 2. 图示 3. 相关框架 二. 配置调优 1. 全局配置 1.1 关闭版本和修改版本 1.2 修改启动的进程数 1.3 cpu与work进程绑定 1.4 pid路径 1.5 nginx进程的优先级(work进程的优先级) 1.6 调试work进程打开的文…

利用System.Web.HttpRuntime.Cache制作缓存工具类

用到的依赖介绍 当谈到 ASP.NET 中的缓存管理时,常涉及到以下三个类:CacheDependency、HttpRuntime.Cache 和 System.Web.Caching。 CacheDependency(缓存依赖项): CacheDependency 类用于指定一个或多个文件或目录作…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

Predis Multi-Zone

A Data Flow Framework with High Throughput and Low Latency for Permissioned Blockchains 联盟链的吞吐瓶颈由共识层和网络层的数据分发过程共同决定。 Predis 协议利用了共识节点的空闲带宽,提前分发区块中的内容即bundle,减少了共识区块中的内容&…

在vue3中使用canvas实现雨滴效果

在vue3中使用canvas实现雨滴效果 这是封装的一个组件DotAndRain&#xff08; &#xff09; <script setup> import { ref, onMounted } from "vue"; import { onUnmounted } from "vue";let animationFrameId null;const el ref(null); let canv…

5 原型模式 Prototype

1.模式定义: 指原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 2.应用场景&#xff1a; 当代码不应该依赖于需要复制的对象的具体类时&#xff0c;请使用Prototype模式。 Spring源码中的应用 org.springframework.beans.factory.support.AbstractB…

QT 如何让多语言翻译变得简单,提高效率?

一.QT多语言如何翻译的? 在QT的多语言翻译过程中,分为两个步骤:第一步生成ts文件,第二步将ts文件翻译为qm文件。如果我们在需要多语言的情况下,qml经常使用qstr或者qwidget中使用tr等等,遍布许多个文件夹,在需要更新新的翻译时会很麻烦。整个工程收索并修改,效率十分低…

vue3 #ref #reactive

一、ref 函数将简单类型的数据包装为响应式数据 import { ref } from vue const count ref(10) 一、reactive函数将复杂类型的数据包装为响应式数据 import { reactive} from vue const obj reactive({ name : zs&#xff0c; age : 18 })

蓝桥杯嵌入式第12届真题(完成) STM32G431

蓝桥杯嵌入式第12届真题(完成) STM32G431 题目 程序 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**************************…

【LeetCode-198】打家劫舍(回溯动归)

目录 解法1&#xff1a;记忆回溯 代码实现 解法2&#xff1a;动态规划 代码实现 题目链接 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相…

Linux常见的指令

目录 01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令&#xff08;重要&#xff09;&#xff1a;06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a;07.man指令&#xff08;重要&#xff09;&#xff1a;08.cp指令&#xff08;重要&#x…

浅谈maven的生命周期

正文: 在Maven中,生命周期定义了项目构建过程的不同阶段以及在每个阶段中执行的插件目标。Maven的生命周期是由一系列阶段组成的,每个阶段都有一个唯一的标识符。 Clean生命周期:用于清理项目的构建目录。它包含以下阶段: pre-clean:执行在清理操作之前的任何操作。clea…

【Vuforia+Unity】AR05-实物3D模型识别功能实现

对于3D物体的识别&#xff0c;可以是虚拟的也可以是实物的&#xff0c;但是对于虚拟的三维模型意义不大&#xff0c;我们完全可以把三维模型放在屏幕上截一张图&#xff0c;以图片识别的方式召唤数字内容&#xff0c;不过在虚拟现实中或许有用。 因此本文探讨的技术路线主要是…