// //

Want to see Parasoft in action? Sign up for our Monthly Demos! See Demos & Events >>

X

通过 API 功能测试达到质量和覆盖率目标

当今的分布式软件环境将各种API与您的软件接触到的每个接口结合在一起,从移动设备到微服务。每个 API 都必须不断进行测试和验证,以确保您的软件能够正常运行。Parasoft的API 测试平台可以快速、高效、智能地满足这些需求。

什么是API?

API代表应用程序编程接口。API是一种软件中介或中间人,它使两个应用程序能够相互通信。例如,每次您在微信上互动、在淘宝上购买产品或在手机上查看新闻时,API都在发挥作用。

API的运行方式如下:当您在计算机或手机上使用应用程序时,该应用程序会连接到互联网,将您的数据发送到服务器。服务器下载信息,根据应用程序的需要对其进行解释,然后以您可以理解和使用的方式向手机或计算机返回响应。

什么是API测试?

测试人员测试API的原因是为了确定API是否满足对功能、安全性、性能和可靠性的期望。API功能测试是必不可少的,因为API是应用程序逻辑中的主要接口,而且测试人员发现GUI测试(图形用户界面测试)难以维护和提供有限的覆盖范围,同时考虑到DevOps和敏捷软件的经常性变化和缩短的发布周期。许多公司发现增加API测试显著扩展了他们的应用程序测试覆盖率。

测试人员直接测试API,换句话说,独立测试,作为集成测试中端到端测试的一个组成部分。在 RESTful APIs之外,事务包括各种端点,例如:

  • 网页界面
  • 大型机
  • ESB
  • 网络服务
  • 企业资源规划系统

测试人员测试开发团队生成的API。此外,他们还测试团队在应用程序中使用的API,包括任何第三方 API。这些测试确定API是否以正确的格式为各种可能的请求返回适当的响应,以及API是否在异常或极端的输入和故障中做出适当的反应。测试通常包括带有XML 或JSON消息负载的SOAP Web服务或 REST API,系统通过JMS、HTTP、HTTPS和MQ发送。测试人员在测试期间使用的其他消息格式是 EDI、FIX和SWIFT。

典型的API自动化测试涉及以下内容:

  • 单元测试
  • 负载测试
  • 功能测试
  • 安全测试
  • 运行时错误检测
  • UI测试
  • 渗透测试
  • 模糊测试

有关开发人员用于测试API的特定测试的详细信息,请参阅下面的类型部分。

API测试的优势

机器对机器和无头通信是现代软件架构中的标准,相关的应用程序编程接口也是如此。这意味着几乎每个在软件上运行的行业都受益于使用API软件测试来确保验证正确操作的功能。

API自动化测试节省时间——也减少麻烦

当今快速、敏捷的DevOps环境意味着您不能依赖手动执行的API测试工具。Parasoft自动对您的API调用的分布式系统的复杂网络进行连续测试。事件监控框架支持对与API格式和协议一致的测试场景进行端到端验证。这些都全部集成到您的CI/CD管道中。

降低测试复杂性

API很复杂。这意味着测试它们也会变得复杂,通常需要大量的技术知识。但是您希望您的开发人员去开发,而不是花时间创建测试用例。Parasoft的自动化API测试平台具有易于使用的GUI驱动界面,无需编写脚本,使经验较少的测试人员能够创建全面的测试用例场景。

访问总覆盖率

有些工具只测试API。其他人只测试UI。您不再需要零碎的方法来确保您的软件开发过程每个方面都被覆盖。Parasoft持续质量平台提供一整套测试——从单元测试到API、UI等。您将获得全面的覆盖和无缝协作。

不要只是测试——要智能测试

由于 API 测试涉及大量活动部分,您想知道哪些更改影响最大,哪些更改首先处理。Parasoft的人工智能和机器学习驱动的API测试平台可以生成与应用程序代码相关的有意义且全面的测试场景。当发生更改时,Parasoft会识别需要运行哪些测试来验证修改后的代码,以避免花费不必要的时间和精力。

主动管理变更

API会发生变化。当此类变化未经测试时,您的应用程序会以意想不到的方式运行。您花费了太多时间来查明问题并更新您的依赖测试用例场景库。Parasoft的API测试平台持续智能地监控变化,因此您的应用程序始终得到验证,您的测试套件始终保持最新的。智能测试执行可识别哪些测试与代码更改一致,以便您可以优化测试工作流程。

