案例研究|众乐邦将MeterSphere持续测试平台融入DevOps流水线

news2024/11/25 22:51:24

众乐邦网络科技有限公司(以下简称为“众乐邦”)是一家企业服务公司。其旗下的众乐邦灵活用工数字化薪税管理平台(以下简称为灵活用工管理平台),以财税服务视角切入灵活用工场景,连接企业、灵活就业者和监管三方,帮助企业更安心、轻松地管理临时工及兼职人员,并在用工衔接、成果交付、费用结算、票据管理等方面助力企业实现降本增效、规范经营、模式升级。
在这里插入图片描述

一、众乐邦测试平台选型的背景

灵活用工管理平台包含多个功能模块。其中,用户模块、任务模块、支付模块、发票模块等属于关键模块。这些模块的业务功能复杂,涉及用户注册、认证、岗位匹配、合同签署等多个步骤的组合操作,步骤之间存在数据交互和传输,容易出现数据传输错误、传输超时、不兼容和性能瓶颈等问题。这种情况下,使用传统的手工测试容易忽略一些冗长或复杂的接口场景,从而产生测试覆盖面不足的问题,容易导致系统崩溃或异常结果。
在这里插入图片描述

▲ 图1 众乐邦灵活用工管理平台功能示意图

随着业务的快速发展,众乐邦灵活用工管理平台需要根据用户的需求变化进行迭代和升级,实现以需求为颗粒度的快速交付。这对众乐邦的测试团队来说是一个比较大的挑战,测试团队遇到的具体困难包括:

1.回归测试要求高

众乐邦灵活用工管理平台涉及多个模块且业务流程复杂,产品的每次迭代都可能造成多个流程的修改,为保证新的迭代不会影响现有功能的正常运行,众乐邦的测试团队需要执行大量的回归测试,以验证系统的稳定性和一致性。众乐邦灵活用工管理平台的回归测试用例数量较多,而且覆盖了各个模块和业务流程的不同场景。但是由于许多测试工具没有自动化的定时执行机制,测试团队只能采用手工方式执行测试用例,手工验证每个测试用例是否符合新的需求和修改后的业务流程。

手工测试不但增加了测试团队的工作量,放大了错误风险,还会耗费大量时间和精力。传统的手工测试在面对不断变化的业务需求时不够灵活,导致了测试工作的滞后和测试覆盖面的不足。

2.自动化脚本管理困难

众乐邦的测试团队在自动化脚本管理方面主要有三大痛点:

■ 脚本编写效率低

测试团队在进行接口自动化测试的过程中使用了多种不同的自动化测试工具,虽然它们提供了脚本编辑的功能,但是在面对大规模或复杂脚本的编写情景时,这些工具存在效率较低、不易维护和维护不规范的问题;

■ 脚本编写限制多

测试工具的差异化导致测试人员在编写脚本时缺乏灵活性和易读性,使用脚本时复用性和可读性不足;

■ 脚本维护困难

随着众乐邦产品的持续迭代,测试脚本需要不断更新以适应新的业务逻辑,脚本维护的困难程度也随之上升。

3.缺少功能全面的测试管理平台

庞杂的测试任务让众乐邦的测试流程变得极其复杂,内部测试协作难于开展。一方面,测试人员难以追踪测试用例的执行结果,也难以明确问题的来源和根本原因;另一方面,在测试管理方面,测试数据和测试用例分散在不同的测试工具中,测试团队很难对这些碎片化的测试数据和用例进行管理。

众乐邦的测试团队希望有一款功能全面的一站式测试平台来优化协作流程、提高测试工作的可追溯性,帮助测试团队更加高效地管理测试数据和用例。

二、选择MeterSphere测试平台的原因

根据众乐邦质量能效团队对项目交付的时间、成本和交付率三个关键维度的数据统计和分析,造成目前测试困境的主要原因是众乐邦缺少一套DevOps流程。

