七个步骤覆盖 API 接口测试
接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。首先需要对接口测试的基本信息做一些了解:
接口测试的意义
- 低 - 低成本
因为接口的相对稳定性,不需要大量的重新编写,做好基础的维护,用例的扩充,能满足日常的使用范围
- 稳 - 相对稳定
当接口自动化创建后,可以相对稳定的运行。接口相对稳定,不会频繁更换,顶多增加字段或者新增接口(相对于UI测试来说,维护、编写成本很大,实际过程中一点点的放弃了UI自动化测试)
- 快 - 执行速度快,反馈速度快
涉及到持续集成,把接口集成到 jenkins 上,自动触发或定时任务触发,触发后就反馈结果。
测试和监控 API 对确保应用程序的功能和性能变得越来越重要,我们在本文中可以详细了解完成API 测试的操作步骤,详细信息请参照下文:
七个基本步骤
1. 了解 API 的范围
在尝试测试 API 之前,了解 API 的作用及其职责是至关重要的。此步骤应从访问 API 文档开始。应该手动对 API 端点进行一些调用,以深入了解它们的工作方式以及它们返回的数据
2. 了解用户流程
在这一步中,应该超越单个 API,查看使用它的应用程序。尝试并了解用户如何使用这些应用程序,以及它们的使用会触发哪些 API 调用。这将帮助你了解API在实际生活中使用的场景,并使你能够开发测试,以测试和验证 API 在实际生活中的使用方式。
例如,如果直接从 Web 应用程序调用 API,可以使用浏览器开发人员工具记录对 API 发出的所有请求并检查请求和响应负载。这有助于了解 API 的使用方式。

3. 编写API测试
- 测试接口选择
项目有几十个或者几百个接口。一方面,不可能对每一个接口都做自动化测试,所以要分主要接口和非主要接口;另一方面,也不是每个接口都适合做自动化测试,所有要分稳定接口和不稳定接口;还有一方面,有些接口只能调用一次,所有要分可重复执行接口和不可重复执行接口。当然其中还有其他银色影响接口的选择,要根据实际情况进行筛选,然后对接口逐步分析,来确定最后需要自动化测试的接口,做到可以在接口层面成本最大化。
- 注册接口
这是一个重要的接口,但却是不可重复执行的接口,因为同样的数据第二次是无法注册成功的,所以这个接口不适合做这类自动化。
- 登录接口
这个接口是可以重复执行的,而且相对于来说不太会随意改动的借口,所以这个接口适合做自动化。
- 用户信息查询
这个接口可以反复请求,适合做自动化。
结合自身项目并在具体的实践过程中,我们会发现大多数做自动化的接口都是查询接口,因为不涉及对数据库的改动,仅仅是查询可以重复操作的,而且返回数据也是相同的,便于对返回结果的判断验证。
4. 覆盖异常情况和边界值情况
上一节介绍 API 测试接口的选择,并验证它在“正常”使用情况下是否按预期工作。在这一步中,判断 API 在边界值和异常情况下的行为是否正确。例如:
- 是否试图让一个不存在的实体返回正确的错误代码(404 响应)?
- 如果提供了错误数据类型的参数(400 响应),API 是否会失败?
- 如果我们尝试访问我们没有权限的实体(401 响应)会发生什么?
这一步的技巧是查看HTTP 错误代码列表(尤其是 4xx 范围 - 用户错误)并尝试创建生成这些代码的场景。

5. 针对 Dev 和 Stage 环境执行测试
自动化需要一个干净的测试环境,不然很难重复运行起来。自动化测试要做到绝对只能也是不可能的,尤其运行过程中会遇到脏数据活着异常就会中断。首先需要在测试环境跑一遍正常流程,中间通过抓包获取数据信息,一方面需要确定这些数据作为自动化测试的数据基础,另一方面需要了解数据结构是什么,可能是包含列表的字典,也可能是一个纯元组。前提是可以测试通过一套流程,不然获取这些数据没有必然意义。
编写测试后,你应该能够开始在非生产环境中使用它们并看到它们通过。理想情况下,如果正确编写了测试,应该可以通过向不同环境传递不同的变量来针对不同环境执行测试。这可以帮助你开始验证 API 的开发版本。
6. 持续集成 Jenkins
Jenkins 是一个功能强大的工作,测试人员可以根据各自的测试需求灵活运用其中的部分功能。引进持续集成思想是为了帮助测试人员提高测试效率,一旦可以看到针对开发/阶段环境运行的所有测试,你就可以将它们连接到你的 CI/CD 管道,以便在你推送新代码时开始自动化测试过程。这可以通过源代码管理工具(如 GitHub 或 GitLab)或构建工具(如 Jenkins 或 CircleCI)来完成。这有助于保持测试运行并“强制”使测试保持最新,因为无法在测试失败的情况下推送代码。

