awesome-everything EN
↑ Обратно к восхождению

Инженерная практика

Контрактное тестирование: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — почему рушится e2e, consumer-driven-запись, provider verification, гейт деплоя и жёсткие границы.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты реально принимаешь на платформе сервисов, деплоящихся независимо — не определение для заучивания, а компромисс под настоящей связанностью.

Цель

Убедись, что связываешь крах 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-тестов. Каждый неверный ответ здесь — реальный неверный поворот реальной команды.

Продолжить восхождение ↑Контрактное тестирование: тест на припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.