一方面,在项目初期的研发阶段,众乐邦的研发人员会对接口进行自测,而测试人员则专注于业务测试,两个团队缺少协作沟通;另一方面,在项目后期,研发人员往往需要重构代码,对部分接口进行调整,这会导致业务侧接口自动化测试场景的改变。但这样的变化并没有及时同步给测试团队成员,增加了测试人员的工作阻力。

众乐邦研发团队和测试团队的协作缺失增大了项目交付期间的沟通成本,从而影响了项目的交付周期。为了打破这一瓶颈,众乐邦的质量能效团队决定以DevOps标准推动实际的软件交付工作。DevOps持续测试流程的引入,将测试过程贯穿到整个软件交付流程中。DevOps持续测试流程的实施,让测试团队可以更早地发现和解决潜在问题,帮助团队灵活适应不断变化的需求,从而提高软件质量,缩短项目交付周期。

在DevOps流水线中,众乐邦团队使用TAPD平台(Tencent Agile Product Development,腾讯敏捷协作平台)进行全链路的项目管理追踪。而在代码构建、部署和运维等各个环节,也有其他相应的工具可以使用。但不同于其他环节,在测试环节中,主流的测试工具无法完成所有的测试类型,测试团队需要同时使用不同的测试工具开展工作。碎片化的测试工具成为阻碍测试效率提升的关键因素之一,导致众乐邦长期存在测试速度慢和测试反馈迟缓等问题。

因此,众乐邦的测试团队考虑引入一款一站式的测试平台,从而实现对自动化测试的全面支持,促进研发、测试和部署等环节之间的协同与流程打通,提高测试效率,确保测试覆盖的全面性,做好质量控制,加速交付流程,从而实现全面的DevOps集成。

在测试平台的产品选型过程中,众乐邦的测试团队对市场上主流的测试工具和测试平台进行了调研和试用,最终选择了MeterSphere一站式开源持续测试平台。选择MeterSphere平台的原因主要有以下三个方面:

■ DevOps集成能力:MeterSphere测试平台能够很好地融入到CI/CD(持续集成/持续交付)的流程中。MeterSphere可以集成TAPD项目管理平台,实现需求的关联和缺陷的双向同步,促进研发团队和测试团队的无缝协作,从而构建一个紧密的闭环,在便于测试团队上手的同时也能降低和研发团队的沟通成本。除此以外,MeterSphere支持对测试过程中的数据、测试脚本和测试报告按照项目模块进行整合,方便了测试团队开展管理工作;

■ 一站式能力:MeterSphere拥有一站式的测试能力,涵盖测试管理、接口测试、UI测试和性能测试等多个关键测试能力。其中,众乐邦的测试团队最为看重的是接口测试和UI测试功能。

接口测试方面,MeterSphere有着类似于Postman的接口用例设计方式与使用模式,但相比Postman等工具,MeterSphere更加容易上手。MeterSphere还具备了JMeter的灵活性,提供灵活自由的接口场景编排设计、丰富的接口拓展功能和完备的执行方式及报告。

UI测试方面,MeterSphere提供了着基于Selenium浏览器的自动化方案,内嵌高度可复用的测试脚本,让众乐邦的测试团队无需手动编写复杂的代码,以低代码的方式开展自动化UI测试;

■ 易用性:MeterSphere以可视化和低代码的设计理念为基础,用户界面设计简单易用,主要功能和操作区域布局清晰,降低了用户的学习成本。测试人员在编写自动化测试脚本时只需要在网页上进行简单的拖拽和设置操作,极大地降低了自动化测试的执行和使用门槛,让测试人员无需大量的培训,就可以快速上手使用。

三、基于MeterSphere平台的持续自动化测试

基于众乐邦的测试工作现状,为了将MeterSphere平台融入到DevOps流水线中,并且实现与TAPD平台的深度结合,众乐邦测试团队的持续自动化测试体系总体设计思路如下:

