众乐邦网络科技有限公司(以下简称为“众乐邦”)是一家企业服务公司。其旗下的众乐邦灵活用工数字化薪税管理平台(以下简称为灵活用工管理平台),以财税服务视角切入灵活用工场景,连接企业、灵活就业者和监管三方,帮助企业更安心、轻松地管理临时工及兼职人员,并在用工衔接、成果交付、费用结算、票据管理等方面助力企业实现降本增效、规范经营、模式升级。
灵活用工管理平台包含多个功能模块。其中,用户模块、任务模块、支付模块、发票模块等属于关键模块。这些模块的业务功能复杂,涉及用户注册、认证、岗位匹配、合同签署等多个步骤的组合操作,步骤之间存在数据交互和传输,容易出现数据传输错误、传输超时、不兼容和性能瓶颈等问题。这种情况下,使用传统的手工测试容易忽略一些冗长或复杂的接口场景,从而产生测试覆盖面不足的问题,容易导致系统崩溃或异常结果。
▲ 图1 众乐邦灵活用工管理平台功能示意图
随着业务的快速发展,众乐邦灵活用工管理平台需要根据用户的需求变化进行迭代和升级,实现以需求为颗粒度的快速交付。这对众乐邦的测试团队来说是一个比较大的挑战,测试团队遇到的具体困难包括:
1.回归测试要求高
众乐邦灵活用工管理平台涉及多个模块且业务流程复杂,产品的每次迭代都可能造成多个流程的修改,为保证新的迭代不会影响现有功能的正常运行,众乐邦的测试团队需要执行大量的回归测试,以验证系统的稳定性和一致性。众乐邦灵活用工管理平台的回归测试用例数量较多,而且覆盖了各个模块和业务流程的不同场景。但是由于许多测试工具没有自动化的定时执行机制,测试团队只能采用手工方式执行测试用例,手工验证每个测试用例是否符合新的需求和修改后的业务流程。
手工测试不但增加了测试团队的工作量,放大了错误风险,还会耗费大量时间和精力。传统的手工测试在面对不断变化的业务需求时不够灵活,导致了测试工作的滞后和测试覆盖面的不足。
2.自动化脚本管理困难
众乐邦的测试团队在自动化脚本管理方面主要有三大痛点:
■ 脚本编写效率低
测试团队在进行接口自动化测试的过程中使用了多种不同的自动化测试工具,虽然它们提供了脚本编辑的功能,但是在面对大规模或复杂脚本的编写情景时,这些工具存在效率较低、不易维护和维护不规范的问题;
■ 脚本编写限制多
测试工具的差异化导致测试人员在编写脚本时缺乏灵活性和易读性,使用脚本时复用性和可读性不足;
■ 脚本维护困难
随着众乐邦产品的持续迭代,测试脚本需要不断更新以适应新的业务逻辑,脚本维护的困难程度也随之上升。
3.缺少功能全面的测试管理平台
庞杂的测试任务让众乐邦的测试流程变得极其复杂,内部测试协作难于开展。一方面,测试人员难以追踪测试用例的执行结果,也难以明确问题的来源和根本原因;另一方面,在测试管理方面,测试数据和测试用例分散在不同的测试工具中,测试团队很难对这些碎片化的测试数据和用例进行管理。
众乐邦的测试团队希望有一款功能全面的一站式测试平台来优化协作流程、提高测试工作的可追溯性,帮助测试团队更加高效地管理测试数据和用例。
根据众乐邦质量能效团队对项目交付的时间、成本和交付率三个关键维度的数据统计和分析,造成目前测试困境的主要原因是众乐邦缺少一套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平台融入到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流水线后,众乐邦的测试团队实现了持续集成和持续交付,主要的收益体现在以下三个方面:
1.测试提效:截至目前,MeterSphere开源持续测试平台在众乐邦已经运行近一年的时间,测试团队在MeterSphere平台上已经创建了900多个接口用例,以及100多个接口和场景用例,项目的核心模块已经完全实现了接口自动化的目标;
2.测试开发协作:通过与测试团队共同使用MeterSphere平台,众乐邦的开发团队和测试团队一起维护和更新接口文档,开发团队参与到了测试过程中。测试开发协作让众乐邦的单接口测试覆盖率高达100%,业务场景自动化编排覆盖率达到90%。协同工作提高了测试的准确性和效率,使众乐邦的测试周期缩短了三分之一;
3.质量保障:测试团队使用MeterSphere平台的定时任务功能开展每日运行和发版前的回归自动化测试,有力保障了产品迭代上线的质量。另一方面,每个测试计划完成后,MeterSphere平台都会自动产生相应的测试报告,根据测试报告对测试用例、测试过程以及测试结果等多个维度进行分析,既有助于众乐邦的测试团队快速发现和反馈问题,也有利于研发团队修复缺陷和解决问题。
▲ 图9 MeterSphere的接口和场景数量统计仪表板
在使用了MeterSphere持续测试平台后,众乐邦的测试团队提升了测试效率,缩短了项目的测试周期,成功解决了一系列过去测试工作中的疑难问题。
结合目前的业务需求和未来规划,众乐邦的测试团队希望MeterSphere平台在未来能够实现更多场景的优化和自动化。例如优化异步接口测试,实现更智能的场景执行和结果判断;提升操作效率,支持多选接口批量拖拽至当前场景;扩展数据统计和报表功能,满足不同角色对测试进度和质量的跟踪需求等,以进一步提高测试质量和加速项目交付。