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

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

TDD: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — давление на дизайн, правило границ для дублёров, формы property, компромисс по стабильности спеки и mutation score как честная метрика.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый — решение, которое senior принимает под реальными ограничениями: хрупкий набор, незнакомый вендор, зелёный CI поверх 67% mutation score — не определение для заучивания.

Цель

Убедись, что связываешь сквозную линию юнита: тест-сначала как давление на дизайн, правило границ для дублёров, property вместо примеров, когда налог TDD оправдан, и mutation score как метрику, которую покрытие не подделает.

Викторина

Пишешь тест сначала и обнаруживаешь, что для проверки одного правила отмены заказа нужно сконструировать четырёх коллабораторов — БД, платёж, email, флаги. О чём на самом деле говорит тест?

Викторина

PriceCalculator использует чистый TaxRule, который ты владеешь, и сторонний CurrencyApi по HTTP. Как задублировать каждого для устойчивого unit-теста?

Викторина

Денежный форматтер имеет 94% покрытия и восемь месяцев зелёного CI, потом дважды списывает с клиента на значении, оканчивающемся на .005. Почему каждый example-тест это пропустил и что бы поймало?

Викторина

Senior настаивает на полном TDD для двухдневного spike по оценке незнакомого вендорского API и решения, подписывать ли контракт. Почему это неверное решение?

Викторина

Биллинговый модуль показывает 100% покрытия строк, но 67% mutation score, с выжившим граничным мутантом '>' → '>='. Как это читать?

Викторина

Сквозь весь юнит — какая линия отличает набор тестов-актив от набора-обузы?

Итог

Спина юнита — один цикл суждения. Тест-сначала — это давление на дизайн: трудносконструируемый объект и есть дизайн-ревью, а не препятствие для мокания. Правило границ укрощает дублёров: мокай то, что не можешь прогнать, используй реальные объекты для своего кода, проверяй состояние. Example-тесты покрывают лишь воображённые входы, поэтому property генерируют остальное и шринкуют падение до минимального контрпримера. Налог TDD (15–22%) окупается пропорционально стабильности спеки и времени жизни кода — сделай spike по неизвестному, потом перестрой. А mutation score — честная метрика: покрытие доказывает, что строка прогналась, выживший мутант доказывает, что тест баг бы пропустил. Сквозь всё это — привязывайся к поведению, никогда к структуре.

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

Trademarks belong to their respective owners. Editorial reference only.