API 测试教程 - 初学者指南
什么是 API?
API(应用程序编程接口)是允许两个不同的软件系统进行通信和共享数据的计算机接口。执行 API 的软件系统具有许多功能/子程序,这些功能/子程序可以由另一个软件系统执行。在两个软件系统之间,API 描述了可以发出的请求类型、如何发出请求、可以使用的数据格式等等。
左移测试
左移测试是现在 API 测试面试中最常见的问题之一。几乎每个遵循敏捷方法的项目都包含这种形式的测试。
在引入左移测试之前,软件测试仅在开发完成后并向测试人员提供代码后才进行。这种策略导致了最后一刻的匆忙以赶上截止日期,以及产品质量的显著下降。
除此之外,所需的工作(当在生产前的最后阶段发现错误时)是巨大的,因为开发人员必须重复设计和编码阶段。
API 测试包括什么?
API 测试是一种软件测试,它验证应用程序编程接口 (API)。API 测试的目的是确保编程接口的功能、可靠性、速度和安全性。API 测试使用软件来发出 API 调用、获取输出并记录系统的响应,而不是使用典型的人工输入(键盘)和输出。API 测试不同于 GUI 测试,因为它不关注应用程序的外观和感觉。它主要关注软件架构的业务逻辑层。
API 自动化是指需要使用启用 API 的应用程序的测试。要测试 API,您需要执行以下操作。
使用测试工具来驱动 API。
编写自己的代码来测试 API。
您将在本 API 测试课程中了解有关以下内容的更多信息。
API 测试环境设置
API 输出的不同类型
API 测试用例是一组用于测试 API 的场景。
API 测试方法
API 测试和单元测试之间存在区别。
如何运行 API 测试
API 测试最佳实践
通过 API 测试检测到的错误类型
如何自动化 API 测试
API 测试挑战
API 测试环境设置
API 测试与其他软件测试方法的不同之处在于没有 GUI,但您必须构建一个初始环境,该环境使用一组指定的参数执行 API,然后检查测试结果。
因此,为 API 自动化测试设置测试环境似乎有点困难。
应设置数据库和服务器以满足应用程序的需求。
安装完成后,应使用 API 函数验证 API 是否正常运行。
API 输出的不同类型
API 输出可能是 -
任何类型的信息
当前状态(例如通过或失败)
调用另一个 API 函数。
在本 API 测试课程中,我们将查看上述每种类型的示例。
任何类型的信息
例如,有一个 API 方法可以添加两个整数。
Long add(int a, int b)
必须将数字作为输入参数输入。最终结果应为两个整数值的总和。必须将此输出与预期结果进行比较。
需要进行以下调用,例如
add (1234, 5656)
如果数字超过整数限制,则必须处理异常。
当前状态(例如通过或失败)
查看下面的 API 方法 -
Lock()
Unlock()
Delete()
它们可以返回任何结果作为输出,例如 True(成功时)或 False(失败时)。更精确的测试用例是在任何脚本中运行函数,然后检查数据库或应用程序 GUI 中的变化。
正在调用另一个 API/事件。
在这种情况下,调用了其中一个 API 函数,然后该函数又调用了另一个函数。
例如,第一个 API 方法可用于从表中删除特定记录,然后此函数调用另一个函数来刷新数据库。
API 测试用例
API 测试用例基于
根据输入条件返回的值:这很容易测试,因为可以描述输入并验证结果。
不提供任何信息:当没有返回值时,必须检查系统的 API 行为。
激活另一个 API/事件/中断:如果 API 的输出导致事件或中断,则应监视事件和中断侦听器。
更新数据结构:更新数据结构将对系统产生影响或后果,应予以验证。
修改特定资源:如果 API 请求更改了特定资源,则应通过访问这些资源来检查。
API 测试方法
API 测试方法是在构建完成后 QA 团队将用于执行 API 测试的预定方法或技术。此测试不包括源代码。API 测试方法有助于更好地理解功能、测试方法、输入参数和测试用例执行。
以下几点将帮助用户实施 API 测试策略 -
了解 API 程序的功能并准确定义程序的范围
使用等价类、边界值分析和错误猜测等测试方法为 API 编写测试用例。
必须仔细考虑和描述 API 的输入参数。
执行测试场景并将预期结果与实际结果进行比较。
API 测试与单元测试
下表重点介绍了 API 测试和单元测试之间的主要区别 -
单元测试 | API 测试 |
---|---|
由开发人员执行。 | 由测试人员执行。 |
对不同的函数进行测试。 | 从头到尾测试功能。 |
开发人员可以访问源代码。 | 测试人员无法访问源代码。 |
UI 测试也是流程的一部分。 | 仅对 API 函数进行测试。 |
仅测试最基本的功能。 | 彻底检查所有功能问题。 |
范围有限。 | 更广泛的范围 |
通常在签入之前执行。 | 构建完成后运行。 |
如何运行 API 测试?
除了标准的 SDLC 流程之外,API 自动化测试还应至少包含以下测试方法。
**发现测试** - 测试组应手动执行 API 中定义的一组调用,例如确认 API 可访问的给定资源可以根据需要列出、创建和销毁。
**可用性测试** - 可用性测试确保 API 既实用又友好。以及 API 与其他平台的交互效率如何?
**安全测试** - 安全测试涉及确定需要哪种形式的身份验证以及敏感数据是否通过 HTTP 或两者都加密。
**自动化测试** - API 测试应导致建立一组脚本或工具,可用于定期运行 API。
**文档** - 测试团队必须确保文档完整且足以与 API 交互。最终输出应包括文档。
API 测试最佳实践
API 测试用例应分类组织。
每个测试的顶部都应包含被调用的 API 的声明。
测试用例中应明确说明参数的选择。
对 API 函数调用进行优先级排序,以便测试人员可以轻松地对其进行测试。
每个测试用例应尽可能独立,并且没有依赖项。
在您的开发中,避免“测试链”。
在使用一次性调用函数(如 Delete、CloseWindow 等)时,需要更加小心。
应执行并精心计划调用顺序。
为 API 的所有可能输入组合创建 API 测试用例,以确保全面测试覆盖率。
通过 API 测试检测到的错误类型
无法优雅地处理错误情况
从未使用过的标志
缺少或重复的功能
可靠性问题 连接到 API 并接收响应很困难。
安全问题
多线程问题
性能问题。API 响应时间非常长。
向调用方发送不正确的错误/警告
错误处理有效的参数值
响应中的数据组织不正确(JSON 或 XML)
如何自动化 API 测试
后续课程提供逐步指南以实现 API 测试自动化。
REST Assured API 测试
如何使用 Postman 测试 API
如何使用 UFT 测试 API?
API 测试挑战
API 测试有许多缺点,包括 -
参数组合、参数选择和调用顺序是 Web API 测试中的三个主要问题。
该程序没有图形用户界面 (GUI) 用于测试,因此无法提供输入数据。
测试人员在独立的系统上验证和确认结果比较困难。
测试人员必须了解参数选择和分类。
需要测试异常处理方法。
测试人员需要具备编码技能。
结论
业务逻辑层由 API 中的一组类、函数和方法表示。如果 API 未经充分测试,可能会在 API 应用程序和调用应用程序中都产生问题。在软件工程中,测试是必不可少的。