一、背景
当今互联网业务高速发展,无论是各行各业行业,都需要服务端来进行数据存储、逻辑处理等操作。为了更好提升用户体验、满足业务需求,最近几年服务端技术架构从传统的单体应用架构升级到微服务架构。
微服务技术每一天都在不断发展和变化,由于其易于部署和使用,它已成为各类企业级应用背后的核心服务架构。目前,微服务质量正在持续不断提高,其服务灵活性、可缩放性和可扩展性也在不断增强。
首先,微服务可以为企业提供灵活、可配置的服务架构,使企业能够更加细致地对业务进行划分,实现业务的有效集成、部署和运营。
其次,微服务架构可以支撑企业应用的可缩放性,即它可以在必要时适应可能出现的流量激增,并且提供更强大的容错性和故障转移策略,有效地确保系统的可用性。
最后,微服务可以利用容器技术来扩展和快速适应新的需求和需求,使得企业更加灵活地管理资源并提升系统整体运行效率。
但是微服务也带来了明显的缺点,比如:
微服务虽然编译得更快了,但微服务数量却翻了数倍。
微服务可以针对热点服务进行单独扩缩容,但也就需要投入更多的运维成本。
微服务进行代码变更,可能会引起上下游服务的稳定性。
等等。这也使得微服务架构在架构设计、团队协作、质量保障环节等层面引发一系列挑战。
我们知道,“越晚发现的问题,修复的成本也就越高”,所以希望在项目早期就能暴露出问题,本文从质量保障的角度来思考如何高质量保障微服务质量。
行业内按照层级分类的方式将测试分为:单元、接口和 UI 三个层级,而各层的产出/投入比可以形象的表述为测试金字塔,越往上层,其维护成本越高收益越小。
总的来说,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益驱动作用下的最佳方案:
1、低投入,高产出
2、容易实现自动化
3、相比 UI 自动化测试更加稳定
但是,如何做好一个接口自动化测试项目呢?我认为,一个 “好的” 自动化测试项目,需要从 “时间”、“人力”、“收益” 这三个方面出发。
如何控制投入成本?有两个方面:控制工具开发成本和测试用例编写的成本。一款优秀的接口自动化测试工具需要满足不同的用户群体的的诉求,例如:
如何控制投入成本?有几个方面:人员团队管理、团队协作、工具能力
从人员管理/团队协作上:
测试报告发送到邮箱、实时通讯工具等等
关联研发的 API 接口改动变更通知
从工具能力上:
1、单接口自动化测试
2、批量接口自动化测试
3、定时自动化测试
4、数据库交互操作
DevOps 自动化流水线测试
但是需要投入较多的工具开发成本,我们可以使用市面上的测试工具帮我们完成日常工作。
本文介绍下最近调研过的 API 管理与测试一体化工具 Eolink,是如何满足复杂的接口自动化测试多场景实践的。
二、单自动化接口测试
1、为了编写测试用例更灵活,可以在接口请求之前或者接口请求之后进行参数修改,可以用到前置脚本或者后置脚本功能。比较常见的场景是在获取接口响应结果之后,对接口请求参数进行编码操作,可以提高参数传递的安全性和隐私性。
let info = eo.http.response.get();
let base64Info = eo.base64.encode(info) // Base64 编码
eo.info(base64Info);
点击执行测试用例完成后,可以在自定义输出信息区域看到,刚才执行 base64 操作的加密参数。
2、对于两个有业务关联的接口往往是需要参数关联的,依赖上一个接口返回数据作为当前接口的请求参数。
在第一个接口中的后置脚本中获取响应结果后,可以设置项目变量和设置全局变量,两者的区别是一个在项当前项目中有效,后者是在所有项目中有效。
在第二个接口中的前置脚本中通过 eo.env.param 获取项目变量并且设置到当前请求的请求 query 参数中
let requestBase64 = eo.env.param.get("base64Info-project"); // 获取项目变量
eo.http.query.set("base64Info",requestBase64) // 设置请求query参数
三、多自动化接口测试
我们先来看下如何设计接口测试的测试方案,在如下图中可以看到,在保障单接口测试通过的前提下,还需要结合业务场景进行多接口自动化测试。
在 API 自动化测试中选择用例页面,可以看到有很多条测试用例,当服务端代码有变更部署的时候,可以使用批量执行用例功能,便捷实现多场景回归测试,提供测试效率。
1、具体操作,首先需要在测试用例列表中选择批量操作。
2、勾选需要批量执行的测试用例,测试用例直接可以共享 Cooikes 参数,便于有些需要鉴权的接口和便于接口之间的参数共享。在执行策略上可以设置串行执行和并发执行,串行执行是每个接口按照排列顺序一条条执行,适用于强依赖业务流程的场景中,并发执行是多条测试用例一起执行,执行速度会相对快一些。
3、批量请求完接口后,可以看到最近测试结果、测试执行执行时间,点击下载报告可以查看本次的执行结果。
四、定时 API 自动化执行
但是在 Eolink 中可以使用 API 管理中导入历史录入的 API 信息,如果没有的话再使用手动创建监控 API。
如下图,可以点击从 API 管理导入按钮,在项目列表中可以选择历史创建的项目并且选择要监控的接口即可。
1、但是在 Eolink 中不需要这么干,因为 Eolink 定位是一站式 API 管理平台,其内置了接口监控功能。Eolink 实现的监控节点,并不是在本地进行监控,而是使用云监控方案,采用全国各地的监控节点,这样的优点是,可以覆盖全国的网络节点,提前发现接口在某些区域网络下可能存在的问题。
2、编写接口监控 Case: 在传统方案中,需要熟悉代码语言和框架才能上手编写接口监控 Case,有一定的学习成本。但是在 Eolink 的学习成本基本上是零,在页面上输入参数即可。
另外 Eolink 支持单 API 监控和 API 流程监控,单 API 监控是指一个接口发送请求完成就可以结束了,API 流程监控是把某些接口串联起来,比如从商品浏览 > 下单 > 支付等串联业务。
3、接下来我们看看 Eolink 是如何完成编写接口 Case 的,首先需要选择 API 流程监控,点击从 API 文档导入测试信息。
在导入 API 信息中,选择需要的业务接口。
4、在执行步骤中可以看到刚才添加的测试步骤,从而形成一个 API 流程监控。这个功能比较适合后台功能模块和业务管理较强的接口。
5、调试监控脚本: 在传统方案中,调试脚本需要在本地执行脚本命令。在 Eolink 中只需要在页面中选择需要监控的接口,并且点击编辑按钮即可。
可以修改 API 监控的基础信息包括:API 请求地址、API 分组、API 名称、API 监控的项目环境等。
结果校验规则: API 测试用例支持 5 种校验方式:
6、定时监控: 在传统方案中,需要借助 Jenkins 外部工具进行定时监控。在 Eolink 中在可以在本地创建监控任务,然后把任务发送到云端进行定时监控。
选择一个需要监控的接口,把监控频率选择 10 分钟一次,监控频率可以根据业务需要自行调整。
7、你可以在接口监控报告页面看到当前项目在选定的时间段内的整体监控概况,包括:所有监控节点(地区)的监控状态、指定监控节点(地区)的监控状态、API 监控状态统计等。
进入 API 的监控详情页,选择时间段为 实时,此时页面会显示该 API 最新一次的监控报告,可以看到 API 最新一次请求的各阶段时间分析:总时间、重定向时间等。
进入测试报告页面,在这里会列出所有手动批量测试、定时测试、Open api 测试的测试报告。你可以点击下载按钮,将某次测试历史下载为 HTML 文件。测试报告的 HTML 文件中会详细记录该次测试报告的所有信息。
五、小结
可以看出 eolink 在接口自动化测试多场景的支持能力很强,本文就先介绍到这里,更高阶的功能会在下篇继续介绍,欢迎大家持续关注~
如果大家觉得有帮助,可以关注下方微信公众号,里边有更多的技术文档和面试技巧~