Опорная идея
Тесты нужны не для галочки, а чтобы смело менять код. Ученик различает unit-тесты, интеграционные тесты и end-to-end сценарии. Unit-тест быстро проверяет функцию, интеграционный — взаимодействие модулей, e2e — путь пользователя через интерфейс.
Правило: чем ниже уровень теста, тем он быстрее и точнее указывает ошибку; чем выше, тем ближе к реальному пользовательскому сценарию.