API(应用程序编程接口)测试是一种直接在 API 级别执行验证的软件测试。它是集成测试的一部分,它确认 API 是否满足测试人员对功能、可靠性、性能和安全性的期望。与 UI 测试不同,API 测试是在没有 GUI 层执行操作的。

API 测试技巧

Web API 有两大类 Web 服务:SOAP 和 REST。SOAP(简单对象访问协议)是 W3C 标准定义的一种标准协议,用于发送和接收 Web 服务请求和响应。REST(表示状态传输)是使用 HTTP 的基于 Web 标准的体系结构。与基于 SOAP 的 Web 服务不同,没有针对 RESTful Web API 的正式标准。

以下是 API 测试的 10 条基本技巧:

了解 API 要求

在测试 API 之前,需要回答以下问题以彻底了解 API 的要求:

通常,应用程序的 API 用于对资源进行操作。它们常用于读取,创建,更新。了解 API 的用途将为输入和输出准备好测试数据奠定坚实的基础。此步骤还可以帮助您定义验证方法。例如,对于某些 API,您将针对数据库验证响应。对于其他一些,最好根据其他 API 来验证响应。

例如,“创建用户” API 的输出将是 “获取用户” API 的输入以进行验证。“获取用户” API 的输出可以用作 “更新用户” API 的输入,依此类推。

指定 API 输出状态

您需要在 API 测试中验证的最常见的 API 输出是响应状态代码。

新 API 测试人员熟悉验证响应代码是否等于 200 以确定 API 测试是通过还是失败。这不是错误的验证。但是,它并不反映 API 的所有测试方案。

在通用标准中,所有 API 响应状态代码均分为五类。状态码的第一位数字定义响应的类别。后两位没有任何类别或分类作用。

第一位数有五个值:

API 的实际响应状态代码由构建 API 的开发团队指定。

专注于小型功能性 API

在测试项目中,总是有一些简单的 API,只有一个或两个输入,例如登录 API,获取身份令牌 API,运行状况检查 API 等。但是,这些 API 是必需的,被视为进入其他业务的 “门 API”。首先关注这些 API,将确保 API 服务器,环境和身份验证正常工作。

还应该避免在一个测试案例中测试多个 API。如果发生错误,这是很痛苦的,因为您将不得不按顺序调试 API 生成的测试数据。保持测试尽可能简单。在某些情况下,如果需要调用一系列 API 来实现端到端测试流程,这些任务应该在所有 API 都经过单独测试之后完成。

分类 API

一个测试项目可能有几个甚至数百个用于测试的 API。强烈建议将它们分类,以更好地进行测试管理。它需要采取额外的步骤,但是将大大帮助您创建具有高覆盖率和集成度的测试方案。

同一类别的 API 共享一些公共信息,例如资源类型,路径等。以相同的结构组织测试将使您的测试在集成流程中可重复使用和扩展。

利用自动化功能进行 API 测试

尽可能早地利用自动化进行 API 测试。以下是自动化 API 测试的一些重要好处:

选择合适的自动化工具

利用 API 测试的自动化功能的另一步骤是从市场上的数百种选择中选择最合适的工具或一组合适的工具。选择 API 自动测试工具时,应考虑以下一些标准:

选择合适的验证方法

当响应状态代码告诉请求状态时,响应主体内容就是 API 通过给定输入返回的内容。API 响应内容因数据类型和大小而异。响应可以是纯文本,JSON 数据结构,XML 文档等。它们可以是简单的几个单词的字符串(甚至为空),也可以是一百页的 JSON/XML 文件。因此,必须为给定的 API 选择合适的验证方法。

通常,有一些验证 API 响应正文内容的基本方法:

每种验证方法都有其优点和缺点,并且没有 “一刀切” 的选项,需要选择最适合您的测试项目的解决方案。

创建正面和负面的测试

API 测试需要正向测试和反向测试,以确保 API 正常运行。由于 API 测试被视为一种灰盒测试,因此两种类型的测试均由输入和输出数据驱动。

正向测试

反向测试

现场测试流程

建议在测试过程中安排每天的 API 测试执行。由于 API 测试执行快速,稳定且足够小,因此很容易以最小的风险将更多测试添加到当前测试过程中。这只有通过具有以下功能的自动 API 测试工具才能实现:

测试过程完成后,每天都可以得到这些测试的结果。如果发生失败的测试,则可以立即检查输出并验证问题以找到适当的解决方案。

不要小看 API 自动化测试

API 测试流程非常简单,只需三个主要步骤:

API 测试最重要的部分既不是发送请求也不是接收响应。它们是测试数据管理和验证。通常,测试一些第一个 API(例如登录,查询一些资源等)非常简单。因此,API 测试任务很容易被低估。在常规手段方法无法达到你的目的时,使用编程技能可以极大拓展 API 测试的边界。


技术类文章精选

非技术文章精选


↙↙↙阅读原文可查看相关链接,并与作者交流