一款测试工具涵盖您的所有API

是的,您必须测试每个API接口。问题是:每个API都有自己独特的方式与令人眼花缭乱的消息格式和协议进行通信。确保每个排列和组合的功能可能会耗费大量时间。Parasoft的自动化API测试平台涵盖了业内最广泛的消息协议和格式。它们完全可扩展以涵盖专有格式或自定义协议。

Screenshot of Parasoft SOAtest and Virtualize API testing.

Parasoft的API测试平台通过自动监控API和服务,直观地突出显示发生更新的位置来主动管理更改。

API测试的类型

为了涵盖所有基础,测试人员使用一系列的测试来测试API。以下是主要的类型。

功能测试

API功能测试验证API是否按预期执行,并适当地响应它收到的任何请求。

渗透测试

在测试过程中,测试人员会发现缺乏API专业知识的用户是否能够访问完整的API,包括关于流程、功能和资源的信息。

UI测试

UI测试测试API的用户界面。它主要关注与API连接的接口,而不是API测试本身。

负载测试

这种类型的测试验证应用程序在峰值和正常数据输入下都能正确运行。

运行时错误检测

该测试与API的实际操作相关,特别关注API使用API代码库时的结果。它集中于其中一项或多项:执行错误、监控、错误检测、资源泄漏。

验证测试

这种测试是必不可少的,并且发生在开发的最后环节中。它确认了产品的各种功能和正确的行为以及效率。

安全测试

该测试用于 API保护 ,并确认API应用程序免受外部威胁。它包括测试访问控制结构、用户权限管理、验证加密方法和授权验证。

模糊测试

这是另一个安全测试。测试人员将大量杂项数据(模糊或噪声)输入系统以强制执行负面行为或程序崩溃。这些测试对最坏情况下的API施加压力。

使用动态应用程序安全测试 (DAST) 作为开发工作流程的一部分来执行渗透测试,以便尽早识别潜在的安全风险。

Screenshot of Parasoft SOAtest API security testing

API 测试最佳实践TOP5

为了使 API 能够可靠地运行(包括解决安全问题),我们给出了五个最佳测试实践。

1) 测试大范围的极端情况和条件,并广泛使用自动验证。

高度自动化提供了一系列功能测试场景,您可以系统地复制这些场景。
使用直观的界面自动处理数据库、微服务、消息传递层等方面的复杂案例。这包括:

  • 根据开发人员用于API(如HTTP/REST、Swagger、Kafka、MQ、JSON、EDI、JMS 和固定长度消息等)的各种测试类型和协议指定自动化测试用例。
  • 来自测试用例、数据源或变量的验证、测试负载和配置的参数化。
  • 定义高级测试逻辑,但不使用脚本。
  • 当测试执行时时,事件和消息如何在架构中移动的可视化。
  • 端到端测试用例中包含的大量端点和接口实现全渠道验证的自动化。

2) API不断变化,这给那些没有跟上的公司带来了安全和质量风险。

因此,当API发生变化时,识别并简单、快速、准确地更新测试资产以保持一致是至关重要的。

关键是开发一个系统来评估当前测试所需的更改,然后更新它们甚至创建新的测试。这可以大大减少确保您的测试不会因意外更改而失败,并且不会忽略新功能所需的时间和精力。

3) 使用服务虚拟化模拟测试场景。

这允许您创建模拟的测试用例,进而允许您查看可能难以访问、难以配置测试或尚不可用的依赖资源的行为。

这些资源可能是Web服务、数据库、大型机或第三方应用程序等。您可以将 Web 服务虚拟化 与操作系统和硬件虚拟化结合使用,以访问所需的环境。结合起来,这使您可以更快、更早、更彻底地进行测试。
对于 API 测试,您可以通过两种方式应用服务虚拟化:

  • 模拟对依赖资源行为的访问,例如数据库、移动应用程序、第三方服务或遗留系统。
  • 通过开发一个测试场景来模拟您的API行为,API用户可以创建并测试这个测试场景,而不影响生产产品。即使 API 尚未完成,这也允许开发和后续测试。

4) 使用服务虚拟化进行广泛的性能测试。

API是高度暴露。因此,不稳定和不可预测的流量存在很大的可能性。明智的做法是使用广泛的性能测试来确定您的 API 在遇到激增的需求或不稳定的行为时是否符合预期。这里有些例子。

