开发改了接口,经常忘通知测试,有什么好的解决方案吗?

liam
• 阅读 840

不知道大家有没有同感,做接口测试麻烦的不是测试本身,而是接口它会变,更麻烦的不是接口变了,而是它变了而你不知道。等到你测完,开发才悠悠跟你说——“那个接口我改了点东西,你再看一眼哈”。

我那是看一眼的工作量吗? 我得review一遍看影响到哪些接口,再根据影响到的接口,查看并修改对应的接口用例,调用链下游的用例,该改的改,改完再跑一次接口测试。

——这意味着已经做完的工作又要来推翻重来一遍,我本来已经干完活儿悠哉摸鱼了,现在得加班了,我那40米大刀已经举起来你看到了没?

吐槽归吐槽,但人真的不是精密的机器没法保证一直不出错。即便我们组内“服务好下游,承接好上游,不拖后腿,不坑队友”已经是共识了,在彼此工作量巨大的前提下,真的很难不会有沟通不及时、不到位的情况。 何况即便即时通知了,变更仍旧会给测试带来不少的返工工作量。

有没有一种可能接口被改了测试能及时同步到数据,不用自己去扒拉新的接口文档?
有没有一种可能接口改了用例也能顺便帮我一起改了,再顺便告知我有哪些地方需要调整的我再精准调整?

大佬有了idea会自己造轮子,而我,我会找现成的轮子。 比对了几款国内外的接口测试和管理工具,目前最符合这个需求的是一款叫Apifox的国产接口调试、测试、文档管理工具。

Apifox解决方案

捋一下当一个接口被改了,它被改动的地方可能有:

  1. 接口的入参和出参没有变化,只是接口内部的实现逻辑变化了
  2. 接口的入参被修改了,这个请求参数可能是必填的也可能是非必填的
  3. 接口的返回响应被改了

那么对应的,测试需要捋清楚自己哪些地方需要返工:

1.修改了内部逻辑的接口,用例不需要改动,只需要重新执行一遍测试
2.接口的出参入参变化导致改接口的服务受影响,相关用例也需同步调整
3.各个接口间存在参数传递和调用关系,也可能受影响,用例需要排查调整

简单来说就是捋清楚哪些接口收到影响了,再去修改对应的用例。 这些工作原本需要我们手动排查的,其实可以直接利用Apifox去实现。

Apifox对此给出的解决方案是

1.当开发那改动了接口之后,测试这边一键同步,能直接同步到最新的接口文档
2.设置接口用例与接口绑定,当接口的请求参数和响应参数发生变化,接口用例也会同步更新到最新的接口数据,不需要人工修改接口用例
3.一键回放接口用例,对比返回的结果,如果报错或者返回的数据结构不对应,则告警;
4.接口设计时可以对返回响应进行约束,用例设计时也可以对接口返回进行断言,当接口响应发生变化,执行自动化接口测试会针对错误的地方给出提示。

以上都依托于Apifox的自动化测试功能,用Apifox怎么做自动化测试,大家可以去官网搜一下相关教程,我重点会放在“接口变更”要怎么处理这部分。

用Apifox怎么处理接口变更

用Apifox处理接口变更主要依赖于它的两大功能:
1.接口变更数据同步与接口用例自动更新

接口用例是在接口的基础上,修改请求/响应字段的值保存生成的。 无论是接口的域名,路径,方法,请求参数,响应参数被修改,接口用例也能够一键步到最新的数据。 2.自动断言功能 Apifox的自动断言功能不需要写脚本,对Python或js不熟悉也可以直接通过可视化界面填写参数。 在生成的接口用例中,选择后置操作tab/断言;填写你要断言的对象,提取响应里的目标参数,并设置判断规则,校验实际返回与期望返回是否与预期一致。 提取参数时通过json path表达式提取的,具体规则可以看下这个使用文档:https://www.apifox.cn/help/reference/json-path/

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

3.响应参数数据结构自动校验 在接口tab,响应模块/高级设置 中,会对响应字段的数据结构和范围进行约束,针对数据类型/范围变更,可以检测到。