■ 在项目交付之前,研发人员和产品经理根据项目情况创建需求,产品经理与测试团队提前编写功能测试用例,并将功能用例通过脑图一键导入至MeterSphere平台。然后借助MeterSphere的服务集成能力,与TAPD平台完成对接,从而实现需求与功能用例的关联。接下来,多方团队成员共同参与用例评审,在评审过程中检查测试用例是否涵盖了所有的功能点,以及这些功能点是否能够按照预期的方式进行测试,尽量减少在测试过程中出现问题的可能性;

■ 在开发过程中,开发团队根据需求文档进行接口开发。一方面使用Swagger工具进行接口的维护和文档化,另一方面利用MeterSphere平台的自动同步功能,将接口同步至MeterSphere平台。测试团队会根据同步到MeterSphere平台的接口信息,编写相应的自动化测试用例。在两个团队通过MeterSphere平台进行协作的情况下,当接口用例发生变更时,测试人员能够及时得到通知,并且触发相应的MeterSphere平台自动化测试流程,保障了自动化测试流程的及时性和准确性;

■ 研发团队将需求开发完成后,会将开发代码提交至代码仓库,进行编译并生成对应的镜像后,会调用MeterSphere平台的API接口,触发冒烟测试和接口测试的自动化任务。如果测试任务在测试环境执行通过,则推送镜像至预发布环境;如果测试任务未通过,则进行回滚,由开发团队自测后再提测,保证功能的完整性和准确性,通过最终测试后再部署至生产环境。
在这里插入图片描述

▲ 图2 众乐邦的持续自动化测试体系

为了提高测试效率,众乐邦的测试团队从测试方法和测试工具两个方面进行了升级。在测试方法上,测试团队全面应用DevOps流程的持续测试能力,贯彻尽早且经常测试的原则,确保从开发的早期就开展测试,将测试贯穿至整个开发过程,从而能够更早地发现和解决测试中的问题;在测试工具上,测试团队使用MeterSphere平台完成所有测试工作,实现了从测试计划、测试执行到测试报告分析的全生命周期管理,通过自动化测试流程实现了测试的全过程可视化和深度追踪。

测试方法和测试工具的改进不仅提高了众乐邦测试的整体效率,还为团队创造了更多的时间,使项目团队能够更加灵活地应对项目需求的变化。众乐邦的自动化测试体系实践具体表现为以下五个方面:

1.全生命周期管理,过程可追溯

众乐邦在项目交付的过程中主要使用TAPD和MeterSphere进行项目的全生命周期管理。当项目处于开发阶段时,TAPD平台发挥着关键作用,TPAD在需求管理、项目计划和任务分配等方面的能力确保了项目的有序推进。

项目处于测试阶段时,MeterSphere则贯穿整个测试过程。MeterSphere平台涵盖了各类测试用例的创建、执行和管理,包括接口测试、性能测试和UI测试等能力。

TAPD与MeterSphere的结合,实现了需求管理和功能用例的无缝对接以及缺陷的双向同步。这使得项目团队可以在同一个平台上记录和管理项目各个阶段的信息和工作成果,从而降低了信息传递的误差,提升了团队的协同效率,让整个项目管理过程变得更加透明可控。
在这里插入图片描述MeterSphere

▲ 图3 众乐邦的项目全生命周期管理

2.细致的多维度权限控制

MeterSphere平台提供了精细的权限控制能力。从用户管理和角色分配,到项目级别的权限设置,再到用例、测试计划和测试报告的操作权限,全部都可以在MeterSphere平台上进行设置。MeterSphere平台确保了敏感信息仅被授权人员访问,有利于众乐邦进一步加强了团队的测试管理和安全管控。这种细致的权限控制为测试团队提供了信息安全性和完整性的有效保障。

