Типы покрытия

Покрытие кода (Code Coverage)

Измеряет, какие строки, ветви и функции исходного кода выполняются автоматизированными тестами.

Метрики: Line coverage, branch coverage, function coverage, statement coverage.

Покрытие требований (Requirements Coverage)

Измеряет, какие бизнес-требования имеют соответствующие тест-кейсы.

Инструменты покрытия кода

ИнструментЯзыкиИнтеграция
Istanbul/nycJavaScript/TypeScriptJest, Mocha, Vitest
JaCoCoJavaMaven, Gradle
coverage.pyPythonpytest
SonarQubeМультиязычныйCI/CD дашборды

Чтение отчётов о покрытии

Файл                    | % Stmts | % Branch | % Funcs | % Lines |
------------------------|---------|----------|---------|---------|
src/auth/login.js       |   95.2  |   88.0   |  100.0  |   95.0  |
src/payment/checkout.js |   45.0  |   30.0   |   50.0  |   44.2  |
  • login.js на 95% — хорошо покрыт
  • checkout.js на 45% — критически недопокрыт для модуля платежей

Установка целей

Область кодаЦельОбоснование
Платежи/финансы90%+Высокий бизнес-риск
Аутентификация/безопасность90%+Критично для безопасности
Основная бизнес-логика80%+Основная функциональность
Утилиты70%+Общий код

Ловушка покрытия

Не гонитесь за 100% вслепую. Проблемы: бессмысленные тесты, тестирование тривиального кода, игнорирование других видов тестирования.

Правильный подход: Фокус на критических путях, бизнес-логике и зонах риска.

Покрытие в CI/CD

Настройте quality gates для обеспечения минимального покрытия. Отслеживайте тренды — покрытие не должно снижаться после merge PR.

Упражнение: Проанализируйте отчёт о покрытии

Дан отчёт для e-commerce с payment/process на 42%, payment/refund на 15%, cart/checkout на 38%. Определите риски и рекомендуйте действия.

Решение

Критические риски: payment/process и payment/refund недопокрыты — прямой финансовый риск. cart/checkout — путь к доходу.

Рекомендации:

  1. Немедленно: Поднять payment/process до 85%+ и refund до 80%+
  2. Этот спринт: Поднять cart/checkout до 80%+, фокус на branch coverage
  3. Следующий спринт: Поднять cart/coupon branch с 60% до 75%+
  4. Quality gate: Новый код в платежах и checkout требует 85%+

Ключевые выводы

  • Покрытие кода измеряет выполнение; покрытие требований — маппинг требований
  • Branch coverage ценнее line coverage — раскрывает непротестированную условную логику
  • Фокусируйте цели на рисках: модули платежей и безопасности — 90%+
  • Не гонитесь за 100% — фокус на осмысленных assertions
  • Используйте quality gates в CI/CD для предотвращения регрессии покрытия
  • Отчёты покрытия выявляют пробелы — это диагностические инструменты, а не цели сами по себе