Какое покрытие тестами было в проекте
Что проверяют
Работали ли вы в проекте, где тесты были частью процесса, и понимаете ли, что стоит за цифрой покрытия. Интервьюеру важно не число, а то, что оно значило: какие тесты, как измеряли, мешало ли оно сливать код. Следом обычно спрашивают, что было не покрыто и почему.
Как отвечать
Отвечайте про свой реальный проект и со своими цифрами. Каркас такой:
- что за тесты: юнит-тесты утилит и хуков, компонентные тесты на Testing Library, E2E на Playwright или Cypress. Назовите примерную пропорцию и что лежало на каждом уровне;
- чем мерили:
vitest --coverageилиjest --coverage, провайдерv8илиistanbul, отчёт в CI или в SonarQube; - какая метрика: statements, branches, functions, lines. Полезнее называть branches, она ниже и лучше показывает непроверенные условия;
- был ли порог:
coverageThresholdв Jest илиcoverage.thresholdsв Vitest, падал ли пайплайн при снижении; - что покрывали осознанно: бизнес-логику, формы с валидацией, работу с API через MSW, а вёрстку и конфиги покрывать не гнались.
Хорошо звучит ответ с оценкой, например: «по строкам было около 70%, по веткам ниже, почти всё покрытие давали логика и формы, а E2E закрывали пять главных сценариев вроде входа и оплаты». Добавьте, что бы вы изменили: это показывает, что вы думали о тестах, а не просто их писали.
Если тестов в проекте не было или было мало, скажите это прямо и объясните почему: MVP, сроки, приоритеты команды. Затем расскажите, что делали сами (тесты на свои модули, ручные чек-листы) и с чего начали бы: с порога в CI на новый код и тестов на самые дорогие для бизнеса сценарии.
Где спотыкаются
Называют круглую цифру, 90% или 100%, и не могут сказать, по какой метрике и чем её мерили. Это сразу выглядит как выдумка.
Считают покрытием снапшот-тесты. Снапшот большого компонента закрашивает строки в отчёте, но почти ничего не проверяет.
Смешивают юнит-покрытие с E2E. Прогон Playwright по умолчанию в отчёт покрытия не попадает, и фраза «у нас 80% за счёт E2E» без отдельной настройки инструментирования ничего не значит.