Есть два сервиса: один отдаёт данные, другой их использует. По отдельности оба работают. Но после очередного релиза один сервис меняет API — и второй неожиданно перестаёт понимать ответ.
🔜 Именно для таких ситуаций существует Contract Testing. Вместо того чтобы запускать оба сервиса вместе, они заранее проверяют, соблюдают ли общий контракт.
🟠 Consumer описывает, какой ответ он ожидает: поля, типы данных и структуру JSON.
🟠 Provider автоматически проверяет, что действительно отдаёт именно такой ответ.
Если контракт нарушен, тест упадёт ещё в CI — до интеграции и выкладки в staging.
🔤 Пример:
Фронтенд ожидает:
{ "price": 12.99 }
После обновления бэкенд начинает возвращать:
{ "price": "12.99" }
Визуально разница почти незаметна, но для клиента это уже другое API. Contract test обнаружит проблему сразу.
Популярные инструменты:
— Pact
— Spring Cloud Contract
👍 — знал/а
🔥 — стало понятнее
📍 Навигация: [Вакансии]
🐸 Библиотека тестировщика
#теория_на_пальцах
