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

什么是API测试?

API测试是一种软件测试类型,用于验证应用程序编程接口(API)。API测试的目的是检查编程接口的功能、可靠性、性能和安全性。在API测试中,您不使用标准的用户输入(键盘)和输出,而是使用软件向API发送调用,获取输出,并记录系统的响应。API测试与GUI测试非常不同,它不关注应用程序的外观和感觉。它主要关注软件架构的业务逻辑层。

API Testing image

背景知识,API(应用程序编程接口)是一种计算接口,它允许两个独立的软件系统之间进行通信和数据交换。执行API的软件系统包含若干功能/子程序,其他软件系统可以执行这些功能/子程序。API定义了可以发出的请求、如何发出请求、可以使用的数据格式等,用于两个软件系统之间。

API测试自动化环境的设置

API自动化测试需要一个可以通过API交互的应用程序。为了测试API,您需要:

  1. 使用测试工具驱动API
  2. 编写自己的代码来测试API

几点注意事项

  • API测试与其他软件测试类型不同,因为它没有图形用户界面(GUI),但您仍然需要设置初始环境,使用一组必需的参数调用API,然后最终检查测试结果。
  • 因此,为API自动化测试设置测试环境看起来有些复杂。
  • 数据库和服务器应根据应用程序要求进行配置。
  • 安装完成后,应调用API函数以检查该API是否正常工作。

API的输出类型

API的输出可以是:

  1. 任何类型的数据
  2. 状态(例如通过或失败)
  3. 调用另一个API函数。

让我们在本API测试教程中查看上述每种类型的示例。

任何类型的数据

示例:有一个API函数应该添加两个整数。

Long add(int a, int b)

数字必须作为输入参数给出。输出应该是两个整数的总和。这个输出需要与预期结果进行验证。

需要进行如下调用:

add (1234, 5656)

如果数字超出整数限制,必须处理异常。

状态(例如通过或失败)

考虑以下API函数 –

  1. Lock()
  2. Unlock()
  3. Delete()

它们返回一个值,例如True(成功时)或False(出错时)作为输出。

一个更准确的测试用例是,可以在任何脚本中调用这些函数,然后检查数据库或应用程序GUI中的更改。

调用另一个API / 事件

Calling of another API / Event

在这种情况下,我们调用一个API函数,该函数又会调用另一个函数。

例如——第一个API函数可以用于删除表中指定的记录,而这个函数又会调用另一个函数来刷新数据库。

API测试的测试用例

API测试的测试用例基于:

  • 基于输入条件的返回值:这相对容易测试,因为可以定义输入并验证结果。
  • 不返回任何值:当没有返回值时,需要检查API在系统上的行为。
  • 触发其他API/事件/中断:如果API的输出触发了某个事件或中断,那么应该跟踪这些事件和中断监听器。
  • 更新数据结构:更新数据结构会对系统产生一些结果或影响,应予以验证。
  • 修改特定资源:如果API调用修改了某些资源,则应通过访问相应的资源进行验证。

API测试方法

API测试方法是QA团队在构建准备就绪后执行API测试的预定义策略或方法。此测试不包含源代码。API测试方法有助于更好地理解功能、测试技术、输入参数和测试用例的执行。

以下几点有助于用户进行API测试:

API Testing Approach

  1. 理解API程序的功能并明确定义程序的范围
  2. 应用测试技术,如等价类划分、边界值分析和错误猜测,并为API编写测试用例。
  3. 需要适当规划和定义API的输入参数
  4. 执行测试用例并比较预期结果和实际结果。

API测试与单元测试的区别

单元测试 API测试
由开发者执行 由测试人员执行
测试单独的功能 测试端到端功能
开发者可以访问源代码 测试人员无法访问源代码
也涉及UI测试 仅测试API功能
仅测试基本功能 测试所有功能问题
范围有限 范围更广
通常在提交代码前运行 在构建创建后运行测试

如何测试API

API自动化测试除了通常的软件开发生命周期(SDLC)流程外,至少应涵盖以下测试方法:

  • 发现性测试:测试团队应手动执行API中记录的调用集,例如验证API公开的特定资源是否可以根据需要列出、创建和删除。
  • 可用性测试:此测试验证API是否功能正常且用户友好。并检查API是否与其他平台良好集成。
  • 安全测试:此测试包括需要何种类型的身份验证以及敏感数据是否通过HTTP或两者都被加密。
  • 自动化测试:API测试最终应创建一组脚本或工具,可用于定期执行API。
  • 文档:测试团队必须确保文档充分,并提供足够的信息以与API交互。文档应作为最终交付物的一部分。

API测试的最佳实践

  • API测试用例应按测试类别分组。
  • 在每个测试用例顶部,您应包含所调用API的声明。
  • 参数选择应在测试用例中明确提及。
  • 优先处理API函数调用,以便测试人员更容易进行测试。
  • 每个测试用例都应尽可能独立,不受依赖关系影响。
  • 在开发中避免“测试链”。
  • 在处理一次性调用函数时(如 - Delete, CloseWindow 等),必须特别小心。
  • 调用顺序应执行并精心规划。
  • 为了确保全面的测试覆盖,为API的所有可能的输入组合创建API测试用例。

API测试检测到的bug类型

  • 未能优雅地处理错误情况
  • 未使用的标志
  • 缺少或重复的功能
  • 可靠性问题。难以连接并从API获取响应。
  • 安全问题
  • 多线程问题
  • 性能问题。API响应时间非常高。
  • 向调用者发出不正确的错误/警告
  • 对有效参数值处理不当
  • 响应数据结构不正确(JSON 或 XML

如何进行API测试自动化

1) ReadyAPI

ReadyAPI是RESTful、SOAP、GraphQL及其他网络服务的功能、安全和负载测试的领先工具。在一个直观的平台中,您将获得三个强大的工具:ReadyAPI Test、ReadyAPI Performance和ReadyAPI Virtualization。通过这些工具,您可以执行功能、安全和性能/负载测试。您还可以使用我们强大的虚拟化工具模拟API和网络服务。此外,您可以在每次构建过程中轻松集成您的CI/CD管道

ReadyAPI

主要功能

  • ReadyAPI 可以集成到任何环境中。
  • 它具有智能断言功能,可以快速针对数百个端点创建批量断言。
  • 原生支持 Git、Docker、Jenkins、Azure 等。
  • 支持命令行进行自动化测试。
  • 支持功能测试的并行执行和作业排队。
  • 促进代码重用
  • 消除测试和开发过程中的依赖关系。

访问 ReadyAPI >>

14 天免费试用(无需信用卡)

以下教程提供了自动化API测试的详细指南。

此外,还有其他API测试工具。点击此处查看。

API测试的挑战

API测试的挑战包括:

  • Web API测试的主要挑战是参数组合、参数选择和调用顺序
  • 没有可用的GUI来测试应用程序,这使得输入值变得困难。
  • 在不同的系统中验证和核实输出对于测试人员来说有些困难。
  • 测试人员需要了解参数的选择和分类。
  • 需要测试异常处理功能。
  • 测试人员需要编程知识。

结论

API由一组代表业务逻辑层的类/函数/过程组成。如果API没有得到适当的测试,它不仅可能在API应用程序中,而且在调用应用程序中都会引起问题。它是软件工程中不可或缺的测试。