為什麼金融機構紛紛採用 API 契約測試?
金融服務廣泛使用內部和外部 API。例如,金融科技新創公司可能會使用開放銀行 API 來啟動資金轉帳或監控交易。或者,銀行可能會有使用 API 通訊的內部微服務、網路應用程式和行動應用程式。在這兩種情況下,失敗都不是選項。
讓我們仔細看看為什麼您應該使用契約測試而不是整合測試、Pactflow 的雙向支援如何使契約測試可擴展,以及金融服務業的成功案例。
API 契約測試消除了整合測試和 E2E 測試的許多問題,使其更容易確保內部和外部 API 使用者的穩健體驗。
為什麼要使用 API 契約測試?
許多金融機構使用整合測試來驗證微服務、網路應用程式和行動應用程式是否可以進行通訊。雖然有幾種整合測試,但最常見的是端對端測試 (E2E),它涉及在類似生產的環境中部署所有內容,並針對它執行一系列測試情境。
不幸的是,整合測試出了名的速度慢且難以維護。例如,測試工程師必須確保每個系統在執行任何測試之前都處於正確的狀態。更糟的是,在分散式和遠端系統中偵錯失敗的測試幾乎是不可能的。最後,這些問題往往會隨著規模擴大而加劇。
契約測試透過捕獲兩個服務之間的互動並將它們儲存在契約中來解決這些問題。雖然類似於架構測試和其他方法,但契約測試不需要雙方達成共識。相反地,您可以單獨測試每個系統,並且自動化確保契約是最新的。
Pact 如何提供協助
Pact 是一個以程式碼優先、由消費者驅動的契約測試工具,需要存取整合點兩側的程式碼。消費者撰寫一個可以操縱提供者伺服器狀態的單元測試。這樣,消費者可以在到達 E2E 測試的最後階段之前,確保他們的應用程式與提供者的基礎架構良好協作。
- 消費者針對提供者模擬測試其行為
- 一份文件,記錄系統之間所需的互動。
- 契約在團隊之間共享,以實現協作。
- 契約中的請求會針對提供者 API 重新執行,並根據消費者的期望進行驗證。
- 提供者模擬任何其他系統,以隔離測試它們。
與提供者驅動的契約測試工具不同,Pact 契約是在執行自動化消費者測試期間產生的。因此,測試僅涵蓋消費者實際使用的 API 部分,並且測試會隨著時間自動發展。無需保持靜態契約測試規格為最新狀態即可有效。
新增雙向支援
Pactflow 是一個擴展 Pact 功能的契約測試工具,支援雙向契約,提供更大的彈性。該工具允許消費者和提供者發布他們自己的整合版本。然後,他們可以使用跨契約驗證來確保它們彼此相容。
Pactflow 中的跨契約驗證工作流程。來源:Pactflow
透過分離提供者和消費者契約,雙向支援使消費者能夠進行變更並立即確定它們是否可以部署。同時,提供者不必擔心管理提供者狀態或維護大量範例。分散式團隊、多個服務和各種整合點都不是問題!
Pactflow 提供了其他幾種功能,旨在支援團隊和企業開始並擴展他們的契約測試計畫,例如團隊和基於角色的存取、安全驗證和稽核追蹤。它還為簡化本機開發、提取請求狀態檢查、網路掛鉤、測試見解、加密密碼提供託管存根,並支援 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 測試,並將問題到達生產使用者的風險降到最低。