Пирамида тестирования

↑ 2.2 Тестирование: основы · → Следующая

Обязательно~3 мин чтенияУровень: middle

Зачем это на собесе

Что и как вы тестируете на фронтенде и в каком соотношении.

Объяснение

УровеньЧто проверяетИнструментыСкорость
Статический анализтипы, стиль, ошибкиTypeScript, ESLint, Prettierмгновенно
Unitфункции, composables, сторыVitest, Jestмиллисекунды
Componentкомпонент с рендером и взаимодействиемVue Test Utils, Testing Libraryдесятки мс
Integrationнесколько модулей (страница + сторы + моки API)Vitest + MSWсотни мс
E2Eпользовательские сценарии в браузереPlaywright, Cypressсекунды
Визуальныерегрессия внешнего видаStorybook + Chromatic, Playwright screenshotsсекунды
Нефункциональныеa11y, производительностьaxe, Lighthouse CIпо расписанию

Пирамида: много быстрых unit-тестов, меньше компонентных/интеграционных, мало E2E. Для UI-приложений популярна «трофейная» модель (Testing Trophy): упор на интеграционные тесты с позиции пользователя, плюс статический анализ в основании.

Принципы:

  • Тестируйте поведение, а не реализацию: что видит пользователь, а не внутренние переменные.
  • Тест должен падать по одной причине и указывать на неё.
  • Изолируйте внешний мир (сеть, время, случайность).
  • Покрытие — индикатор, а не цель.
  • Тесты должны быть быстрыми и стабильными (без flaky).

Нюансы и подводные камни

  • Тестирование деталей реализации (приватные методы, структура DOM) ломается при рефакторинге.
  • Слишком много E2E — медленно и нестабильно.
  • Моки везде превращают тест в проверку моков.
  • Снимки (snapshots) больших компонентов быстро принимают «на веру».

Практика

  1. Распределите существующие тесты по уровням и найдите пробелы.
  2. Определите, что в вашем приложении критично покрыть E2E (3–5 сценариев).
  3. Настройте запуск unit-тестов в pre-commit/CI.

Вопросы с ответами

Связанные темы