序言
文旨在为微服务架构的开发和测试者提供一种提高沟通协作的参考方法,主要涵盖系统设计思路和工具搭建。
鉴于微服务架构开发和测试的复杂性,我们将基于开发本地环境调度自动化脚本运行的自测方法,分三期进行讲解:
- 第一期:基于开发本地环境调度自动化脚本运行的自测方法综述(本期内容)。
- 第二期:基于开发本地环境调度自动化脚本运行的微服务架构设计。
- 第三期:基于开发本地环境调度自动化脚本运行的脚本调度系统设计。
1 背景
在讨论自测方法之前,我们需要回顾传统项目研发流程中开发和测试的协作方式:
通过上图,典型研发流程可以看出,提高项目效率的关键在于减少以下两个循环的次数:
- 开发–测试–修复循环:提测—测试—提Bug—修复Bug—再次提测。
- 测试脚本循环:测试—修复脚本Bug—重新测试。
减少这些循环次数的核心在于提升以下两个关键点:
- 开发提测质量。
- 测试脚本质量。
1.1 自测的重要性
一般开发的传统做法是会通过一些测试工具(比如postman,soapUI等)进行简单的自我验证;或写一些单元测试脚本。这些传统的自测的结果往往不尽人意,经常测试一开始测试都会被一些bug阻塞测试进程;
一般测试的传统做法是运用繁琐的Mock方式,或者等待开发发布代码之后,直接利用测试难看环境来调试脚本。这样往往耽搁测试人员真正测试的时间,项目质量会出现一定的风险和问题。
传统方法中,开发和测试的自测能力决定了提测质量和测试效率,但现有实践存在诸多问题:
开发自测问题
- 单元测试增加开发时间成本。
- 手动操作繁琐:接口字段多,手动复制费时费力。
- 数据依赖缺失:接口相互依赖,缺少完整数据流时自测困难。
- 验证效率低:修复问题需通过复杂的发布流程。
测试自测问题
- Mock 数据维护复杂:开发代码未发布时需要 Mock 数据,发布后需要移除。
- 断言错误频繁:开发代码与设计文档不一致时,脚本字段错误导致反复修改。
- 测试时间被脚本调试占用:降低了发现 Bug 的效率,增加了项目延期风险
从图中还可以看出,传统项目流程中,开发的设计编码和测试的设计编码是2条独立的生产线,没有交集!缺乏交集。这种隔离降低了协作效率,增加了项目风险。
我们再深入思考一下,开发和测试遇到的具体障碍,可以怎么解决?有什么又快又省事的方法吗?答案是肯定有的。
当开发者在根据自己的接口设计进行代码开发的过程时,测试者也正在依据开发的接口设计和需求进行脚本编写,开发者和测试者之间缺乏一个桥梁,让他们开发者的本地代码和测试脚本建立关联关系,互相借用,提高彼此的工作效率。乃至提升整个软件项目的交互效率和质量。
这个桥梁就是我们的基于开发本地环境调度自动化脚本运行的双向自测!
2 自测搭建设计
为了让开发者和测试者更高效地协作,我们提出了一种基于开发本地环境调度自动化脚本运行的自测方法,实现双方资源共享和工作效率提升。
2.1 微服务架构与脚本调度系统传统协作
2.1.1 微服务架构数据流向
在微服务架构中,服务之间的数据流动如下:
- 请求:前端发起请求,依次流转到模块 A ——> 模块 B ——> 模块 C。
- 响应:模块 C 返回结果,依次回流到模块 B ——> 模块 A ——> 前端
2.1.2 测试脚本调度系统
脚本调度系统一般具有以下功能:
- 对接编写好的测试脚本。
- 创建测试计划,灵活筛选测试脚本并设置执行顺序。
- 对接测试环境运行脚本,并查看运行结果
2.1.3 微服务架构与脚本调度系统传统协作
在脚本调度系统,一个基于脚本向服务器发起的https/http请求和响应的流程:
2.1.4 传统协作中的问题
在传统协作中,脚本请求仅限于测试环境。开发者和测试者之间缺乏直接交互,导致效率低下。
2.2 微服务架构与脚本调度系统升级协作方式
我们如何才能让脚本调度系统里的测试计划(测试脚本)既能在测试环境里自由的进行数据流流转,又可以自由的在开发本地环境和测试环境之间自由进行数据流流转呢?
我们设计了一种升级机制,支持脚本调度系统在本地环境和测试环境之间灵活切换数据流:
- 标记机制:通过测试计划中的启动标记,将脚本请求定向到开发本地环境或测试环境。
- 数据流动态切换:标记机制使得数据流在本地和测试环境间自由流转。
设计思路如下:
- 启动标记的脚本请求优先传输到本地环境。
- 未启动标记的脚本请求传输到测试环境。
这种设计让开发和测试能够高效协作,快速定位和修复问题,实现质量“左移”。
如图所示:
3 结语
通过基于开发本地环境调度自动化脚本运行的自测方法,开发者和测试者可以实时完成代码自测与脚本调试,无需繁琐的发布流程。这种方法有效提升了代码质量和协作效率,实现了资源的充分复用。
这种方法的核心价值在于:
- 简化流程:开发与测试可快速迭代,显著缩短问题定位与修复时间。
- 增强协作:开发与测试之间建立了直接的桥梁,促进了协作效率。
- 提升质量:在开发阶段实现质量“左移”,减少后续测试和维护的工作量。
如果本方法对您有所启发,请期待我们接下来的详细介绍:
- 第二期:基于开发本地环境调度自动化脚本运行的微服务架构设计。
- 第三期:基于开发本地环境调度自动化脚本运行的脚本调度系统设计。