接口用例会自动同步修改的数据

找个项目举例子,在这个项目里已经保存了接口和生成了对应的用例。 但后来由于项目需求变更,在接口的请求参数中增加了宠物名称。 则此时对应的接口用例也会同步并增加此项接口请求参数。 开发改了接口,经常忘通知测试,有什么好的解决方案吗? 接口用例中已经自动增加了改请求参数 开发改了接口,经常忘通知测试,有什么好的解决方案吗?

接口代码实现逻辑修改

如果接口内部代码实现逻辑变更,接口的入参和出参没有变化,那么只要回归接口用例,覆盖到被修改的接口即可。

每次跑自动化测试,Apifox都能自动生成测试报告并保存下来,只要划定受影响接口,比对两次自动化测试的结果,就能排查接口修改是否影响到服务的功能

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

接口参数修改

接口的参数变化可分为接口请求参数变化或者接口响应参数变化。

1)当接口请求参数增加或减少了必填参数,接口用例能同步过来,但是参数为空的,用例一执行就会报错,此时可根据报错针对性修改。

2)针对接口响应参数的变化,对于重要的响应参数,比如说下个接口要调用到的参数,可在用例的后置脚本中增加对这个参数的断言

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

接口没有变更的情况下,会提示正常 开发改了接口,经常忘通知测试,有什么好的解决方案吗? 一旦该参数被删除,则会提示断言结果会提示异常

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

3.针对返回参数数据结构类型的约束,可对返回的数据类型和数据范围进行约束。一旦返回数据类型发生变化,接口断言直接提示错误。 开发改了接口,经常忘通知测试,有什么好的解决方案吗?

可直接在在接口tab的返回参数上选择数据类型,接着点击右侧的设置按钮,可对数据的具体范围进行约束

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

接着再设置该参数对应的数据范围约束

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

Apifox 下载

下载地址:www.apifox.cn

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
3年前
Mybatis Plus代码方式实现多表关联查询
 Mapper接口如下:例1@Select("SELECTt\_question.\,t\_student.\name\FROMt\_question,t\_studentWHEREt\_question.student\_idt\_student.id")List<QuestionStudentVOgetQ
Stella981 Stella981
3年前
Python接口自动化实战(第二阶段)
1.unitttest简介为什么要使用unittest?前面我们已经写代码实现了注册接口的处理调用,但是一个接口往往需要多条测试用例才能完整的覆盖到每一种情况,针对于单接口多条测试用例需要执行的情况,我们该如何处理呢?在unittest的测试类中定义多个测试方法来完成测试,这可能是大家最先想到的一个解决方法,
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Stella981 Stella981
3年前
SpringBoot开发案例之整合Dubbo提供者(二)
!00.jpg(https://blog.52itstyle.com/usr/uploads/2017/07/1329278006.jpg)大家有没有注意到,上一篇中提供者,暴露接口的方式?混搭。springboot本身接口实现使用了注解的方式,而Dubbo暴露接口使用的是配置文件的实现方式,即如下:代码importorg.s
Easter79 Easter79
3年前
SpringBoot开发案例之整合Dubbo提供者(二)
!00.jpg(https://blog.52itstyle.com/usr/uploads/2017/07/1329278006.jpg)大家有没有注意到,上一篇中提供者,暴露接口的方式?混搭。springboot本身接口实现使用了注解的方式,而Dubbo暴露接口使用的是配置文件的实现方式,即如下:代码importorg.s
Stella981 Stella981
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
API 小达人 API 小达人
1年前
Eolink Apikit 快速发起 API 测试,一键生成测试数据
我们在测试接口时,通常需要先创建API文档,再根据API文档生成测试用例。未创建该接口文档,仅临时调试接口,EolinkApikit支持创建API快速测试页面,输入接口相关的信息即可进行快速测试。EolinkApikit支持操作数据库,API测试时,可以一键生成测试请求数据。这可以减少数据输入步骤,提高调试接口效率。
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这