微服务的流程自动化测试设计 | 叶婉婷

本文涉及的产品
MSE Nacos 企业版免费试用,1600元额度,限量50份
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: 测试人员在流程微服务中如何简单高效完成开发测试任务?本期中,讲师将结合自身流程平台自动化测试实践的经验,梳理出在微服务架构的数字化企业云平台中,该如何完成流程微服务的自动化测试,并且提供高质量的上线保障。
3668e0f9d20a9122f0629ac2a3aafd53d2e84a37
大家好,我是来自普元的叶婉婷。今天由我来和中生代技术的朋友分享一下流程微服务的自动化测试。 f4d5df347258c5d869ec872fc6eb76806d4f006b首先,我给大家分享一下普元多年实践的自动化测试过程与方法; 2433a826c05a7f1441873229863720f41a5b8c5d阐述一下我们的测试理念:测试一切、测试驱动开发、测试自动化; 1)测试一切文档、配置、环境、发布包,一切皆代码,这个很好理解,我不再赘述; 2)测试驱动开发测试提前,敏捷协作,测试用例同步开发; 3)测试自动化多种测试技术能力、组件化开发、统一管理,不间断测试执行;为了实现测试驱动开发、测试自动化,我们认为需要以下四个要素: 1)敏捷协作的过程; 2)测试设计方法; 3)全栈测试团队; 4)自动化测试服务; 52179bb78f95ea7b01ad87f7752a3fd2623335bc
普元多年来在产品研发过程中,一直践行敏捷协作的RDT过程,在新一代云平台项目中,我们分为若干RDT小团队,每个团队负责一个或多个领域系统,以实现不同的用户场景;在每个RDT小团队中,采用需求、开发、测试协同并行工作模式;随着产品需要在公有云上部署运维,我们做了一些改进,运维组参与分析用户场景、需求设计测试评审、反馈运维遇到的问题,而且,运维组自身也作为RDT团队直接负责统一监控中心的需求定义和设计开发; 6b47f73c983ace2da1e437411e1e63837bdb30cd那么为什么在敏捷协作的过程中,就能将测试尽量提前呢?从上面过程中我们可以看到,在计划阶段,每个RDT团队对用户场景都有了统一认识,那么在接下来的每个迭代开发中,定义需求规格、设计概念模型/原型界面/API定义/数据模型的同时,测试可以并行进行测试对象分析、测试点分析、测试数据和测试组件设计,并且强调RDT的相互评审;基于这些成果,开发进行编码的同时,测试就可以并行进行测试用例的开发,并且测试用例开始不间断的执行,自动化测试相比传统开发过程大大提前,通过测试尽量提前达到测试驱动开发的目标; 090576ce1df3030c0df14d5c80363bbbedfbdf5a自动化测试毕竟不同于手工用例,我们从四个方面定义了自动化测试的设计原则与方法: 1)易管理性统一规划、统一版本控制的规范要求; 2)易实现性采用分层设计,测试基础服务层、测试能力支撑层、测试组件层、测试用例 层,支持多种技术的测试能力,测试组件复用,用例专注业务逻辑; 3)易维护性组件与用例分离、区分变化与不变、测试用例原则上不互相依赖、测试数据 容易维护; 4)易定位性测试用例独立、低复杂度、要求断言信息的准确性; 5e9ab8900d2bd76148ecd0fb49683b0b545eaa7f自动化测试分层设计对测试团队提出了更高的要求,也就是要求我们必须成为全栈测试团队,具备各层的能力:测试架构师负责总体设计、测试基础服务层,提供统一管理、统一调度的能力;领域技术专家负责测试能力支撑层,对各领域测试技术进行分析和选型,提供测试服务能力以及基础的技术组件;测试专家负责指导测试开发工程师进行测试方案设计、测试组件和用例的实现; b64389ce25b60e90784bb61728946b5395a6b951除了过程、方法、团队,自动化测试的落地最终还是需要依赖各种自动化测试服务的实现,我们也一直在做这方面的努力,并形成了产品化的自动化测试服务能力;除测试基础服务以外,我们没有选择从零开始,而是评估并引入好的开源技术和公司内部其他产品的可用技术,按照我们的自动化测试设计原则和方法进行相应的改造;比如WebUI测试服务,我们选用了Selenium,为了适应我们的用例开发规范和易用性,我们对其接口进行了重新封装,形成我们的WebUI基础组件库;比如CI工具Jenkins1.x,由于我们产品多、每个产品版本也多,使用时间久了之后其任务管理界面简直就是灾难,任务的调用关系也非常不直观、难以维护,所以我们扩展实现了持续集成项目管理、图形化的持续集成任务流管理,以适应我们的需要;另外,像用例开发/调试,除了支持Java以外,我们还复用了普元的逻辑流图形化开发能力、组件库可视化管理能力,用例开发效率更高、更易维护; a688a8bac537f2ee34689365adc71e273c8acacb在企业级应用中,流程服务的测试一直面临诸多的问题,诸如:— 系统内部任何一个微小的变化,要上线测试;— 外部关联系统变化,引起的业务验证测试;— 如果流程作为一个公共的服务,一旦服务升级,所有业务系统都会有影响,所有业务系统全部都要验证。这些都会给测试造成巨大的工作量,不仅消耗过多的时间,还无法很好的保证质量。当这些问题投射到云环境与分布式架构中,所面临的复杂度与解决难度的升级不言而喻。 179ad43680f61b005b8e5b89f9d18d4851d6ae87如图所示,在基于微服务架构的数字化企业云平台中,流程是一类重要的微服务。我们正在尝试将流程微服务的测试自动化,并由DevOps平台高效的验证微服务的改变是否影响原先的业务,从而提供高质量的上线保障,让测试人员告别那些让人生无可恋的重复性操作。 5a86a1ef61f49affa34213a37e6ae61c275e4b21基于微服务的自动化测试的本质是通过数据的录制记录既有的测试过程,并通过案例固化过程中的全部测试数据,最终通过对案例的调用回放完成流程微服务测试的自动化。 572bc49002cfc57e8474f4fcc998070bd5d164cf流程微服务的自动化测试并非完全脱离手工测试,这里的自动化是建立初次手工测试的基础上的。第一次手工测试会在数据库中记录下所有的测试信息,我们将收集这些信息录制形成测试数据文件,根据每条流程实例录制一个测试数据文件。每个文件中包含:该流程实例运行过程中的所有相应请求/相应报文,该流程实例运行过程中的上下文变化,该流程实例的流转路径(活动+连线),该流程实例包含的子流程实例。 567b140afbed13978b42502a4bc21fa343d1dbdc在流程微服务的自动化测试里,我们会根据实际的接口调用来设计多个组件,这些组件放置于一个测试组件微服务中提供给测试人员使用,每个简单的组件都对应一个接口的请求报文。这就犹如搭积木,每个积木是一个简单的接口报文,多个积木搭在一起形成一个房子,即多个接口报文固定调用形成一个复杂组件。多个房子、花坛、汽车形成一个小镇,即多个简单组件和复杂组件结合在一起生成的最终一个“流程实例的自动化测试”案例。有了之前收集的数据文件,就是根据每个数据文件,选择积木的问题了,再根据数据文件给每个组件添加必要的参数,这样就形成了测试案例。在案例生成的过程中测试人员不需要编写任何代码! df140c9304297df39009d2fc66db9a56a75e2b89我们将统一测试平台门户设计为一类领域系统,可以上传我们的测试案例部署,选择案例点击执行即可。每个案例的运行其实就是相应手工测试的一次回放。案例执行完成会形成详细的测试报告,包含了成功、错误、异常的详细信息,案例统计图,以及案例执行时间。清晰明了地达成便捷测试。 f6876ba7d719172168848a8e23e237d08ef345c2 3f19f34e9c11a280c5db1800a39ac6e88ef9017c
流程微服务有时也会和其他微服务之间通信,往往测试环境中无法与其他微服务直接交互,这时候我们为了模拟流程微服务引擎与其他微服务交互过程,提供了一个服务挡板功能,服务挡板也是设计中的数字化企业云平台的一类领域系统,由api mock提供挡板能力,即用服务挡板替代生产上的微服务。(未来我们会详细介绍api mock相对于传统mock的优势) cafeb59948ba9ef7e97edf644082e21d66dac417当自动化测试进行到其他微服务交互时,流程微服务引擎向挡板发起请求,挡板响应请求,并动态拼写回调报文,当所有的回调报文完成之后,挡板通知测试引擎,测试引擎向流程引擎发送回调报文。 b1175ea3251702c595247f9cf50bdfc7c37f8649
对于测试案例,不仅需要模拟流程流转的服务接口过程,还需要验证流转过程中的参数正确性,所以需要验证组件来完成参数的确认。 1e2358315a96bb7f69cfd7a25e7391c4a38dbd3c
  • - 对比服务接口返回报文信息是否一致;
  • - 一个活动完成后循环等待后继活动是否激活;
  • - 一个活动完成后对比当前后继活动与历史测试数据中后继活动是否一致;
  • - 一个活动激活后对比当前活动产生的连线是否与历史测试数据中连线信息一致;
  • - 每当一个可能引起上下文改变的服务接口完成后,对比当前流程实例与历史测试数据中的上下文是否一致。