服务虚拟化允许您创建模拟测试场景,帮助您测试各种性能环境,这些环境在测试中通常很难创建。您可以测试时间、延迟和等待等条件,以复制典型的、峰值和慢速性能,从而为云爆发或有人从另一个大陆的远程位置访问API做好准备。

此外,您可以创建测试人员在实际程序中经常难以重现的各种故障和错误情况——例如,如果您的API使用Amazon Web Services,您可以创建一个场景来模拟AWS离线的情况。

您还可以在相关系统中配置各种情况,以便发现您的API在非常规条件下是否能够提供正确的响应,以及它们是否合理地失败。

您可以复制到第三方应用程序的链接,这可以消除您的测试可能对通常不允许您使用测试数据进行攻击或您没有预算的服务可能产生的任何风险。

5) 使用服务虚拟化广泛测试安全问题。

不幸的是,API提供了很大的表面攻击区域。为了帮助阻止攻击者和重大安全问题,请使用多方面的测试方法。这可确保您已将必要的安全措施写入应用程序。该方法包括:

  • 创建广泛的渗透和攻击情况,包括注入、参数模糊、大负载等。
  • 实施复杂的加密、身份验证和访问控制测试情况。
  • 针对现有操作测试情况运行渗透攻击。
  • 在测试时监控后端,以发现安全性是否受到威胁。

作为一种节省成本的方法,服务虚拟化允许非安全专家执行测试,因为他们不需要编写代码,而只是在各种场景中执行经过验证的测试。服务虚拟化使您能够针对各种依赖安全行为和多种攻击情况将您的API响应作为目标。

何时执行 API 测试的示例

以下是您希望执行 API 测试的两个示例。

社交媒体应用示例

当一个人打开微博或知乎等应用程序时,该应用程序会要求她登录。她可以在应用程序本身或通过百度执行此操作。

当用户使用这两个网络资源中的任何一个时,可以理解该应用程序与百度签订了协议,因此该应用程序可以访问她之前提供给资源的用户的一些信息。

测试人员可以测试使应用程序能够访问所需信息的 API。测试人员还可以进行测试,以确保社交媒体应用程序成功地与百度配合使用,从而使用户能够访问该应用程序。

旅行预定应用示例

当一个人使用携程或飞猪等网络服务预订机票时,他预计会在他需要飞行的日期看到廉价航班。

旅行应用程序必须与参与的航空公司进行沟通,以向旅行者展示最佳的航班时间和价格。API实现了这一点。

测试人员可以进行测试,以确保使旅行应用程序能够与航空公司通信的API正常工作,并且应用程序正在向用户提供正确的信息。

测试人员可以进行测试以确保帮助预订航班的API按预期工作,并验证支付组件——测试人员可以测试允许应用程序与信用卡公司通信并正确处理支付的API,以及保护用户的个人和财务数据安全。

如何开始测试 API

测试API的重点是确保开发和QA团队做了他们应该做的事情,保证应用程序执行和运行正常,并且是可靠和安全的。

自动化API测试避免了人为错误和繁重的工作,因此远远优于手动测试。为了防止在软件开发生命周期的早期出现错误,我们建议将自动化API测试整合到您的持续集成测试管道中。

在白皮书《如何选择正确的 API 测试解决方案》中获取有关为您的团队选择最佳API测试平台的详细信息和指导。

Black woman smiling as she performs API testing on her laptop.

为什么选择 Parasoft?

Parasoft的API测试平台是公认的同类最佳平台,具有创新的工具和对120多种消息格式和协议的广泛支持。借助可视化拖放工具,用户无需编写任何代码即可创建最复杂的测试场景。诸如测试流逻辑、复杂断言、循环、数据驱动和关键字关联之类的东西,例如BDD和Cucumber,都可以用最少的技术经验轻松构建。

此外,API测试套件可以重复用于非功能验证,包括负载、性能和API安全测试。这以最少的返工和努力增加了应用程序的覆盖范围和质量。

与Parasoft合作改进您的API测试。

常见问题

测试人员几乎完全在应用程序的业务层、UI和数据源之间执行API测试。理想情况下,他们测试所有这些层。

不存在大的限制,但您需要具备良好的API测试技能才能成为一名测试人员。

API 测试包括三个主要步骤。

  1. 发送请求以及所需的输入数据。
  2. 接收带有输出数据的响应。
  3. 根据 API 规范验证您收到的响应是否正确。