Инженерная практика
Контрактное тестирование: тест с выбором ответа
Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты реально принимаешь на платформе сервисов, деплоящихся независимо — не определение для заучивания, а компромисс под настоящей связанностью.
Убедись, что связываешь крах e2e на масштабе, consumer-driven-запись, provider verification, гейт can-i-deploy и границы — тот синтез, к которому вели отдельные уроки.
Почему надёжность общего e2e-окружения деградирует по мере добавления сервисов и что из этого следует про решение?
Провайдер возвращает 40 полей; потребитель читает 4. Почему запись только этих 4 (по типу) — правильный охват для consumer-driven-контракта?
Во время provider verification провайдер добавил три новых поля в ответ, не упомянутых в pact потребителя, но и переименовал одно поле, которое потребитель читает. Каков итог верификации?
У взаимодействия `given` = 'a price with id 42 exists', но команда провайдера не написала обработчик этого состояния. Верификация падает. Как сениор должен это читать?
Новый pact потребителя зелено верифицирован против последней CI-сборки провайдера, пайплайн весь зелёный, поэтому он деплоится — и prod сразу падает. Какой вопрос был неверным и какой задаёт верный?
Все контракты проходят, но провайдер вернул структурно-идеальный `amount_cents: -500` для возврата, и checkout списал отрицательный баланс. Что это говорит о месте контрактного тестирования в стратегии?
Сквозная линия юнита — один конвейер решений: e2e рушится, потому что здоровье общего окружения — произведение аптаймов всех сервисов, поэтому совместимость спускают на тест каждого ребра; потребитель записывает реальное использование по типу в pact; провайдер верифицирует, проигрывая каждое взаимодействие против реального сервиса и проверяя минимальную ожидаемую форму с provider states, засевающими данные; can-i-deploy превращает матрицу верификации в гейт деплоя, сверяя твою git-SHA-версию с реально развёрнутым; а жёсткая граница — контракты проверяют форму, не семантику — и есть причина, по которой выживает тонкий слой настоящих e2e-smoke-тестов. Каждый неверный ответ здесь — реальный неверный поворот реальной команды.