88a7eeb4a6875a3f3d63ad36f50629f201a56725
最后总结回顾一下,我们的测试理念:测试一切、测试驱动开发、测试自动化,以及为了实现这三点所需的四个要素:敏捷协作的过程、测试设计方法、全栈测试团队、自动化测试服务。有了适合自己的过程、方法、团队、工具的保障,自动化测试的实践自然能够水到渠成。以上就是本次分享的全部内容,感谢大家。

Q&A

Q1:自动化测试在非微服务架构和微服务架构的本质区别是?

A1 微服务自动化测试重要的一点就是服务间的交互。我们提供mock组件来模拟服务间调用,而传统的整体架构没有这种问题


Q2:有没有数据支撑,做自动化的数据度量?

A2 数据支撑指的是什么?我们在项目中跑4000的用例是没有问题的


Q3:哪些场景下不应该做自动化呢?

A3 做不做自动化测试主要看你的用例数量,重复执行率,以及自动化测试难度。当你觉得测试用例少,或者难度过大的时候不建议用


Q4:数据录制是采用什么方式存储和标识的呢?如何做到后续的复用和扩展?

A4 数据录制是用数据库记录初次手工测试产生的数据,以流程实例id为标识。我们开发的工具会根据流程实例id取出这些数据形成文件,即使数据库被清,根据文件可以再次生成用例。扩展了新的服务接口我们只要开发新的组件即可。


