Contract testing проверяет согласованность ожиданий между поставщиком и потребителем интерфейса. Это особенно полезно в системах с несколькими сервисами и клиентами, где изменение API легко ломает соседние компоненты без явного сигнала до интеграции.
Что считается контрактом
- →Структура запроса и ответа.
- →Обязательные и опциональные поля.
- →Типы данных и допустимые значения.
- →Поведение при ошибках и статус-коды.
Чем это отличается от обычного API testing
Обычный API testing отвечает на вопрос, правильно ли работает сам сервис. Contract testing фокусируется на совместимости ожиданий между двумя сторонами: не сломает ли изменение одного компонента другого потребителя.
Когда особенно полезно
- →В микросервисах.
- →При независимых командах backend и frontend/mobile.
- →При частых релизах и параллельной эволюции API.
- →Там, где интеграционный стенд нестабилен или дорог для полной проверки.
Ограничения
- →Contract testing не заменяет full integration testing.
- →Он не доказывает, что бизнес-логика верна.
- →Плохой контракт может быть формально совместимым, но всё равно бесполезным для продукта.
Хороший contract testing даёт ранний сигнал о несовместимости и делает изменение интерфейсов более безопасным. Для QA это мощный инструмент снижения интеграционных рисков.