另一方面,MeterSphere平台的权限控制也十分全面。MeterSphere平台不仅在系统设置层面有权限控制机制,在安全审计和日志记录层面也有相应的设计。通过记录操作日志,MeterSphere平台可以实现对用户操作历史的追溯。多维度的细致权限控制,使MeterSphere平台成为了众乐邦可信赖的项目全生命周期管理平台。
在这里插入图片描述

▲ 图4 MeterSphere的权限控制

3.研发测试协同,实现测试左移

以前的项目交付过程中,各个团队的工作比较独立,缺乏协作,导致众乐邦的接口用例由测试⼈员手工录⼊,不仅增加了测试人员的工作量,也降低了测试效率。现在,众乐邦的测试团队使用Swagger的⽂档定时导⼊功能完成接⼝定义后,开发团队在MeterSphere平台完成接⼝⾃测,前端开发团队通过MeterSphere平台的Mock功能实现前后端联调。

MeterSphere化身成为众乐邦团队间的协作平台,有效降低了团队间的沟通成本。众乐邦借助MeterSphere平台实现了协同后,测试团队和研发团队的工作效率得到了显著提升。

测试团队方面,测试成员在确定了接⼝变更影响到的⽤例时,可以在MeterSphere平台将变更后的参数信息自动同步至接口CASE,从而降低了接口用例的维护成本,为后续自动化测试打好了基础;研发团队方面,发版后DevOps流水线会⾃动触发测试计划,MeterSphere平台会自动进⾏接口回归测试,在提升测试覆盖率的同时,也减少了测试团队的重复⼯作量。
在这里插入图片描述

▲ 图5 MeterSphere的接口定义列表界面

4.实现数据驱动测试(Data-Driven Testing,简称为DDT)

众乐邦的接口自动化测试过程和业务流程之间存在强关联和强绑定,而MeterSphere平台的断言能力满足了众乐邦测试团队的数据驱动测试需求。

在实际应用中,众乐邦的业务规则复杂多样,业务流程中的数据互相关联,在一些特定业务场景下存在需要验证的边界条件,例如随机数生成、时间函数的构造、加密解密等。为了对这些数据进行有效管理,众乐邦对于接口测试中的输入数据、业务规则,以及期望的输出数据等业务数据信息,以参数的形式进行配置和管理。

在进行接口测试时,测试团队利用MeterSphere平台的断言功能,在执行接口自动化测试时动态改变断言条件,基于实际返回的数据进行提取、判断等操作,确保了接口测试能够全面覆盖业务场景,并且为接口在不同业务条件下的可靠性提供了保障。
在这里插入图片描述

▲ 图6 众乐邦的业务场景参数化过程

在这里插入图片描述

▲ 图7 MeterSphere的接口自动化功能界面

5.测试全过程可视化和深度追踪

众乐邦的测试团队将项目划分为多个模块进行测试,由测试人员统一完成基于具体功能的接口测试场景。测试团队在MeterSphere平台按照测试目录进行脚本编写,再由MeterSphere平台自动配置每晚执行相关功能的自动化测试任务。最后,测试报告会通过众乐邦的内部聊天工具“钉钉”机器人生成对应消息,并通知到指定人。除此以外,MeterSphere平台还会统计所有执行过程的数据,并生成测试报告。
在这里插入图片描述

▲ 图8 MeterSphere生成的测试报告

四、MeterSphere融入DevOps流水线后带来的收益

将MeterSphere平台融入Devops流水线后,众乐邦的测试团队实现了持续集成和持续交付,主要的收益体现在以下三个方面:

1.测试提效:截至目前,MeterSphere开源持续测试平台在众乐邦已经运行近一年的时间,测试团队在MeterSphere平台上已经创建了900多个接口用例,以及100多个接口和场景用例,项目的核心模块已经完全实现了接口自动化的目标;

