Контрактное тестирование (Contract Testing)

Контрактное тестирование (contract testing) проверяет, что два взаимодействующих сервиса — скажем, фронтенд и API или два микросервиса — согласованы в отношении формата их взаимодействия, не поднимая оба в полноценном интеграционном окружении. «Потребитель» фиксирует свои ожидания (этот эндпоинт, эти поля, эти типы) в виде контракта; затем «поставщик» запускает тест, доказывающий, что он по-прежнему удовлетворяет этому контракту. Инструменты вроде Pact посредничают в обмене такими контрактами между командами. Ценность в том, чтобы ловить ломающие изменения API на этапе сборки, а не в продакшене: если поставщик переименует поле, от которого зависит потребитель, контрактный тест поставщика упадёт ещё до деплоя. Для создателей SaaS с раздельными фронтендом/бэкендом или несколькими сервисами это закрывает разрыв между быстрыми, но поверхностными юнит-тестами и медленными, но хрупкими сквозными тестами: вы получаете уверенность в интеграции без нестабильности, возникающей при поднятии каждой зависимости. Оно тесно связано с версионированием API: контракты прямо в CI показывают, каких именно потребителей сломает изменение.

Похожие термины

Ещё термины: Инструменты разработки