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

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

 

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

我那是看一眼的工作量吗? 我得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表达式提取的,具体规则可以看下这个使用文档:JSON Path 介绍 | Apifox 使用文档

    1.png

    image.gif

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

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

    找个项目举例子,在这个项目里已经保存了接口和生成了对应的用例。 但后来由于项目需求变更,在接口的请求参数中增加了宠物名称。 则此时对应的接口用例也会同步并增加此项接口请求参数。

    2.png

    image.gif

    接口用例中已经自动增加了改请求参数

    3.png

    接口代码实现逻辑修改

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

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

    4.png

    image.gif

    接口参数修改

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

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

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

    5.png

    image.gif

    接口没有变更的情况下,会提示正常

    6.png

    image.gif

    一旦该参数被删除,则会提示断言结果会提示异常

    7.png

    image.gif

    3.针对返回参数数据结构类型的约束,可对返回的数据类型和数据范围进行约束。一旦返回数据类型发生变化,接口断言直接提示错误。

    8.3.png

    image.gif

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

    9.png


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

    10.png

    image.gif11.png

    Apifox 下载

    下载地址:www.apifox.cn

    相关文章
    |
    21天前
    |
    移动开发 JSON Java
    Jmeter实现WebSocket协议的接口测试方法
    WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
    98 7
    Jmeter实现WebSocket协议的接口测试方法
    |
    21天前
    |
    JSON 移动开发 监控
    快速上手|HTTP 接口功能自动化测试
    HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
    97 3
    快速上手|HTTP 接口功能自动化测试
    |
    8天前
    |
    测试技术 持续交付 UED
    软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
    软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
    26 1
    |
    21天前
    |
    JavaScript 前端开发 测试技术
    ChatGPT与接口测试
    ChatGPT与接口测试,测试通过
    31 5
    |
    6天前
    |
    测试技术 UED 开发者
    软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
    本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
    |
    2月前
    |
    网络协议 测试技术 网络安全
    Python进行Socket接口测试的实现
    在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
    |
    2月前
    |
    测试技术 C# 开发者
    “代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
    【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
    30 0
    |
    2月前
    |
    网络协议 测试技术 网络安全
    Python进行Socket接口测试的实现
    在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
    |
    2月前
    |
    SQL Java 测试技术
    SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
    SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
    |
    3月前
    |
    存储
    Postman 接口测试配置 Pre-request Script
    Postman 接口测试配置 Pre-request Script
    128 5
    Postman 接口测试配置 Pre-request Script
    下一篇
    无影云桌面