Contract testing verify API contract (format, structure, behavior) giữa service provider và consumer mà không cần cả hai chạy đồng thời — quan trọng trong microservices.
- Consumer-driven (Pact) — consumer viết test định nghĩa kỳ vọng về response của provider (pact file); provider chạy pact file để verify mình thỏa mãn các kỳ vọng đó.
- Pact Broker — kho trung tâm cho pact files, track version consumer/provider nào tương thích với nhau; tool
can-i-deploykiểm tra một version có deploy an toàn không. - Vì sao hơn E2E trong microservices — E2E cần tất cả services chạy đồng thời (đắt, chậm, flaky); contract test chạy độc lập theo từng service — nhanh, tin cậy, chỉ đúng service phá contract.
- Phát hiện breaking change — provider đổi response schema → pact verification fail ngay trong CI, trước khi deploy — không phải phát hiện trong production.
- Event-driven architecture — schema registry (Avro, Protobuf) với rule backward/forward compatibility là dạng contract testing cho async messaging.
- OpenAPI — Dredd, Spectral verify implementation theo OpenAPI spec — đơn giản hơn Pact nhưng ít mạnh hơn.