【接口自动化测试】接口测试是什么

文章目录

  • 1. 接口的概念
  • 2. 接口测试
    • 2.1 概念
    • 2.2 接口组成
  • 3. 接口测试重要性
  • 4. 如何执行接口测试
    • 4.1 接口用例的编写
    • 4.2 结合业务逻辑来设计用例

1. 接口的概念

接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。

  • 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口。比如贴吧系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
  • 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人不会把数据库共享给你,只能提供一个写好的方法来获取数据,你引用他提供的接口就能使用这个方法,从而达到数据共享的目的。比如 app、网址在进行数据处理时,都是通过接口来进行调用的。

接口类型有很多,如 HTTP API 接口、RPC 等等,接下来我们基于 HTTP API 接口讲解。

2. 接口测试

2.1 概念

接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

简而言之,接口测试就是通过测试不同情况下的入参与之相应的出参信息,来判断接口是否符合或满足相应的功能性、安全性要求。

接口测试比一般的功能测试更简单(非官方表述):

  • 功能测试是从页面输入值,通过点击按钮或链接等传值给后端,还要测试UI、前端交互等;
  • 而接口测试没有页面,是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,只需测入参和出参即可。

2.2 接口组成

接口文档示例:获取接口调用凭据

接口文档应包含以下内容:

  • 接口说明
  • 调用 url
  • 请求方法(get / post)
  • 请求参数、参数类型、请求参数说明
  • 返回参数说明

由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header

标头(header):是服务器以 HTTP 协议传 HTML 资料到浏览器前所送出的字符串,在标头与 HTML 文件之间需空一行分隔,一般存放cookietoken等信息。

header 和入参的区别:它们都是发送到服务器的参数,但 header 里存放的一般是校验信息(比如 cookie,用于校验请求是否有权限访问服务器),服务器会先接收 header 信息判断请求是否有权限,判断有权限后,才会接受请求地址和入参,再根据地址和入参返回出参。

3. 接口测试重要性

接口是前端页面或 APP 等调用与后端做交互用的,有人会问:功能测试都测好了,为什么还要测接口呢?

举个例子:比如测试用户注册功能,规定用户名为 6~18 个字符,包含字母(区分大小写)、数字、下划线。

功能测试时会对用户名规则进行测试,但这些校验可能只是在前端做的,后端可能没做校验。如果有人通过抓包绕过前端校验直接发送请求到后端,用户名和密码就可以随便输入,甚至可以通过 SQL 注入等手段随意登录,获取管理员权限。

所以,接口测试的必要性体现在:

  • 可以发现很多在页面上操作发现不了的 bug;
  • 检查系统的异常处理能力;
  • 检查系统的安全性、稳定性;
  • 前端随便变,接口测好了,后端不用变;

4. 如何执行接口测试

在进行接口测试前,还需要了解:

get / post 请求:get 和 post 是常见的请求方法。

  • get 请求可以直接在浏览器里输入地址请求,浏览器里能直接请求到的都是 get 请求;
  • post 请求则需要借助工具来发送。

http 状态码:每发出一个 http 请求之后,都会有一个响应,http 会有状态码来标示请求是否成功,常见的状态码有以下几种:

  • 200:2 开头的都表示请求发送成功,最常见的就是200,代表请求正常,服务器已返回数据。
  • 300:3 开头的代表重定向,最常见的是302,表示请求被重定向到其他地址。
  • 400:4 开头的代表客户端错误,401代表访问的页面没有授权,403表示没有权限访问,404代表没有这个页面。
  • 500:5 开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。

接口测试分两步走:通过接口设计用例 + 结合业务逻辑来设计用例。

4.1 接口用例的编写

(1)通过性验证:首先要保证接口功能正常,即按照接口文档的参数正常传入,验证是否能返回正确的结果。

用例编号用例标题前置条件测试步骤预期结果实际结果测试结果
01接口正常调用测试接口服务正常运行1. 按照接口文档要求,传入所有必填参数
2. 调用接口
3. 检查返回结果
返回状态码200,返回结果符合预期(如操作成功、返回数据完整)

(2)参数组合:例如一个操作商品的接口,type=1代表修改商品(商品 id、商品名称、价格有一个必传),type=2代表删除商品(商品 id 必传),需要测试不同的参数组合。

用例编号用例标题前置条件测试步骤预期结果实际结果测试结果
02修改商品只传商品名称测试接口服务正常运行,商品存在1. 设置type=1
2. 只传商品名称
3. 调用接口
返回状态码200,商品名称修改成功,其他信息不变
03修改商品传id、名称、价格测试接口服务正常运行,商品存在1. 设置type=1
2. 传入商品id、名称、价格
3. 调用接口
返回状态码200,商品信息修改成功
04删除商品测试接口服务正常运行,商品存在1. 设置type=2
2. 传入商品id
3. 调用接口
返回状态码200,商品删除成功

(3)接口安全

  • 绕过验证:比如购买商品时,修改提交订单的价格,验证后端是否做了校验。
  • 绕过身份授权:比如修改商品信息接口,验证普通用户或其他卖家是否能修改他人商品。
  • 参数是否加密:比如登录接口的用户名和密码是否加密传输,加密规则是否安全。
  • 密码安全规则:验证密码的复杂程度校验。
用例编号用例标题前置条件测试步骤预期结果实际结果测试结果
05绕过价格验证测试接口服务正常运行1. 购买商品
2. 提交订单时,将商品价格改为3元
3. 调用接口
返回状态码400或403,提示价格验证失败
06绕过身份授权测试接口服务正常运行1. 使用普通用户调用修改商品信息接口
2. 调用接口
返回状态码403,提示无权限操作
07参数加密测试接口服务正常运行1. 检查登录接口的用户名和密码是否加密
2. 拦截请求查看数据
用户名和密码已加密,且加密规则难以破解
08密码复杂度校验测试接口服务正常运行1. 注册或修改密码时,输入不符合复杂度要求的密码
2. 调用接口
返回状态码400,提示密码不符合安全规则

(4)异常验证:不按照接口文档的要求输入参数,验证接口对异常情况的校验,如必填参数缺失、参数类型错误、参数长度超限等。

用例编号用例标题前置条件测试步骤预期结果实际结果测试结果
09必填参数缺失测试接口服务正常运行1. 不传必填参数(如商品id)
2. 调用接口
返回状态码400,提示必填参数缺失
10参数类型错误测试接口服务正常运行1. 传入错误类型的参数(如将整数类型传为字符串)
2. 调用接口
返回状态码400,提示参数类型错误
11参数长度超限测试接口服务正常运行1. 传入长度超限的参数(如长度限制为10,传入11)
2. 调用接口
返回状态码400,提示参数长度超限

4.2 结合业务逻辑来设计用例

根据业务逻辑设计用例,和功能测试的用例设计思路类似,需要结合系统的实际业务场景。

以贴吧为例,需求如下:

  • 登录失败5次,需等待15分钟后再登录;
  • 新注册的用户需过了实习期才能发帖;
  • 删除帖子扣除积分;
  • ……

需要把这些业务测试点列出来,造对应的数据进行测试。