Contract testing

Draft

Что такое contract testing, где он особенно полезен и как он помогает раньше ловить поломки между сервисами и клиентами.

Содержание

Contract testing проверяет согласованность ожиданий между поставщиком и потребителем интерфейса. Это особенно полезно в системах с несколькими сервисами и клиентами, где изменение API легко ломает соседние компоненты без явного сигнала до интеграции.

Что считается контрактом

  • Структура запроса и ответа.
  • Обязательные и опциональные поля.
  • Типы данных и допустимые значения.
  • Поведение при ошибках и статус-коды.

Чем это отличается от обычного API testing

Обычный API testing отвечает на вопрос, правильно ли работает сам сервис. Contract testing фокусируется на совместимости ожиданий между двумя сторонами: не сломает ли изменение одного компонента другого потребителя.

Когда особенно полезно

  • В микросервисах.
  • При независимых командах backend и frontend/mobile.
  • При частых релизах и параллельной эволюции API.
  • Там, где интеграционный стенд нестабилен или дорог для полной проверки.

Ограничения

  • Contract testing не заменяет full integration testing.
  • Он не доказывает, что бизнес-логика верна.
  • Плохой контракт может быть формально совместимым, но всё равно бесполезным для продукта.

Хороший contract testing даёт ранний сигнал о несовместимости и делает изменение интерфейсов более безопасным. Для QA это мощный инструмент снижения интеграционных рисков.