社区分享|中华保险基于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.rhkb.cn/news/267349.html

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

相关文章

破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”

问题描述:在使用 SQL Server 2014的时候,想用 SQL Server 身份方式登录 SQL Servcer Manager,结果报错: 此错误消息:表示SQL Server未侦听共享内存或命名管道协议。 问题原因:此问题的原因有多种可能 管道…

SpringBoot整合JdbcTemplate

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合JdbcTemplate 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划

文章目录 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 openGauss学习笔记-232 openGauss性能调优-系统调优-资源负载管理-资源管理准备-资源规划 完成资源负载管理功能配置前,需要先根据业务模型完成租户资源的规划。业…

fastjson反序列化漏洞

fastjson反序列化漏洞 文章目录 fastjson反序列化漏洞1.漏洞原理2.探测方式2.1 查看回显2.2 LDAP/RMI服务测试 3.LDAP/RMI服务搭建要求4.漏洞复现4.1 fastjson <1.2.47 反序列化导致任意命令执行漏洞4.1.1 环境准备4.1.2 复现过程 4.2 fastjson <1.2.24 反序列化导致任意…

simple-pytest 框架使用指南

simple-pytest 框架使用指南 一、框架介绍简介框架理念&#xff1a;框架地址 二、实现功能三、目录结构四、依赖库五、启动方式六、使用教程1、快速开始1.1、创建用例&#xff1a;1.2、生成py文件1.3、运行脚本1.3.1 单个脚本运行1.3.2 全部运行 1.4 报告查看 2、功能介绍2.1、…

vue2 开发记录

el-select 如何修改选择项的样式/el-select-dropdown__item 文字上下显示 测试代码 <div stylemargin-left: 100px><!-- 测试代码--><el-select filterablesizemini><div classxxx-el-select><el-optionv-foritem in [{key:1,des:2,…

web自动化笔记八:滚动条处理和窗口截屏

一、滚动条处理 ①为什么要操作滚动条&#xff1f; 1. 在HTML页面中&#xff0c;由于前端技术框架的原因&#xff0c;页面元素为动态显示&#xff0c;元素根据滚动条的下拉而被加载 2. 页面注册同意条款&#xff0c;需要滚动条到最底层&#xff0c;才能点击…

vue cesium加载点与定位到指定位置

vue cesium定位到指定位置 window.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(point.longDeg, point.latDeg, 6500000), orientation: {heading: 6.2079384332084935, roll: 0.00031509431759868534, pitch: -1.535}, duration: 3})vue cesium加载点 …

QMLButton背景初始化

文章目录 异常情况解决办法 异常情况 Button {id: controltext: qsTr("Button")width: 100height: 150property color normalColor: "green"property color hoverColor: "yellow"property color pressColor: "red"background: Rectan…

Android的硬件接口HAL

我一直觉得&#xff0c;现代计算机不是一门科学&#xff0c;起码快算不上一门理科科学。上上下下全是人造&#xff0c;左左右右全是生意&#xff0c;用管理学&#xff0c;经济学去学计算机&#xff0c;也许更看得懂很多问题。HAL就是一个典型例子。 传统Linux绕开了微软的霸权…

Vue3速成

文章目录 day 11. 创建vue3工程3. 响应式数据4. 计算属性 day 25. watch 监视6. watchEffect7. 标签的ref属性8. 回顾TS中的接口_泛型_自定义类型 day 1 1. 创建vue3工程 相关代码如下&#xff1a; ## 创建vue工程 npm create vuelastest## 安装node_modules npm install //…

【六袆 - React】Next.js:React 开发框架;Next.js开发框架的特点

Next.js&#xff1a;React 开发框架 Next.js的特点 1.直观的、基于页面的路由系统&#xff08;并支持动态路由&#xff09; Next.js 提供了基于文件系统的路由&#xff0c;意味着你可以通过创建页面文件来定义路由。 伪代码示例&#xff1a; // pages/index.js export defa…

【数据结构】数组

第一章、为什么数组的下标一般从0开始编号 提到数组&#xff0c;读者肯定不陌生&#xff0c;甚至还会很自信地说&#xff0c;数组很简单。编程语言中一般会有数组这种数据类型。不过&#xff0c;它不仅是编程语言中的一种数据类型&#xff0c;还是基础的数据结构。尽管数组看起…

AI新工具(20240301) Ideogram; Image to Music Generator等

1: Ideogram 全新的多模态生图AI工具&#xff0c;以其优秀的文字渲染能力和生图能力受到业界瞩目 Ideogram是一个创新的AI工具&#xff0c;它通过在生成的图片中自然地整合文字&#xff0c;解决了生图AI领域长期存在的一个难题。这个工具特别擅长将文本以极其自然和协调的方式…

Nginx 隐藏版本信息和logo

1.隐藏版本信息 http {### 隐藏版本号 server_tokens off; } 2.隐藏图标 2.1 cd nginx 安装的路径 cd/XXXX/nginx-1.2.0 2.2 编辑文件 vim src/core/nginx.h 修改define nginx_ver 中的内容 vim src/http/ngx_http_special_response.c 修改 u_char ngx_http_error_tail[]…

腾讯云4核8G的云服务器性能水平?使用场景说明

腾讯云4核8G服务器适合做什么&#xff1f;搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以&#xff0c;腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM&#xff0c;轻量服务器和标准型CVM服务器性能是差不多的&#xff0c;轻…

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型&#xff08;Self-supervised Learning&#xff09;&#xff0c;也叫基石模型&#xff08;foundation modle&#xff09;。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…

element-plus表格合并

要实现这样的表格&#xff0c; 怎么做呢&#xff1f; 甚至是这种三级的呢&#xff1f; 官网的案例也是通过这个方法进行配置的&#xff0c;也就是说表格长什么样&#xff0c;关键在怎么处理的方法上。 这是官网的方法&#xff0c;可参考拓展&#xff1a; const arraySpanMeth…

【airtest】自动化入门教程(三)Poco操作

目录 一、准备工作 1、创建一个pthon脚本 2、光标位置 2、选择Android 3、选择yes 二、定位元素 三、poco基于设备/屏幕 方式 1、poco.click( (x,y))基于屏幕点击相对坐标为x&#xff0c;y的位置 2、poco.get_screen_size() 3、poco.swipe(v1,v2)基于屏幕从v1位置滑到…

Python爬虫实战第二例【二】

零.前言&#xff1a; 本文章借鉴&#xff1a;Python爬虫实战&#xff08;五&#xff09;&#xff1a;根据关键字爬取某度图片批量下载到本地&#xff08;附上完整源码&#xff09;_python爬虫下载图片-CSDN博客 大佬的文章里面有API的获取&#xff0c;在这里我就不赘述了。 一…