2.测试开发协作:通过与测试团队共同使用MeterSphere平台,众乐邦的开发团队和测试团队一起维护和更新接口文档,开发团队参与到了测试过程中。测试开发协作让众乐邦的单接口测试覆盖率高达100%,业务场景自动化编排覆盖率达到90%。协同工作提高了测试的准确性和效率,使众乐邦的测试周期缩短了三分之一;

3.质量保障:测试团队使用MeterSphere平台的定时任务功能开展每日运行和发版前的回归自动化测试,有力保障了产品迭代上线的质量。另一方面,每个测试计划完成后,MeterSphere平台都会自动产生相应的测试报告,根据测试报告对测试用例、测试过程以及测试结果等多个维度进行分析,既有助于众乐邦的测试团队快速发现和反馈问题,也有利于研发团队修复缺陷和解决问题。
在这里插入图片描述

▲ 图9 MeterSphere的接口和场景数量统计仪表板

在使用了MeterSphere持续测试平台后,众乐邦的测试团队提升了测试效率,缩短了项目的测试周期,成功解决了一系列过去测试工作中的疑难问题。

结合目前的业务需求和未来规划,众乐邦的测试团队希望MeterSphere平台在未来能够实现更多场景的优化和自动化。例如优化异步接口测试,实现更智能的场景执行和结果判断;提升操作效率,支持多选接口批量拖拽至当前场景;扩展数据统计和报表功能,满足不同角色对测试进度和质量的跟踪需求等,以进一步提高测试质量和加速项目交付。

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

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

相关文章

Windows下使用PanguVip实现浮动IP

在某些高可用场景下,我们往往需要使用浮动IP来进行实际访问的切换,比如为了保证Web应用的高可用,当主节点宕机后,我们将浮动IP切换到备节点,那么备节点就继续可以提供服务,在linux下我们可以使用keepalived…

4.15号驱动

设备树 1. 设备树介绍 1.1 引入 在linux内核3.10版本之前,arm公司将驱动相关的硬件信息(地址、中断号、i2c从机地址)都存放在arch/arm目录 由于每一个设备都会对应一个文件,进行描述硬件的信息,这个目录下会存放大量的垃圾代码&#xff0…

aosp13/14命令行进入分屏相关实战

背景: 分屏一般在手机上都是都是从桌面的最近任务卡片进入的,一般来说手机用户都是这样操作的,但是有一些场景或者情况就不一定可以顺利用上这个桌面的多任务卡片进入。 比如以下场景: 1、可能不是桌面的多任务的场景&#xff0c…

c++入门 命名空间

文章目录 C入门命名空间域作用限定符域作用限定符操作C的域编译器的搜索原则命名空间域的展开命名空间的嵌套 C入门 命名空间 命名空间的存在:为了解决同域中起名字冲突的问题 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、…

使用Python实现文字识别,教你如何从图片中识别提取文字

今天分享的是如何使用Python从图片中提取文字。虽然从我的实际操作结果来看第三方库的图片文字识别效果并不是十分理想,但也能满足我的需求了。 首先,我们需要知道Python中两个非常重要的库:Pillow和Tesseract-OCR。Pillow是一个免费开源的图…

类与对象(中

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 目录 前言 一、类的6个默认成员函数 二、构造函数 2.1 概念 2.2 特性 2.3 总结 三、析构函数 3.1 概念 3.2 特性 3.3 总结 四. 拷贝构造函数 4.1 概念 4.2 特征 4.3 总结 五.赋值运算符重载 5.1 运算符重载 5.2 赋…

OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

介绍 本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。拖拽List中子组件,到目标List子组件…

Linux进阶篇:性能监控工具:socket 统计信息

Linux性能监控工具:socket 统计信息 1 ss命令介绍 ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netsta…

408数据结构,怎么练习算法大题?

其实考研的数据结构算法题是有得分技巧的 得分要点 会写结构定义(没有就自己写上)写清楚解题的算法思想描述清楚算法实现最后写出时间和空间复杂度 以上这四步是完成一道算法题的基本步骤,也是其中得分的主要地方就是后面两步。但是前面两…

【HCIP】OSPF的高级特性

OSPF的高级特性1 --- 不规则区域 一、OSPF不规则区域类型 产生原因:区域划分不合理,导致的问题 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 造成后果:非骨干区域没和骨干区域相连,导致ABR将不会帮忙转发区域间的路由…

自学Java的第二十四次笔记

一,方法重载 1.基本介绍 java 中允许同一个类中,多个同名方法的存在,但要求 形参列表不一致! 比如: System.out.println(); out 是 PrintStream 类型 2.重载的好处 1) 减轻了起名的麻烦 2) 减轻了记名的麻烦 3.快速入门案…