Q5:自动化测试有压力测试的模拟吗?

A5 暂时我们没有提供压力测试的自动化测试


Q6:请问提到的中间mock组件和美团技术博客分享的mock组件类似的功能吗,可以推荐下相关的mock开源组件吗?

A6:我们这里的mock组件就是用mock server模拟数据来进行服务间调用。这个组件是我们测试组件的概念。就是自己将mock调用方法封装成的一个组件。


分享者简介:叶婉婷, 普元信息 SOA 产品部高级软件工程师,现为普元微服务应用平台项目开发团队一员。在过去的两年参与了流程平台项目,主要负责 Eclipse 插件开发及自动化测试平台开发。爱好:旅游、电影、美食、游泳。


目录
打赏
0
0
0
0
455
分享
相关文章
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
102 0
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
145 2
Function AI 工作流发布:以 AI 重塑企业流程自动化
AI工作流正重塑企业自动化流程。Function AI工作流基于函数计算FC,融合LLM、Agent等技术,实现智能任务处理与自我优化,助力企业迈向智能流程自动化,提升效率,增强响应能力。
如何让AI帮你做前端自动化测试?我们这样落地了
本文介绍了一个基于AI的UI自动化测试框架在专有云质量保障中的工程化实践。
如何让AI帮你做前端自动化测试?我们这样落地了
Function AI 工作流发布:以 AI 重塑企业流程自动化
本文介绍了基于函数计算 FC 打造的全新 Function AI 工作流服务,该服务结合 AI 技术与流程自动化,实现从传统流程自动化到智能流程自动化的跨越。文章通过内容营销素材生成、内容安全审核和泛企业 VOC 挖掘三个具体场景,展示了 Function AI 工作流的设计、配置及调试过程,并对比了其与传统流程的优势。Function AI 工作流具备可视化、智能性和可扩展性,成为企业智能化转型的重要基础设施,助力企业提升效率、降低成本并增强敏捷响应能力。
397 28
通义灵码 Agent+MCP:打造自动化菜品推荐平台,从需求到部署实现全流程创新
通过通义灵码编程智能体模式和 MCP 的集成,开发者可以高效构建在线菜品推荐网站。智能体模式大幅提升了开发效率,MCP 服务则为功能扩展提供了无限可能。
通义灵码2.5智能体模式联合MCP:打造自动化菜品推荐平台,实现从需求到部署的全流程创新
本项目利用通义灵码2.5的智能体模式与MCP服务,构建在线点餐推荐网站。基于Qwen3模型,实现从需求到代码生成的全流程自动化,集成“今天吃什么”和EdgeOne MCP服务,提供个性化推荐、偏好管理等功能。技术架构采用React/Vue.js前端与Node.js后端,结合MCP工具链简化开发。项目涵盖功能测试、部署及未来扩展方向,如餐厅推荐、语音交互等,展示高效开发与灵活扩展能力。
性能测试怎么做?方法、流程与核心要点解析
本文系统阐述了性能测试的核心方法论、实施流程、问题定位优化及报告编写规范。涵盖五大测试类型(负载验证、极限压力、基准比对、持续稳定性、弹性扩展)与七项关键指标,详解各阶段任务如需求分析、场景设计和环境搭建,并提供常见瓶颈识别与优化实战案例。最后规范测试报告内容框架与数据可视化建议,为企业级实践提出建立基线库、自动化回归和全链路压测体系等建议,助力高效开展性能测试工作。
UI自动化测试中的元素等待机制解析
在UI自动化测试中,元素定位失败常因页面存在iframe或缺乏合理等待机制。本文解析三种等待策略及其应用场景:显式等待可精确控制单个元素等待条件,支持自定义轮询;隐式等待全局生效,适合简单页面加载;强制等待仅用于临时调试,正式脚本慎用。通过对比三者执行精度、资源消耗及适用场景,帮助选择最优策略,提升测试效率与稳定性。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问