Что такое покрытие кода (code coverage) в тестировании

Ответ

Покрытие кода (Code Coverage) — это метрика, которая показывает, какой процент исходного кода был выполнен во время прогона автоматизированных тестов. Она помогает выявить непротестированные участки и оценить полноту тестового набора.

Основные виды покрытия:

  • Statement coverage (покрытие операторов): какая доля строк кода была выполнена.
  • Branch coverage (покрытие ветвлений): какая доля логических ветвлений (например, if/else) была пройдена в обоих направлениях (true и false).
  • Function coverage (покрытие функций): какая доля функций или методов в коде была вызвана.

Практический пример (Python с pytest-cov):

# 1. Установка
pip install pytest pytest-cov

# 2. Запуск тестов с генерацией отчета о покрытии
# Отчет будет сгенерирован для кода в директории 'my_project'
pytest --cov=my_project tests/

Важные аспекты:

  1. 100% покрытие не гарантирует отсутствие ошибок. Тесты могут исполнять код, но не проверять все возможные пограничные случаи или логику.
  2. Это количественная, а не качественная метрика. Она показывает, что было протестировано, но не как хорошо.
  3. Целевой показатель. В большинстве проектов стремятся к покрытию в 80-90%, так как достижение 100% часто бывает нерационально дорогим.