Вопросы по тестированию на собесе
↑ 9.2 Финальная подготовка: live coding и вопросы · ← Предыдущая · → Следующая
Зачем это на собесе
Тестирование — обязательная часть для middle+: проверяют не инструменты, а подход.
Базовые вопросы
Виды тестов и пирамида?
Unit (функции, composables), component (компонент в изоляции), integration (несколько модулей), E2E (сценарий в браузере). Больше быстрых нижних уровней, меньше медленных E2E.
Что тестировать, а что нет?
Поведение и бизнес-логику, критические пути, граничные случаи, регрессии. Не тестировать детали реализации, сторонние библиотеки, тривиальный код.
Как тестируете Vue-компонент?
Vitest + Vue Test Utils или Testing Library: рендер, взаимодействие пользователя, проверка видимого результата и событий; запросы по роли и тексту, не по классам.
Как мокаете API?
MSW на сетевом уровне (работает и в тестах, и в Storybook), либо мок клиентского слоя; избегаем мок
fetchв каждом тесте.
Как тестировать composable?
Вызвать внутри тестового компонента или через утилиту (
withSetup), проверять реактивное состояние, таймеры через fake timers.
Store Pinia?
createTestingPinia, тест действий и геттеров, моки сервисов.
Продвинутые вопросы
Что такое flaky-тест и как бороться?
Нестабильный тест: результат меняется без изменений кода. Причины: асинхронность, общие данные, время, сеть. Лечится авто-ожиданием, изоляцией, моками, разбором причин.
Покрытие 100% — это хорошо?
Не гарантия качества: покрытие показывает выполнение кода, но не проверку поведения. Смотрим на ветки, критические пути, мутационные тесты.
Чем E2E отличается от интеграционных?
E2E работает через реальный браузер и стек целиком, интеграционные — в ограниченном окружении с моками внешних систем. E2E дороже и медленнее.
Как организовать тесты в CI?
Быстрые сначала (lint, typecheck, unit), затем интеграционные и E2E; параллелизм и шардинг; артефакты (trace, видео); гейт на merge.
TDD: используете?
Полезен для чистой логики и багфиксов: сначала падающий тест. Для UI чаще пишу тесты после или параллельно; главное — регрессионный тест на каждый баг.
Как тестировать доступность?
axe в тестах и Storybook, линтер для шаблонов, ручная проверка клавиатурой и скринридером.
Как проверить производительность?
Lighthouse CI, performance budget, размер бандла в PR, Web Vitals в RUM.
Практика
Подготовьте пример: как вы тестировали конкретную сложную функцию (валидация, таблица, форма), какие тесты написали и что они поймали.