接口测试概述

什么是接口测试


点击这里,边看视频讲解,边学习以下内容

我们通常说的接口测试(或者API接口测试),其实就是 对 软件系统 消息交互接口 的测试

消息交互接口 是 软件系统 和 其他软件系统 交互 的那部分。

比如,你正在用浏览器 使用 白月SMS网站系统。

白月SMS系统前端(在浏览器里面运行) 和 后端服务器 之间 就是 消息交互的。

我们可以说 SMS系统前端 和 后端服务器 之间是 消息交互接口。


再比如,你手机上使用美团订餐, 美团APP 和 美团服务器之间, 也是消息交互的。

当你提交订单,使用微信支付的时候, 美团服务器 和 微信服务器 之间也是通过 消息交互的。


接口测试就是

  • 依据接口规范,写出测试用例,

  • 使用软件工具,直接通过消息接口 对 被测系统 进行消息收发

  • 验证被测系统行为是否正确。


接口测试,通常是对 服务端做的 比较多,但是也有对客户端做的。 关键是看 被测系统是 服务端还是客户端。


目前的软件系统之间的消息接口 大部分是 基于 HTTP 协议收发的。

HTTP协议的特点是,客户端发出一个HTTP请求给 服务端,服务端就返回一个HTTP响应。好像程序的API调用。

所以 接口测试 通常又被称之为 API接口测试 或者 WEB API接口测试



点击这里,边看视频讲解,边学习以下内容

API接口 传递数据信息 是通过HTTP协议进行收发的 , 网站 获取网页、图片 、css 等资源, 也是 通过HTTP协议进行收发的 。

那么这两者有什么区别呢? 为什么 获取网页、图片这些 HTTP消息 通常不叫 API 接口消息呢?

网页、图片、css 这些资源,都是 静态资源 , 就是一个个文件存储在服务器上的,获取这些信息,服务端直接读取文件,返回给客户端即可,无需特别的数据处理。

而 API接口请求消息,通常都需要 服务端程序进行 一番处理,比如:对请求的权限检查,从数据库中读出数据,进行信息过滤和 格式转换,最后在HTTP响应中返回给客户端。


接口测试需要 工具 和 被测系统之间进行消息(通常是HTTP消息)的收发, 这个工具 可以是 别人开发 好的, 也可以自己开发。

基于 HTTP 的接口测试工具, 常见的 有 Postman、Jmeter等, 也可以使用 白月黑羽开发的 黑羽压测。

这些工具,核心功能都是类似的:

都是用来 构建HTTP请求消息,并且解析收到的HTTP响应消息, 用户来判断是否符合预期

熟悉 Python 语言的朋友, 也完全可以使用 requests 库,自己写代码发送接收HTTP请求,进行测试。我们后面的课程会有讲述。


还有一个问题: 测试工程师测试系统,一定要做接口测试吗?

这个要看你们系统被测的接口 是 内部接口 还是 外部接口

内部接口 是 产品(也就是被测系统) 内部子系统之间 的接口。

比如,白月SMS系统前后端系统之间的 API接口。

内部接口 通常并不需要 测试部门的工程师 进行测试, 而是由开发人员自己进行测试的。 当然也偶尔有特殊情况,项目组 指定就由 测试部门帮助 开发人员进行测试。


而 产品(也就是被测系统) 的外部接口,是 和 另外的系统 交互的接口。 所谓 另外的系统 通常是由 其他公司 开发的, 这样的接口 测试工程师一定要进行测试。

比如 阿里云服务提供的 API 接口, 微信支付系统提供 的支付 API 接口, 作为 阿里云 或者 微信支付 的测试工程师,就当然要对其进行测试了。


有人会问,既然通过UI也能间接的测试接口,为什么还必须要做接口测试呢(不管是QA还是开发自己去做)?

因为有的问题,你不了解API接口,不直接操作API接口,没法测试出来。

比如, 一个系统有个 API可以让用户修改自己的 呢称,接口消息中的id字段,表明要修改的是哪个账号的昵称。

我们应该有这样的用例

以用户A 登录的身份,发出的API,里面的id却是 用户B的,也就是去修改 用户B 的昵称。

如果我们只通过前端UI是没法发送这样的请求的,因为前端的代码会保证 用户A 发送的是 A 的ID。

但是如果接口这样定义,确实有这样一个漏洞的可能,如果有人 了解了接口,就可能造成破坏。 所以我们必须要测试后端是否做的相应的检查。



接口测试工作


点击这里,边看视频讲解,边学习以下内容

根据前面的讲述,总结一下,接口测试工作,主要包括

  • 获取接口文档,评审文档,了解接口的实现细节

  • 根据接口文档,写出测试用例,

  • 等产品发布后,根据测试用例,使用软件工具,直接通过消息接口 对 被测系统 进行消息收发,验证被测系统行为是否正确

评审接口文档

通过 接口 进行测试 和 通过 用户界面 进行测试一样, 都需要有 测试用例

测试用例的依据就是 需求设计文档, 接口测试用例当然也需要 接口的 需求设计文档,通常称之为 接口文档。

接口文档 通常 是由 开发人员提供, 测试人员 根据接口文档编写接口测试用例。

接口文档 里面应该包括 我们要测试的系统接口的具体信息。

点击这里查看白月SMS系统的接口文档

接口文档是人写的,当然就会有 错误、遗漏,甚至有自相矛盾的地方。

文档也可能有写的不清楚,难以理解,测试人员看不懂的地方。

所以在写测试用例之前,必须要先对接口文档进行评审,找出里面的问题,和 文档作者进行沟通 ,确保接口文档 基本正确、完善,然后才能动手写测试用例。

大家可以仔细评审一下,看看 白月SMS系统的接口文档 有没有错误、遗漏的地方

编写测试用例


点击这里,边看视频讲解,边学习以下内容

请大家,根据 白月SMS系统的接口文档,编写测试用例,对 服务端系统 进行接口测试

用例模板点击这里下载

编写测试用例的时候,通常可以采用 条件组合、边界值、错误猜测 等方法。

讲解视频中 有演示



课后练习

虽然是 白月SMS系统的接口文档 描述的是 web 前端 和 服务端的 内部接口,但是测试团队被要求负责 对 服务端子系统的接口测试,请大家

  • 评审白月SMS系统的接口文档

  • 编写 针对服务端系统的 接口测试用例

VIP实战班学员请提交编写的测试用例 给白月黑羽老师 检查并沟通。

上一页
下一页