什么是API测试?
根据Global Industry Analysts Inc 的报告,全球 API 测试市场规模预计将从 2020 年的 6.416 亿美元增长到 2026 年的 18 亿美元。
这一市场增长与需要应用程序编程接口 ([API](https://www.explinks.com/wiki/api/))的云应用程序和互连平台的增长相对应。更多的 API 意味着更多的测试,以确定它们是否满足功能、可靠性、性能和安全性的期望。如果没有这些测试,API 可能无法按预期运行,这可能会影响许多软件和服务。
## 什么是 API 测试?
API 测试是向 API 发送请求并监控响应以确保其行为符合预期的过程。API 测试旨在评估 API 的功能、可靠性、性能和安全性,因此是 API 开发生命周期的重要组成部分。
软件应用程序开发以三层架构方法为主,即由表示层、业务逻辑层和数据库层组成的架构。
业务逻辑层包含应用程序的核心功能或组件。它必须从表示层获取用户输入的信息,查询数据库层并根据业务逻辑转换数据,然后通过表示层将结果呈现给用户。但业务逻辑层还必须与其他应用程序以及人类用户进行通信。为此,它使用 API。
因此,API 测试旨在验证业务逻辑以及应用程序的性能、安全性和其他方面。API 测试并不关注应用程序的单个组件(如单元测试)或应用程序的外观(如用户界面 (UI) 测试),而是关注应用程序的功能。
要评估 API 是否按预期工作,您需要运行多个测试。让我们看看下面最常见的类型。
### API 测试的类型
API 测试方法有多种,包括:
– __功能测试__。这些 API 测试旨在检查 API 是否针对给定的请求返回正确的响应。
– __负载测试__。这种类型的 API 测试可以衡量 API 如何在短时间内处理大量请求。
– __运行时和错误检测测试__。这些 API 测试旨在评估 API 的实际运行情况,通常侧重于监控、执行错误、资源泄漏或错误检测。
– __[安全测试](https://www.explinks.com/wiki/api-security-testing/)__。这些测试评估 API 如何响应和抵御网络攻击。
– __渗透测试__。渗透测试涉及具有有限 API 知识的用户尝试攻击 API,这使测试人员能够从外部视角评估威胁载体。
– __模糊测试__。这种类型的 API 测试会发送大量随机请求,以查看您的 API 是否响应错误、是否错误地处理任何这些输入或是否崩溃。
– __验证测试__。验证测试在测试阶段的后期运行,以验证 API 的行为和效率。
## 为什么 API 测试很重要?
API 测试对于确保您的 API 在面对各种预期和意外请求时能够按预期运行非常重要。此过程不仅旨在测试 API 的功能,还旨在测试其可靠性、性能和安全性。
API 测试也很重要,因为它比其他类型的测试(如单元测试和 [UI](https://www.explinks.com/provider/uid2024111457141670f3b1) 测试)具有多种优势。
例如,单元测试旨在验证单个应用程序中各个组件的功能,而 API 测试旨在验证所有系统组件是否按预期运行。这种更广泛的测试覆盖范围使识别单元、数据库和服务器级别的任何错误变得更加容易。
API 测试的运行速度也比 UI 测试更快,而且更加独立,这使得识别和解决错误更快、更容易。根据Andersen Lab 的数据,UI 测试运行时间约为 7 分钟,而 API 测试运行时间约为 12 秒。这意味着 API 测试比 UI 测试快 35 倍左右。
也许最重要的是,API 测试允许开发人员操作、质量保证、开发和其他团队在用户界面准备就绪之前开始测试应用程序的核心功能。这使他们能够在开发过程的早期识别任何错误或弱点。如果在流程的后期发现,这些构建中的错误和弱点可能需要花费高昂的成本才能修复,需要重写大量代码并大大延迟产品的发布。
现在我们了解了 API 测试的一些好处,让我们来看看如何执行它。
## 如何进行 API 测试
1. 查看 API 规范。
2. 确定 API 测试要求。
3. 定义输入参数。
4. 创建正面和负面测试。
5. 选择一个 API 测试工具。
### 1. 查看API规范。
在开始测试之前,您需要首先了解 API 的用途、API 的功能以及使用 API 时预期的结果。为此,您可以查看 API 规范。
例如,如果您正在测试 [HTTP](https://www.explinks.com/wiki/what-are-http-and-https/) API,则可以查看[OpenAPI 规范](https://www.explinks.com/blog/how-businesses-can-benefit-from-openapi-specification/),该规范为 HTTP API 定义了一个与编程语言无关的标准接口描述。此规范详细说明了所有 HTTP API 的对象、值和参数、对象的调用方式、每个对象的用途以及如何将它们一起使用。以下部分详细说明了请求正文对象应如何运行、其固定字段是什么、使用此函数时会发生什么以及请求正文示例。
### 2.确定API测试要求。
接下来,您需要确定 API 的测试要求。这将要求您了解 API 的目标消费者、其特性和功能、应用程序的工作流程以及您要测试的方面、优先级和问题。例如,您可能想验证 HTTP 标头是否符合预期,或者是否在测试计划定义的合理时间内收到响应。
您还需要知道所需的输出 – 例如,可以是 2XX [HTTP 状态](https://www.explinks.com/wiki/rest_api_http_codes/)代码或 JSON 对象。
### 3.定义输入参数。
在调用 API 之前,您必须定义输入参数。这些参数将所需信息传递给 API,使其能够执行其功能,因此对于确定 API 是否按预期执行必不可少。例如,[REST API](https://www.explinks.com/wiki/rest-api/) 可以接受标头、查询和 rest body 参数以及其他输入参数类型。
在开始 API 测试之前,规划出所有可能的输入组合非常重要。
### 4. 创建正面和负面测试。
要评估 API 是否按预期运行,您应该运行正面和负面测试的组合。
– __正面测试__ 旨在使用必需参数检查 API 的基本功能以及使用可选参数检查额外功能。
– __负面测试__ 旨在检查 API 如何使用有效和无效的用户输入响应禁止的操作,例如尝试输入已存在的用户名或为空的用户名。
### 5.选择API测试工具。
现在,您可以选择一种可以帮助自动化或简化 API 测试过程的 API 测试工具。在评估不同的 API 测试工具时,重要的是要知道您要测试哪种 API、要运行哪种测试以及您的预算是多少。
## API 自动化与未来
随着越来越多的服务依赖于数百个相互关联的 API,API 测试的重要性预计将继续增长。通过强大的 API 测试实现 [API 自动化](https://www.explinks.com/wiki/api-automation/)是保持数字经济连通性和加快产品发布速度的关键。它允许准确、可重复和高效的测试流程,这对于跟上当今软件开发的速度和范围至关重要。