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

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

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

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

▲ 图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.mzph.cn/news/822102.shtml

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

相关文章

力扣:141. 环形链表

力扣:141. 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾…

一个文生视频MoneyPrinterTurbo项目解析

最近抖音剪映发布了图文生成视频功能,同时百家号也有这个功能,这个可以看做是一个开源的实现,一起看看它的原理吧~ 一句话提示词 大模型生成文案 百家号生成视频效果 MoneyPrinterTurbo生成视频效果 天空为什么是蓝色的? 天空之所以呈现蓝色,是因为大气中的分子和小粒子会…

35、链表-LRU缓存

思路: 首先要了解LRU缓存的原理,首先定下容量,每次get请求和put请求都会把当前元素放最前/后面,如果超过容量那么头部/尾部元素就被移除,所以最近最少使用的元素会被优先移除,保证热点数据持续存在。 不管放…

鸿蒙画布组件使用介绍

一、前言 DevEco Studio版本:4.0.0.600 前些天写了一篇 鸿蒙自定义控件实现罗盘数字时钟效果 的文章,有同学私信说能不能介绍鸿蒙中的画布组件,下面文章介绍下鸿蒙中的Canvas画布、CanvasRenderingContext2D绘制组件,实现绘制文…

股票市场预测模型:未来趋势的智能分析工具

📈 股票市场预测模型:未来趋势的智能分析工具 🤑 🏦 概述 在这个充满变数的股票市场中,投资者需要一个强大的工具来预测未来的价格走势。我们的机器学习模型旨在通过分析历史数据,为投资者提供科学的市场…

03.卸载MySQL

卸载MySQL 1.Windows卸载MySQL8 停止服务 用命令停止或者在服务中停止都可以 net stop mysql(服务名字可以去服务里面看一下)控制面板卸载MySQL 卸载MySQL8.0的程序可以和其他桌面应用程序一样直接在控制面板选择卸载程序,并在程序列表中…

转换为elementUI提示方法为uni-app的showToast提示

// 转换为elementUI提示方法为uni-app的showToast提示---------------------------------------- // 一般提示 Vue.prototype.$message function(title) {title && uni.showToast({icon: none,title}); }; // 成功提示 Vue.prototype.$message.success (title) > …

无效的标记: --release

maven编译项目时候出现:无效的标记: --release 项目背景 介绍一下项目背景: java17 SpringBoot:3.2.0 SpringCloud: 2023.0.0 之前一直用java8开发项目 问题原因 maven所使用的jdk版本和idea所使用的jdk版本不一致导致的。…

客诉技术架构:构建客户满意的数字化支持系统

随着数字化时代的到来,客户体验已经成为企业竞争的关键因素之一。而客诉技术架构作为支持客户服务和解决问题的关键系统,对于企业提升客户满意度和品牌声誉具有重要意义。本文将深入探讨客诉技术架构的重要性、关键要素以及如何构建一个有效的客户支持系…

微服务之网关路由

一、概述 1.1认识网关 什么是网关? 顾明思议,网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由和转发以及数据安全的校验。 更通俗的来讲,网关就像是以前园区传达室的大爷。 外…

跨境物流系统解决方案:构建全球化供应链的关键步骤

随着全球化的发展,跨境物流已成为国际贸易中不可或缺的重要环节。然而,由于各国之间的政治、法律、文化和语言差异,跨境物流常常面临诸多挑战,如货物清关、运输安全、物流跟踪等问题。因此,构建一个高效、可靠的跨境物…

3.2 iHRM人力资源 - 组织架构 - 编辑及删除

iHRM人力资源 - 组织架构 文章目录 iHRM人力资源 - 组织架构一、编辑功能1.1 表单弹层并数据回显1.2 编辑校验1.3 编辑 二、删除功能 一、编辑功能 编辑功能和新增功能用的组件其实是一个,结构几乎是一样的,其实是复用了组件,我们也省去了很…

Hive-Sql复杂面试题

参考链接:hive sql面试题及答案 - 知乎 1、编写sql实现每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数 数据: userid,month,visits A,2015-01,5 A,2015-01,15 B,2015-01,5 A,2015-01,8 B,2015-01,25 A,2015-01,5 A,2015-02,4 A,20…

用于密集视觉冲击的紧凑三维高斯散射Compact 3D Gaussian Splatting For Dense Visual SLAM

Compact 3D Gaussian Splatting For Dense Visual SLAM 用于密集视觉冲击的紧凑三维高斯散射 Tianchen Deng 邓天辰11Yaohui Chen 陈耀辉11Leyan Zhang 张乐妍11Jianfei Yang 杨健飞22Shenghai Yuan 圣海元22Danwei Wang 王丹伟22Weidong Chen 陈卫东11 Abstract 摘要 …

淘宝API商品详情数据在数据分析行业中具有不可忽视的重要性

淘宝商品详情数据在数据分析行业中具有不可忽视的重要性。这些数据为商家、市场分析师以及数据科学家提供了丰富的信息,有助于他们更深入地理解市场动态、消费者行为以及商品竞争态势。以下是淘宝商品详情数据在数据分析行业中的重要性体现: 请求示例&a…

ArcGIS三维景观分层显示

今天将向大家介绍的事在ArcGIS中如何创建多层三维显示。 地表为影像的 地表为地形晕渲的 在土壤分层、油气分层等都有着十分重要的应用。下面我们具体来看看实现过程 一、 准备数据及提取栅格范围 我们这次准备的数据是之前GIS100例-30讲的案例数据。《ArcGIS三维影像图剖面图…

基于栈求解迷宫的单条路径和所有路径

数据结构与算法课的一个实验,记录一下。 单纯想要了解利用栈求解迷宫的算法可以直接跳转到相应的小标题。 完整代码链接code_2024/mazeLab LeePlace_OUC/code - 码云 - 开源中国 (gitee.com) 文章目录 要求栈的实现MazeType类型的组织迷宫的初始化和销毁打印路径…

AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)

AIGC实战——VQ-GAN 0. 前言1. VQ-GAN2. ViT VQ-GAN小结系列链接 0. 前言 本节中,我们将介绍 VQ-GAN (Vector Quantized Generative Adversarial Network) 和 ViT VQ-GAN,它们融合了变分自编码器 (Variational Autoencoder, VAE)、Transformer 和生成对…

Vue加载glb / gltf模型(如何在vue中使用Three.js,vue使用threejs加载glb模型)

简介:Three.js 是一个用于在 Web 上创建和显示 3D 图形的 JavaScript 库。它提供了丰富的功能和灵活的 API,使开发者可以轻松地在网页中创建各种 3D 场景、模型和动画效果。可以用来展示产品模型、建立交互式场景、游戏开发、数据可视化、教育和培训等等…

嵌入式4-16

tftpd #include <myhead.h> #define SER_IP "192.168.125.243" //服务器IP地址 #define SER_PORT 69 //服务器端口号 #define CLI_IP "192.168.125.244" //客户端IP地址 #define CLI_PORT 8889 //客户端端…