Тестирование frontend
Для чего модуль
Построить тестовую систему, которая уменьшает дефекты в релизе и при этом не парализует скорость разработки.
Результат после прохождения
- Вы выбираете тип теста под риск и цель, а не «по привычке».
- Вы строите сбалансированную test strategy (unit/integration/e2e).
- Вы снижаете flaky rate и повышаете доверие к CI.
- Вы связываете тесты с quality gates и релизным процессом.
Термины и аббревиатуры
| Термин | Коротко |
|---|---|
Unit | Проверка отдельной единицы |
Integration | Проверка взаимодействия |
E2E | Проверка пользовательского пути |
Flaky | Нестабильный тест |
Regression | Поломка ранее рабочего поведения |
Фокус по грейдам
Junior: понимать базовые механики и объяснять их простыми примерами.Middle: применять тему в продуктовых сценариях с учетом рисков и ограничений.Senior: управлять архитектурными trade-offs, метриками и эволюцией решения.
Как работать с модулем
- Возьмите один критичный пользовательский сценарий и покройте его на разных уровнях.
- Для каждого теста фиксируйте, какой риск он покрывает.
- Ведите журнал flaky-тестов и причин нестабильности.
Программа модуля
Урок 1. Тестовая стратегия
Цель: выстроить систему тестов по рискам продукта.
Risk-based подход
- Критичные user flows тестируются глубже.
- Низкорисковые зоны не переинвестируются в дорогие e2e.
- Покрытие — не цель само по себе, а индикатор пробелов.
Test pyramid / test trophy
- Unit — быстро и дешево, но ограниченный контекст.
- Integration — проверка взаимодействий и контрактов.
- E2E — высокая уверенность, высокая стоимость поддержки.
Где ломается в проде
- Слишком много e2e и почти нет unit/integration.
- Тестируют implementation details, а не поведение.
- Нет карты рисков, поэтому тесты покрывают «не то».
Мини-задача (обязательная)
Сделайте risk map для одного продукта и распределите тесты по уровням с объяснением, почему именно так.
Что спросит интервьюер: почему ваша тестовая стратегия именно такая и как она связана с рисками продукта.
Критерий готовности по уроку: вы можете показать, что каждый слой тестов имеет четкую роль и экономический смысл.
Урок 2. Unit и integration на frontend
Цель: писать тесты, которые улавливают реальные регрессии и остаются поддерживаемыми.
Unit тесты
- Тестируйте детерминированную бизнес-логику и утилиты.
- Избегайте привязки к внутренней реализации компонента.
- Минимизируйте ложноположительные проверки.
Integration тесты
- Проверяйте связки «компонент + state + API layer (mocked boundary)».
- Тестируйте пользовательское поведение, а не внутренние вызовы.
- Учитывайте loading/error/empty states.
Где ломается в проде
- Моки не соответствуют реальным контрактам API.
- Тесты проходят локально, но нестабильны в CI.
- Большой объем snapshot-тестов без ценности.
Мини-задача (обязательная)
Покройте один flow тремя тестами: unit для логики, integration для UI-поведения, негативный сценарий ошибки.
Что спросит интервьюер: что именно должны тестировать integration-тесты и чем они отличаются от unit.
Критерий готовности по уроку: ваши unit/integration тесты ловят реальные регрессии и не ломаются от косметических правок.
Урок 3. E2E и качество релиза
Цель: использовать e2e как контроль критичных сценариев, а не как замену всей тестовой пирамиды.
Где e2e дает максимальную ценность
- Сквозные user journeys (auth, checkout, payment, submission).
- Регрессии интеграции между подсистемами.
- Smoke-проверки на release candidate.
Стабильность e2e
- Детеминированные тестовые данные.
- Явные ожидания готовности, без «магических sleep».
- Изоляция окружения и минимизация внешней нестабильности.
Где ломается в проде
- Один большой e2e-suite блокирует delivery.
- Флейки игнорируются, доверие к тестам падает.
- Нет разделения smoke/regression/nightly.
Мини-задача (обязательная)
Соберите e2e smoke pack из 5 критичных сценариев и определите, что запускается на каждый PR, а что nightly.
Что спросит интервьюер: как вы боретесь с flaky e2e и не убиваете скорость команды.
Критерий готовности по уроку: вы можете поддерживать e2e-набор как надежный релизный сигнал.
Урок 4. Метрики и операционка тестирования
Цель: управлять качеством тестирования как процессом команды.
Полезные метрики
- Flaky rate.
- Defect escape rate.
- Test duration и CI lead time.
- Change failure rate после релизов.
Quality gates
- Блокирующие и неблокирующие проверки.
- Политика quarantine для flaky тестов.
- Правила, когда тестовый долг становится релизным риском.
Где ломается в проде
- Метрики есть, но решений по ним не принимают.
- CI сигнал шумный, команда начинает его игнорировать.
- Нет владельца за тестовую платформу.
Мини-задача (обязательная)
Опишите test governance: метрики, пороги, ownership, действия при деградации.
Что спросит интервьюер: какие метрики тестирования вы считаете реально полезными и почему.
Критерий готовности по уроку: вы можете показать процесс, где тесты улучшают качество релиза и остаются экономически оправданными.
Практика
- Составьте test strategy для одного продукта по risk map.
- Перепишите 3 brittle теста в устойчивый формат.
- Подготовьте smoke checklist на релиз.
- Закрепите в Middle JavaScript и React и Senior Frontend.
- Отработайте один сценарий в Песочнице.
Связь с треками и вопросами
- Треки: Junior трек, Middle трек, Senior трек.
- Вопросы: Middle JavaScript и React, Senior Frontend.
- Повторение: 3-5 вопросов без подсказок -> сверка с модулем -> повтор через 24 часа.
Критерий готовности
Вы можете объяснить тестовую систему проекта через риски, стоимость и реальное влияние на релизное качество.
Артефакты после модуля
- Документ test strategy.
- Flaky register и remediation plan.
- Smoke pack и quality gate правила.
- Набор из 5 сильных interview-ответов по тестированию.