前言
前两篇文章简要说明了接口diff的来龙去脉,如下
今天我们介绍一下接口diff的框架实现和项目中实际的运行效果!
框架思路
接口Diff测试和接口自动化用的就是同一套框架。区别在于,Diff测试需要同时向两套环境发相同的接口请求,拿到返回后进行比较(上图中的“主要函数:接口diff模块”就是实现比较功能的),最后以Alluer报告的形式展示结果。
实现细节
项目的目录结构
- 结构图
common—基础类(Base) config—文件路径配置信息 data–接口请求数据(接口返回数据存放 – 目前存放在json文件中) logs--项目日志文件 testCase—pytest组织的接口CASE report—测试报告存放 utils—工具、公用方法存放
测试报告展示
测试用例组织
测试用例说明
- 建议每个场景页单独一个.py文件,这样根据特定场景方便维护代码
- 用例区分了小说前端和小说后端,所有的接口返回数据都存放在:
- interfaceDiffTest\data\apiResonse.json(前端接口返回数据)
- interfaceDiffTest\data\backgroundMsg.json(后端接口返回数据)
「后期全部迁移到本地mysql数据库中维护(方便查阅)」
- Diff测试有一项重要的工作就是两个接口返回值的比对,现在多数http接口数据格式都采用json。
项目经验
- diff的关键问题,在于接口的覆盖度。因而应用diff进行测试时,最好由QA来控制接口的录入,减少接口遗漏的可能性。
- diff与传统的接口测试方法(手工检查接口/专门写自动机脚本检查)相辅相成,补充了传统方法的不足。
- diff测试对“读”接口可以很好的回归测试,但对“写”接口可能仍然需要传统的测试方法辅助。
持续集成
「当开发提测时,可以根据接口diff筛选出相关联自动化用例,与CI相结合,达到精简用例,减少执行时间,同时减少不必要的用例执行,进而提升CI稳定性,减少CI维护排查代价。」
1. 浏览器打开网址:http://xxxxx.com:8080/job/api_diff
- 如果需要登录,账户名和密码都是 admin
- 点击立即构建:
- 跑完后,点击Alluer 查看最终报告
下集预告
- 接口diff模块核心代码解析