API 测试教程:什么是 API 测试自动化?

什么是API测试?
API测试 是一种验证应用程序编程接口 (API) 的软件测试类型。API 测试的目的是检查编程接口的功能、可靠性、性能和安全性。在 API 测试中,您不使用标准用户输入(键盘)和输出,而是使用软件向 API 发送调用、获取输出并记录系统的响应。API 测试与 GUI 测试非常不同,它不会专注于应用程序的外观和感觉。它主要集中在软件架构的业务逻辑层上。
对于背景, API(应用程序编程接口) 是实现两个独立软件系统之间通信和数据交换的计算接口。执行 API 的软件系统包括另一个软件系统可以执行的几个函数/子例程。API 定义了两个软件系统之间可以发出的请求、如何发出请求、可以使用的数据格式等。
API 测试自动化环境的设置
API自动化测试需要一个可以通过API进行交互的应用程序。要测试API,您需要:
- 使用测试工具来驱动 API
- 编写自己的代码来测试 API
需要注意以下几点:
- API 测试与其他测试类型不同,因为它没有 GUI,您必须设置一个环境来调用 API 并传递所需的参数,然后检查测试结果。
- 搭建用于 API 自动化测试的测试环境似乎有点复杂。
- 数据库和服务器应根据应用程序需求进行配置。
- 安装完成后,应调用 API 函数来检查该 API 是否正常工作。
API 的输出类型
API 的输出结果可能是:
- 任何类型的数据
- 状态(例如通过或失败)
- 调用另一个 API 函数。
任何类型的数据
示例:有一个 API 函数用于将两个整数相加。
Long add(int a, int b)
数字必须作为输入参数给出。输出应为两个整数的总和。此输出需要通过预期结果进行验证。
add (1234, 5656)
如果数字超过整数限制,则必须处理异常情况。
状态(通过或不通过)
请参考以下 API 函数:
- 锁()
- 开锁()
- 删除()
它们会返回任意值,例如 True(成功)或 False(出错)。更准确的 测试用例 会在任何脚本中调用这些函数,然后检查数据库或应用程序 GUI 中的更改。
调用另一个 API/事件
在这种情况下,我们会调用一个 API 函数,该函数又会调用另一个函数。例如,第一个 API 函数可用于删除表中指定的记录,而该函数又会调用另一个函数来刷新数据库。
API 测试用例
API 测试用例基于:
- 根据输入条件返回值: 测试起来相对容易,因为可以定义输入并验证结果
- 不返回任何内容: 当没有返回值时,需要检查系统上的API的行为
- 触发一些其他 API/事件/中断: 如果 API 的输出触发了某些事件或中断,则应跟踪这些事件和中断监听器
- 更新数据结构: 更新数据结构会对系统产生一些结果或影响,这应该得到验证
- 修改某些资源: 如果 API 调用修改了某些资源,则应通过访问相应资源进行验证
API 测试方法
API 测试方法是指质量保证团队在构建完成后执行 API 测试时所采用的预定义策略或方法。此测试不涉及源代码。API 测试方法有助于更好地理解 API 的功能、测试技术、输入参数以及测试用例的执行情况。
以下几点有助于指导 API 测试方法:
- 了解 API 程序的功能并明确定义程序的范围
- 应用等价类、边界值分析和错误猜测等测试技术,并为 API 编写测试用例
- API的输入参数需要进行适当的规划和定义。
- 执行测试用例并比较预期结果和实际结果。
如何测试 API
除了常规的软件开发生命周期(SDLC)流程之外,API自动化测试至少应涵盖以下测试方法:
- 发现测试: 测试组应该手动执行 API 中记录的调用集,例如验证 API 公开的特定资源是否可以适当地列出、创建和删除
- 可用性测试: 此测试可验证 API 是否功能齐全且用户友好。此外,API 是否能与其他平台很好地集成
- 安全测试: 该测试包括需要哪种类型的身份验证以及敏感数据是否通过 HTTP 加密,或者两者兼而有之
- 自动化测试: API 测试最终应该创建一组可用于定期执行 API 的脚本或工具
- 文档: 测试团队必须确保文档充分并提供足够的信息来与 API 交互。文档应该是最终交付成果的一部分
API 测试和单元测试的区别
| 单元测试 | API测试 |
|---|---|
| 开发人员执行 | 测试人员执行 |
| 测试单独的功能 | 端到端功能经过测试 |
| 开发人员可以访问源代码 | 测试人员无法访问源代码 |
| 还涉及 UI 测试 | 仅测试 API 函数 |
| 仅测试基本功能 | 所有功能问题都经过测试 |
| 范围有限 | 范围更广 |
| 通常在办理入住手续前运行 | 构建完成后进行测试运行 |
API 测试最佳实践
- API测试用例应按测试类别分组。
- 在每个测试的顶部,您应包括被调用的API的声明。
- 参数选择应在测试用例本身中明确说明。
- 优先处理 API 函数调用,以便测试人员能够轻松进行测试。
- 每个测试用例都应该尽可能独立,不依赖于任何其他组件。
- 在开发过程中避免“测试链式调用”。
- 处理一次性调用功能(如删除、关闭窗口等)时必须格外小心。
- 调用顺序应该执行并做好规划。
- 为了确保完整的测试覆盖范围,为 API 的所有可能的输入组合创建 API 测试用例。
API 测试可以检测到哪些类型的错误
- 无法妥善处理错误情况
- 未使用的标志
- 功能缺失或重复
- 可靠性问题,包括连接困难和无法从 API 获取响应。
- 安全问题
- 多线程问题
- API响应时间过长导致性能问题
- 向呼叫者发出不适当的错误/警告
- 有效参数值处理不正确
- 响应数据结构不正确(JSON 或 XML)
如何进行 API 测试自动化
以下内容提供了自动化 API 测试的详细指南:
此外,还有其他 API 测试工具.
人工智能如何变革 API 测试
人工智能正在通过自动化手动任务重塑 API 测试。机器学习算法可以分析 API 规范、生成测试用例,并识别人工测试人员可能忽略的极端情况。
人工智能还能通过检测漏洞来增强安全测试。然而,人工智能应该作为人类专业知识的补充,而不是取代它们,因为质量保证工程师拥有人工智能无法复制的领域知识。
API 测试的挑战
- Web API 测试的主要挑战在于参数组合、参数选择和调用顺序。
- 由于没有可用于测试该应用程序的图形用户界面,因此很难输入值。
- 对于测试人员来说,在不同的系统中验证和确认输出结果有点困难。
- 测试人员需要了解参数选择和分类。
- 需要对异常处理功能进行测试。
- 测试人员必须具备编程知识。
结语
API 是由一组代表业务逻辑层的类/函数/过程组成的。如果 API 测试不当,不仅可能导致 API 应用程序出现问题,还可能导致调用应用程序出现问题。它是软件工程中不可或缺的测试。



