为什么金融机构都在采用 API 契约测试?

  2022 年 8 月 24 日

为什么金融机构都在采用 API 契约测试?

金融服务广泛使用内部和外部 API。例如,一家金融科技初创公司可能会使用开放银行 API 来发起资金转账或监控交易。或者,一家银行可能拥有使用 API 进行通信的内部微服务、Web 应用程序和移动应用程序。在这两种情况下,失败都不是选项。

让我们仔细看看为什么您应该使用契约测试而不是集成测试,Pactflow 的双向支持如何使契约测试具有可扩展性,以及金融服务行业的成功案例。

API 契约测试消除了集成测试和 E2E 测试的许多问题,使其更容易确保内部和外部 API 使用者获得强大的体验。

为什么选择 API 契约测试?

许多金融机构使用集成测试来验证微服务、Web 应用程序和移动应用程序是否可以通信。虽然有几种集成测试,但最常见的是端到端测试 (E2E),它涉及在类似生产的环境中部署所有内容,并针对其运行一系列测试场景。

不幸的是,集成测试非常慢并且难以维护。例如,测试工程师必须确保每个系统在运行任何测试之前都处于正确的状态。更糟糕的是,调试分布式和远程系统中失败的测试几乎是不可能的。最后,这些问题往往会随着规模的扩大而加剧。

契约测试通过捕获两个服务之间的交互并将其存储在契约中来解决这些问题。虽然与模式测试和其他方法类似,但契约测试不需要双方达成共识。相反,您可以单独测试每个系统,并且自动化可确保契约是最新的。

Pact 如何提供帮助

Pact 是一种以代码为先的、消费者驱动的契约测试工具,它需要访问集成点两侧的代码。消费者编写一个可以操作提供者服务器状态的单元测试。这样,消费者就可以确保他们的应用程序在达到 E2E 测试的最后阶段之前就可以与提供者的基础设施良好地协同工作。

  1. 消费者针对提供者模拟测试其行为
  2. 一份记录系统之间所需交互的契约。
  3. 契约在团队之间共享,以实现协作。
  4. 契约中的请求会针对提供者 API 进行重播,并根据消费者的预期进行验证。
  5. 提供者模拟任何其他系统以隔离测试它们。

与提供者驱动的契约测试工具不同,Pact 契约是在执行自动化消费者测试期间生成的。因此,测试仅涵盖消费者实际使用的 API 部分,并且测试会自动随时间演变。无需保持静态的契约测试规范为最新即可生效。

添加双向支持

Pactflow 是一种扩展了 Pact 功能的契约测试工具,它支持双向契约,从而提供更大的灵活性。该工具允许消费者和提供者发布他们自己的集成版本。然后,他们可以使用跨契约验证来确保彼此兼容。

Pactflow 中的跨契约验证工作流程。来源:Pactflow

通过分离提供者和消费者契约,双向支持使消费者能够进行更改并立即确定是否可以部署。同时,提供者不必担心管理提供者状态或维护大量示例。分布式团队、多个服务和各种集成点都不是问题!

Pactflow 提供了多种其他功能,旨在支持团队和企业启动和扩展其契约测试计划,例如团队和基于角色的访问、安全身份验证和审计跟踪。它还为简化的本地开发、拉取请求状态检查、Webhook、测试见解、加密机密以及对 Terraform 的支持提供了托管存根,以避免配置漂移并确保 CI/CD 管道顺利运行。

使用 OpenAPI 规范

Pactflow 的双向契约测试还可以与 OpenAPI(一种 API 规范和文档工具)配合使用。事实上,许多 API 测试套件都以使用 OAS 其他协议的基于模式的测试开始。随着组织处理更大的系统和更高程度的复杂性,对契约测试的需求往往会随着时间的推移而出现。

当然,SwaggerHub/OAS 除了测试之外,还具有许多其他优点。例如,API 模拟工具可以轻松虚拟化操作而无需任何代码;SDK 生成工具可以帮助开发人员创建最新的库;样式验证器可以帮助确保开发人员 IDE 中 API 的一致性。

客户成功案例

许多大型金融服务机构正在利用契约测试来确保其 API 的稳定性。

M1 Finance 是一家位于芝加哥的个人理财应用程序,拥有数十万用户,它拥有强大的后端测试,但其前端 API 网关只有一些集成和 E2E 测试。此外,虽然 TypeScript 和 GraphQL 提供了一定程度的安全性,但它们没有一套强大的测试自动化工具来确保稳定性。

通过采用 Pactflow 进行契约测试,该公司改进了工程和产品之间的沟通与协作,并消除了耗时的手动测试过程。由于 Pactflow 的简化完整契约测试功能,从使用 OSS Pact Broker 进行概念验证到将主要利益相关者纳入其中,该过程花费了不到六个月的时间。

万事达卡的忠诚奖励应用程序也广泛使用 Pact 的契约测试功能。这些应用程序依赖 REST API 来配置持卡人可以根据其信用卡使用的返利促销活动。当然,对 REST API 的任何意外更改都可能破坏该应用程序,从而产生重大风险。

该公司在其持续集成和部署 (CI/CD) 流程中实施了 Pact 契约,以生成契约并将其发布到代理,以便提供者可以使用。然后,提供者将检索契约并针对它们运行自动化契约测试,作为他们自己的 CI/CD 管道的一部分。

总结

契约测试可以通过在软件开发生命周期的早期向开发人员提供有关 API 端点的快速可靠的反馈,从而消除 API 集成和 E2E 测试的许多最具问题性的方面。通过在消费者和提供者之间建立契约,双方都可以最大限度地降低 API 规范更改或其他问题导致崩溃或中断的风险。如果出现问题,他们可以在开发过程的早期解决问题,这样可以更快更简单地解决问题。

免费试用 Pactflow,了解如何轻松升级您的 API 测试,并最大限度地降低问题影响生产用户的风险。