7. 运行测试以监控生产环境
维护 API 测试用例的好处之一是你可以轻松地在多个环境中运行它们。具体来说,你可以在生产环境中定期运行测试以确保其按预期运行。这还可以帮助你收集有关 API 的性能数据,实时查看性能的降级或更改。

以上内容测重于对接口操作流程及一些简单操作步骤具体的作用,给出的只是借助工具对于基本操作方向性的指导,没有详细的具体实践,不过没关系呀,这都是正常的,关于如何使用/借助工作去做接口测试的方式非常多,也不是一两篇文章能够全部讲完,最重要的是先知道大概的方向,然后就去大胆实践,在做的过程中成长最快。
近期,,Eolink推出面向初创企业的公益扶持计划,可免费使用API研发管理和API自动化测试企业版,可前往 Eolink 公众号/官网了解详情、提交申请。
七个步骤覆盖 API 接口测试的更多相关文章
- [label][翻译][JavaScript-Translation]七个步骤让你写出更好的JavaScript代码
7 steps to better JavaScript 原文链接: http://www.creativebloq.com/netmag/7-steps-better-javascript-5141 ...
- 初步探究Android App API接口测试--实战
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- 实战Rest API接口测试
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- HTTP二、HTTP请求处理过程的七个步骤
HTTP02 HTTP请求处理过程的七个步骤 1.web服务处理步骤 web服务的处理过程可总结为七个步骤: 1)发起请求:客户端向服务器端发起连接请求,建立”三次握手“: 2)接收请 ...
- HTTP API接口测试利器PostMan介绍
一.什么是API接口测试? API接口有多种,个人将其划分为三类.第一种是函数级别的,测试需要对接口的各个参数进行测试,如:Int getResult(String key, String ID, I ...
- api接口测试工具和接口文档管理工具
api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...
- 使用JMeter3.0实战之分布式并发测试以及web API接口测试
简介: 该文档是以Apche JMeter-3.0为例进行编写的,通过网上的学习资料和官方文档的说明手册学习后,进行项目操作实践,将测试的过程记录下提供给大家学习. 本博文的内容主要是进行配置JMet ...
- REST API接口测试
背景介绍 为什么要做借口测试? 很多系统关联都是基于接口来实现的,接口测试可以将复杂的系统关联进行简化. 接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成. 接口相当于界面功能 ...
- Web Api 接口测试工具:WebApiTestClient
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...
随机推荐
- CentOS系统磁盘目录空间调整
前几天装了几台linux服务器,安装操作系统的时候,选择了默认磁盘分区,结果导致后面主目录分区空间不够用了,需要把其他分区的空间划分给主分区一点. 下面以CentOS6.5演示: 一.查看当前系统的磁 ...
- WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法
一 问题的发现 最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理. 于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里. 调 ...
- C++ 右值引用与一级指针
将右值引用用于一级指针,在初始化时等号右边必须为右值,有以下几种用法: //方式一:引用一级指针,常规用法 int a = 5; int * &&rrpa = &a; //右值 ...
- String简介
String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的.实现了 ...
- Java函数式编程:一、函数式接口,lambda表达式和方法引用
Java函数式编程 什么是函数式编程 通过整合现有代码来产生新的功能,而不是从零开始编写所有内容,由此我们会得到更加可靠的代码,并获得更高的效率 我们可以这样理解:面向对象编程抽象数据,函数式编程抽象 ...
- import cv2报错
其实是没错的,不过有的python编译器对这个不太支持,把import cv2 改为import cv2.cv2 as cv2就行了.
- 41.SessionAuthenticatio和自定义认证
SessionAuthentication认证介绍 SessionAuthentication使用了Django默认的会话后端 适合AJAX客户端等运行在同样会话上下文环境中的模式 是DRF默认的认证 ...
- ssh登录提示hosts is down
其他无用的网卡配置信息mv走重启network如果还是不行重启一下服务器问题就能解决
- etcd定时任务脚本执行失败
etcd定时任务脚本执行失败 报错如下:etcdctl命令不存在 是因为在脚本中etcdctl命令没有写绝对路径,修改标记部分改成绝对路径 可以先获取路径然后改成绝对路径问题解决 which etcd ...
- java学习之MybBaits
0x00前言 我前面使用的jdbc和jdbc的工具类集成的但是它们在少部分代码的情况下会会简单,但是以后如果项目较大jdbc的固定代码会很难维护,如果使用框架会简单很多,也标志着java学习正式进入到 ...