接口测试 开发增加或者修改接口后,测试如何第一时间感知?

树叶 · 2022年02月17日 · 最后由 树叶 回复于 2022年03月29日 · 5973 次阅读

我们在做接口测试过程中,一般会有个 swagger 或者 yapi 文档,然后去逐个覆盖测试。

当完成覆盖测试以后,如果开发修改了某个接口的参数(非必填参数,所以之前的接口测试用例不一定报错),测试人员如何才能得知开发改了这个接口呢?

另外,如果开发新增了接口,是如何通知测试人员的?邮件?或者 confuluence 文档?

有没有一种比较一目了然的方法,直接知道开发修改了哪些接口以及新增了哪些接口?

求大佬们指点,不甚感激!

共收到 11 条回复 时间 点赞

swagger 或 yapi 文档可以有一个版本的概念,两个版本可以做一下 diff,以自己需要的方式展示出差异,以此来确定哪些测试需要调整

改接口几种情况:
1.加必传参数,自动化脚本构建的报错就知道了
2.删除无用参数,脚本跑不出来,你多传了也不影响,不影响业务
3.逻辑变更,脚本报错 -> 排查问题 -> 发现问题 -> 修复脚本

刚做完,通知效果有水印,就不放了,这个是流程

我发现就算是能生成 swagger 文档,有一些语言框架的实现,也是靠开发同事手动在代码里写注释的 (比如我遇到的 go 语言 gin 框架)。

我感觉最好的方法就是拿到代码库权限,看开发代码 commit 记录 (走读基本的业务代码不难的)。

不知道大佬们有没有其他更好的方法。

伍个一 回复

你这个核心还是 接口文档的 diff

Ngwind 回复

不知道你们公司开发测试比例是多少。。。我们 10:1,如果 10 个开发每人提交多个 commit,1 个测试 看的话有点困难,而且不够直观

7楼 已删除

说下我的做法:

  1. 记录每个接口上次正常运行的结果(主要是入参和出参的数据结构)
  2. 定期自动回放接口,对比返回的结果,如果报错或者返回的数据结构不对应,则告警;
  3. 更新测试用例 以上步骤做成接口测试平台中的一个功能点。对于新增的接口,如果没有提测,可以不需要关注。

就问题本身而言,目前并没有很好的高效的方法。
1、3 楼 接口文档 diff 的强依赖开发提供的接口文档,一个文字的修改都可能产生消息通知,实际执行中效果并不好。
2、8 楼 @Chenkl 的方法只对出参有效,无法对入参变更进行检测

如果问题的出发点是为了获得变更,精准有效的测试:
1、开发主动 announce 告知
每个人在工作中都是一个节点,要做到 “服务好你的下游,对接好你的上游”。
一个接口无论是入参或出参有变更,或者该接口背后对应的程序代码、实现逻辑有变更,一个职业的开发 应有义务通知相关干系人;靠测试自身去 diff,去挖掘是不可取的。

2、使用发布系统
任何模块/组件的上线都需提交到发布系统(发布内容&影响范围&风险等需要有较详细说明),测试只对发布系统中提交的项目进行评估和测试。前提是公司有一套好的发布系统和流程

兔子🐰 [该话题已被删除] 中提及了此贴 02月18日 16:23

常规方案一般是根据接口文档去做 diff 判断
但是接口内部逻辑的变更没办法获取

我们现在的方案是代码调用链路分析 +git diff
(1)首先采用静态 + 动态调用链路分析获取 服务间的调用链路以及接口内部方法的调用链路
(2)服务部署后 自动获取当前部署代码和上次部署代码的差异 git diff
(3)根据代码差异中变更的内部方法 获取影响本服务的哪些接口
(4)根据服务间的接口调用关系 获取其他服务受影响的接口
(5)打通接口自动化平台,根据影响到的接口 获取涉及的接口自动化用例 推荐对应的接口自动化用例进行执行
(6)接口自动化用例执行后,获取涉及服务的代码覆盖率
(7)生成影响范围、接口自动化测试报告以及代码覆盖率报告

有一个工具····叫 Apifox(https://www.apifox.cn/
,它等于 postman+swagger+Mock+Jmeter,就你们整个团队的人都能用,一组人都是用的一套接口数据,开发在上面设计和修改接口数据,测试会收到系统通知,然后点下同步就数据同步过来了······比起一大堆技术实现方案,用现成的工具真的是最简单的······最难的部分在于····你们团队能协调沟通决定用这个工具。小兵说是没用的,至少得研发组长拍板。

树叶 #13 · 2022年03月29日 Author
LynnYang 回复

正准备试试这个,感谢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册