Инженерная практика
TDD: свободное припоминание
Припоминание сильнее перечитывания. На каждый промпт проговори или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет материал.
Восстанови ключевые аргументы юнита — тест-сначала как давление на дизайн, правило границ для дублёров, четыре формы property, компромисс по стабильности спеки и почему mutation score честная метрика — не подглядывая в уроки.
- 01Коллега говорит: «TDD это просто про поднятие покрытия — напишу тесты после, тот же результат». Каков ответ senior?
- 02Сформулируй правило границ для тестовых дублёров и решающий вопрос за ним.
- 03Назови четыре формы property и ситуацию, к которой подходит каждая.
- 04Почему property-тесты находят баги, которые example-набор с 94% покрытия не может, и что делает генерируемые тесты надёжными в CI?
- 05Какие две переменные определяют, окупается ли TDD, и как это отличает давление на дизайн от test-induced design damage?
- 06Как у модуля может быть 100% покрытия строк и 67% mutation score, и как senior внедряет mutation testing с учётом его издержек?
Если ты смог восстановить каждый ответ по памяти, ты держишь спину юнита: тест-сначала — это давление на дизайн, потому что ты первым потребляешь свой API; правило границ (мокай то, что не можешь прогнать, реальные объекты для своего кода, проверяй состояние) укрощает дублёров и ловушку over-mocking; четыре формы property — round-trip, invariant, oracle, metamorphic — находят входы, что пропустили твои примеры, а shrinking и seed делают падения отлаживаемыми; налог TDD в 15–22% окупается пропорционально стабильности спеки и времени жизни кода, поэтому делай spike по неизвестному и отличай давление от damage; а mutation score честная метрика, потому что, в отличие от покрытия, его нельзя удовлетворить исполнением без assertion.