Глоссарий

Contract Testing

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

Проблема, которую решает

При микросервисной архитектуре сервис A ожидает от сервиса B поле user_id, но B переименовал его в userId. Интеграционные тесты не всегда улавливают такие изменения вовремя.

Consumer-Driven Contract Testing

  1. Consumer (A) записывает ожидания в "контракт" (pact-файл)
  2. Контракт публикуется в Pact Broker
  3. Provider (B) автоматически проверяет, что соответствует контракту
  4. Если B изменит API — тест провалится ещё до деплоя

Инструменты

Pact — наиболее популярный фреймворк. Поддерживает PHP, Node, Java, Go и другие. Pact Broker — центральное хранилище контрактов.