Инженерная практика
Контрактное тестирование: тест на припоминание
Припоминание бьёт перечитывание. На каждый промпт скажи или запиши полный ответ по памяти, прежде чем открыть эталон — именно усилие припоминания закрепляет механизм.
Восстанови позвоночник юнита — почему рушится e2e, как рождается pact, что доказывает provider verification, что добавляет can-i-deploy, как эволюционировать контракт и где контракты заканчиваются — не подглядывая в уроки.
- 01Почему сквозное интеграционное тестирование рушится на масштабе и где именно в тестовой пирамиде дыра, через которую проскальзывает переименование поля?
- 02Пройди по тому, как рождается consumer-driven pact-файл, и почему это делает его доверительнее, чем рукописная OpenAPI-дока.
- 03Что реально делает provider verification, включая minimal-response-сравнение и роль provider states?
- 04Почему зелёной верификации недостаточно для деплоя и что вместо этого проверяет can-i-deploy? Почему версионировать по git SHA и записывать деплои в конце rollout?
- 05Как выкатить breaking-изменение провайдера, не ломая потребителей, и как pending/WIP-pact'ы обрабатывают зеркальный, consumer-led случай?
- 06Назови жёсткие границы контрактного тестирования и сениорское суждение про контракты против сквозных тестов.
Если ты смог восстановить каждый ответ по памяти, ты держишь позвоночник юнита: e2e рушится, потому что здоровье общего окружения — произведение аптаймов всех сервисов, поэтому совместимость спускают на слой каждого ребра; pact — запись прошедшего consumer-кода по типу, доверительная там, где дока гниёт; provider verification проигрывает каждое взаимодействие против реального сервиса и проверяет минимальную форму с state handler’ами, засевающими данные; can-i-deploy сверяет твою git-SHA-версию с реально развёрнутым; expand-then-contract плюс pending/WIP-pact’ы эволюционируют контракты без lockstep; а границы — форма, не семантика, только известные потребители, реальные накладные, расхождение фикстур и production — и есть причина, по которой всегда выживает тонкий слой настоящих e2e-smoke-тестов.