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测试教程中查看上述每种类型的示例。
任何类型的数据
示例:有一个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测试 |
---|---|
由开发者执行 | 由测试人员执行 |
测试单独的功能 | 测试端到端功能 |
开发者可以访问源代码 | 测试人员无法访问源代码 |
也涉及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 可以集成到任何环境中。
- 它具有智能断言功能,可以快速针对数百个端点创建批量断言。
- 原生支持 Git、Docker、Jenkins、Azure 等。
- 支持命令行进行自动化测试。
- 支持功能测试的并行执行和作业排队。
- 促进代码重用
- 消除测试和开发过程中的依赖关系。
14 天免费试用(无需信用卡)
以下教程提供了自动化API测试的详细指南。
此外,还有其他API测试工具。点击此处查看。
API测试的挑战
API测试的挑战包括:
- Web API测试的主要挑战是参数组合、参数选择和调用顺序。
- 没有可用的GUI来测试应用程序,这使得输入值变得困难。
- 在不同的系统中验证和核实输出对于测试人员来说有些困难。
- 测试人员需要了解参数的选择和分类。
- 需要测试异常处理功能。
- 测试人员需要编程知识。
结论
API由一组代表业务逻辑层的类/函数/过程组成。如果API没有得到适当的测试,它不仅可能在API应用程序中,而且在调用应用程序中都会引起问题。它是软件工程中不可或缺的测试。