Глосарій

Contract Testing

Contract Testing — тип тестування, що перевіряє відповідність між сервісами-споживачами (consumer) і постачальниками (provider) API. Замість запуску обох сервісів одночасно — кожна сторона перевіряє контракт незалежно.

Проблема, яку вирішує

При мікросервісній архітектурі сервіс A очікує від сервісу B поле user_id, але B перейменував його на userId. Інтеграційні тести не завжди виловлюють такі зміни своєчасно.

Consumer-Driven Contract Testing

  1. Consumer (A) записує очікування у "contract" (pact-файл)
  2. Contract публікується у Pact Broker
  3. Provider (B) автоматично перевіряє, що відповідає контракту
  4. Якщо B змінить API — тест провалиться ще до деплою

Інструменти

Pact — найпопулярніший фреймворк. Підтримує PHP, Node, Java, Go та інші. Pact Broker — центральне сховище контрактів.