免费无限换脸神器Facefusion最新版(支持数字人)

Facefusion,一款超炫的AI视频/图片换脸项目,号称“下一代换脸器和增强器”。作者一直在不停地更新,新版2.3.0版本甚至还支持了数字人,快随我去看看吧~ Facefusion2.3.0新版本介绍 Facefusion新版本升级了人脸解析能力&#xff0c…

算法学习——LeetCode力扣补充篇8(146. LRU 缓存、 215. 数组中的第K个最大元素、25. K 个一组翻转链表)

算法学习——LeetCode力扣补充篇8 146. LRU 缓存 146. LRU 缓存 - 力扣(LeetCode) 描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化…

基于深度学习的乳腺癌淋巴结转移预测模型(E-Transformer)

乳腺癌细胞淋巴结转移是界定乳腺癌早中期的重要标准,需要活检,患者体验较差。 传统的图像辅助诊断需要手动提取特征、组合图像特征,效率低下、效果不佳。新兴的基于深度学习的图像辅助诊断,利用卷积神经网络通过全连接层或机器学…

ubuntu23.10.1 php8.2安装

1、更新镜像源 apt update2、安装php 如果在这里不知道自己Linux能安装什么版本的php,可以使用apt install php,会给你提示,根据提示自己选择版本安装 apt install php我这里是php8.2-cli apt install php8.2-cli其他扩展包,在后面加个-可以查看&…

跟TED演讲学英文:How AI can bring on a second Industrial Revolution by Kevin Kelly

How AI can bring on a second Industrial Revolution Link: https://www.ted.com/talks/kevin_kelly_how_ai_can_bring_on_a_second_industrial_revolution Speaker: Kevin Kelly Date: June 2016 文章目录 How AI can bring on a second Industrial RevolutionIntroduction…

福布斯发布2024年人工智能初创企业50强

随着人工智能热潮的持续,一种新的技术经济正在帮助企业开发和部署人工智能驱动的应用程序。在《福布斯》第六届年度“人工智能50强”榜单上,这类新锐企业正大行其道。该榜单遴选了AI领域最有前途的初创公司,由《福布斯》在领先行业专家的帮助…

文献速递:深度学习胰腺癌诊断--胰腺癌在CT扫描中通过深度学习检测:一项全国性的基于人群的研究

Title 题目 Pancreatic Cancer Detection on CT Scans with Deep Learning: A Nationwide Population-based Study 胰腺癌在CT扫描中通过深度学习检测:一项全国性的基于人群的研究 01 文献速递介绍 胰腺癌(PC)的五年生存率是所有癌症中…

redis五种类型介绍

Redis是一种内存数据存储系统,它支持五种不同的数据类型: 1. String String是Redis中最基本的数据类型,它可以存储任何形式的字符串数据,例如普通的文本字符串,二进制数据或JSON格式的数据。除此之外,还可以…

AtCoder Educational DP Contest

A - Frog 1 大意 有块石头,第块石头的高度为。从石头跳到石头的花费是。 一只青蛙在石头上,每次可以跳步或步,请问跳到石头的最小代价是多少? 思路 设,为青蛙跳到第号石头时的最小代价。 每一个点都可以由前两个点…