Пирамида тестирования
Вопрос
Какие тесты писать фронтенду и в каком соотношении?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
юнит - на чистую логику: утилиты, редьюсеры, форматтеры
интеграционные - на сценарий экрана с замоканной сетью
e2e - единицы, только критические пути
e2e дороже: медленные, нестабильные, требуют окружения
мера полезности - не покрытие в процентах, а пойманные регрессии
тест на реализацию ломается при рефакторинге и не ловит багов
Что могут спросить следом
- Что тестировать в React-компоненте, а что нет
- Почему высокое покрытие не равно качеству
- Как бороться с нестабильными e2e
Разбор
Много быстрых юнит-тестов на чистую логику; заметно меньше интеграционных - рендер экрана с подменённой сетью, проверка сценария глазами пользователя; и единицы e2e на то, потеря чего стоит денег: регистрация, оплата, оформление.
Причина пропорции - цена: e2e медленные, зависят от окружения и нестабильны. Десять минут красного CI из-за плавающего e2e приводят к тому, что тесты перестают читать.
Про покрытие честный ответ: процент - плохая цель. 100% покрытия геттеров не ловят ничего, а один тест на расчёт скидки экономит инцидент. Меряю пользу количеством пойманных регрессий.
И главное правило: тест проверяет поведение, а не реализацию. Тест, знающий про внутреннее состояние, ломается при рефакторинге - и его начинают удалять вместо починки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.