前言
本篇文章主要适用项目部署,存在生产&灰度环境用同一数据库,项目代码不同,数据一致,并且有些数据问题只有在实际生产环境中数据会更明显。
本测试方案,比较适用如迭代更新后,回归报表数据返回值,功能接口数据查询等场景,如果项目中可做到生产库,测试数据隔离的项目,写数据接口也可以尝试。
项目中可解决的问题
开发在需求迭代中,修改接口返回值未通知或者因为修改父方法,导致原正常接口(未在本次版本迭代的功能)数据返回出错,更新上线之后商家反馈、投诉。
测试难点
- 因不在此次版本功能范围内,测试同学也不会重点关注相关功能,很难对该种问题做出预判。
- 特别生产或灰度环境中,更新时间有限,测试回归过程中,功能页面测试,不能完全兼顾到每个页面数据准性,更多的时间是验证本次版本迭代功能。
达到效果
- 回归到未修改接口新版本返回结果是否与生产环境一致。
- 验证此次版本修改的接口,可以在灰度环境重点进行功能回归验证。
- 通过接口对比测试,还可以发现其他接口报错,比如401、超时等其它情况。
- 提高灰度环境回归测试效率,不在依靠单纯页面功能测试一种方式。
不完善地方
- 接口返回值对比不一致时,目前的脚本,只能输出response,无法展示出哪些字段不一致,可以通过对比工具手动验证数据,在针对性测试具体功能。
说明:不完善的地方,可以续继续研究比如通过编写脚本实现。
关于接口测试工具选型
过去常用postman(国外开源),功能比较全,同样可以解决以上问题(实现原理都是一样的),查资料时看到Apifox(国内软件)比较好用,整体接口测试流程跑通过程中,公共参数设置,以及接口用例编写生成,测试报告等,都比较符合项目中的场景,更符合实际项目中测试使用,用起来比较方便。
具体使用操作以及其他功能的扩展,可以自行完善学习,如果觉得可以运用到项目中,一起研究实践更多方案。
apifox官网地址:
操作流程
- 创建、调通接口(可谷歌浏览器抓取接口\swagger导入\postman代理抓取导入Apifox)
2.设置“后置操作”脚本实现,第1次调用prod环境接口获取response值存储到公共参数中,第2次灰度环境接口,获取公共参数response值,并进行对比判断。
3.公共脚本设置
脚本1:
pm.environment.set("data",responseBody);
脚本2:
ar data = pm.environment.get("data");
if(responseBody == data){
tests["与Prod接口数据返回一致!"]= responseBody == data;
}else{
tests["与Prod接口数据返回不一致!请注意验证!"] = responseBody == data;
pm.test(pm.response.text());
}
4.创建测试环境,用于保存公共参数,测试环境地址等;
公共参数,测试环境地址
全局参数header设置,使用该环境的接口会默认全局header,非常方便后续统一改Authorization,防止过期不能使用。
5.自动化测试,导入用例,执行用例。
6.输出执行结果,可导出测试结果
7.失败的情况