学习API测试的简单指南

发表于:2019-12-27 11:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:vsky    来源:高阶软件测试

  什么是API?
  API代表应用程序可编程接口。API具有软件应用程序模块的基础集合,其中每个模块都提供特定功能。它接受一组输入参数,并返回所需的结果作为输出。API通常与平台无关,因此可以在跨平台环境中使用它们。为了用简单的语言理解这一点,请考虑需要跨平台中多个应用程序之间的安全数据的银行应用程序,而不是使用多个应用程序对数据库进行单独的调用,而是通过具有多个功能的单个API进行这些调用具有不同的输入参数来满足所需的查找请求。
  什么是API测试
  API测试专用属性与其他种类的通用软件测试接口不同,如下所示:
  API架构知识:要测试API,测试人员应该知道他要测试的内容,在仔细阅读了架构文档后可以清楚地知道。人们应该了解API所需的环境,其使用的OS,所需的硬件规格以及其对平稳运行的系统要求。在可以针对API启动测试之前,此知识非常重要。
  良好的编程技巧:要测试API,测试人员应该具有良好的编程知识,以便他能够阅读API代码并帮助开发人员进行代码审查,并了解API内部函数之间的基本工作流程。由于测试人员了解API的内部行为,因此这将有助于识别错误。这就是白盒测试的目的所在。
  功能测试和测试自动化:仅当API满足其开发用途时才有用,因此需要黑盒测试或功能测试。如前所述,API可以被视为接受输入参数并以所需输出响应的黑匣子,因此应设计涵盖API所有功能方面的测试用例,并且应使其自动化。市场上有各种测试工具,例如FitNesse,QTPTestNG等,可用于自动执行功能测试用例。自动化为后续版本的API节省了回归工作。
  文件和文书工作:与SRS文件一样,对于任何项目开发来说都是必不可少的文件,类似于在开发API之前需要FRD(功能需求文件)的方式。FRD涵盖了API中存在的每个函数和过程的所有可能细节,例如函数接受的多个输入参数,输出对象或参数,输入参数类型,输出参数类型,边界值等。FRD帮助测试人员编写功能测试用例涵盖了正面和负面的测试场景,可以手动测试也可以自动测试回归测试。
  集成和系统测试:仅测试API是不够的。在与其他软件应用程序集成之后,应该对其进行良好兼容性的测试,不要感到惊讶。通常,这种系统测试是与不同的测试团队合作完成的,这需要大量的协调和良好的沟通技巧。
  性能测试:一个API被多个应用程序使用,因此,需要性能测试来测试它可以处理的请求数量和可接受的延迟。需要进行负载和可靠性测试来标记阈值,因此它决定了该API一次可以服务的应用程序数量。
  项目截止日期:如上所述,API测试不是很普遍,它本身涉及不同类型的测试,因此它消耗大量的测试时间,并且需要有效的项目管理,而这不应影响项目资源及其质量。
  使用API的优势:
  1)跨多个平台的多个请求的单个网关。
  2)易于在API的现有功能之上添加新功能,以达到新的目的。
  3)在API中处理更改非常简单,而不是在多个应用程序中单独实现这些更改,而是可以在API中的一个位置完成。
  4)API遵循标准的调用输入和输出过程,可以是本地的或远程的。
  5)它是独立于平台的,因此易于在跨平台的多个应用程序中使用。
  6)建立API是对组织内未来软件的投资,因为它鼓励可重用性。
  API测试最佳做法:
  API测试用例应使用测试类别进行分组
  每个API请求都应有一个我们正在调用的API声明。
  编写一个独立的测试用例,该用例应具有自治性,这样它就可以不受任何依赖地执行。
  在测试用例中,明确提及请求参数。
  确保使用所有可能的输入来创建案例,以进行大部分测试。
  每个API函数调用都应确定优先级。
  尝试远离API“测试链”。
  API测试示例:
  输入和输出参数:
  在编写用于测试API的测试用例时,测试人员应牢记涵盖输入和输出参数的所有方面,即,由输入和输出构成的所有可能的组合。让我们通过下面API中的函数示例来了解这一点:
 String retrieveBankLocation (String CUSIP, String productType, Integer FirmCode, String currency);
  在上面的示例中,测试应涵盖以下几点:
  作为肯定的测试方案,测试用例应涵盖有效的输入类型和传递给函数以获取所需输出的多个参数。
  作为否定测试方案,如果应用程序碰巧传递输入参数(例如整数)代替String,则API的行为方式。API是否具有足够的异常处理?
  如果API在给定的一组输入参数中未在其数据库中找到任何记录,将会发生什么?
  如果在操作过程中API内部发生错误(例如内存不足错误,内部服务器错误等),API将如何通知伙伴应用程序。
  边界值:
  API应该为其参数的边界值设置一个限制。例如,上述函数中的CUSIP字段只能接受9个字符,并且除了伙伴应用程序传递给API以外,还不能接受任何其他字符,它应拒绝带有应用程序错误字符串的调用。
  一个积极的测试场景,其中满足输入参数的边界条件,范围从最小值到最大值长度。
  在不满足边界条件且输入参数范围变化超出最小值和最大值长度的情况下的负测试方案。
  另外,请记住添加将特殊字符或垃圾数据传递到字符串输入参数等中的方案。
  强制值:
  API中的函数可以具有多个输入参数,其中一些输入参数可能是强制性的,并且不能接受空值,而其他输入参数可以接受空值。以下是编写测试用例时要注意的一些重要事项。
  肯定的测试场景,涵盖强制参数具有有效值和非强制输入参数具有或不具有有效值的组合。
  负测试方案,其中将空值传递给强制输入参数。API将如何响应?它是否有足够的异常处理?它是否以所需的错误代码或字符串通知目标应用程序?
  API调用的顺序:
  应用程序可能需要API函数之一的输出作为其他API函数的输入,依此类推。在使用合作伙伴应用程序测试这种复杂的逻辑时,应牢记以下几点。让我们用下面的例子来理解这一点。
 String getBankAccountNumber (retrieveBankLocation (String CUSIP, String productType, Integer FirmCode, String currency), String LegacyCode);
  依次执行功能的顺序。这里retrieveBankLocation功能前应执行getBankAccountNumber功能。
  间歇函数的响应延迟必须合理,以避免在处理逻辑时在后续函数中传递null或错误值。
  在将一个函数输出用作序列中API的其他函数的输入时,边界值得到了很好的执行。
  应当进行适当的异常和错误处理。
  API测试和单元测试之间的区别:
  API测试工具:
  SOAP UI
  Postman
  API Fortress
  Parasoft
  HP QTP(UFT)
  vREST
  Airborne
  API Science
  Apigee
  APIpray Inspector
  Citrus Framework
  Hippie-Swagger
  HttpMaster Express
  JMeter
  Karate DSL
  Mockbin
  Ping API
  Pyresttest
  Rest Console
  Rest-assured
  RoboHydra Server
  SOAP Sonar
  Tricentis
  Unirest
  WebInject

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号