Ответ
Тестовое покрытие (Code Coverage) — это метрика, показывающая, какая часть исходного кода выполняется автоматизированными тестами. Его цель — оценить эффективность тестов, а не быть самоцелью.
Зачем измерять покрытие?
- Выявление непротестированных участков: Помогает найти ветви логики, оставшиеся без проверки.
- Контроль качества регрессии: При рефакторинге или добавлении нового функционала тесты с высоким покрытием с большей вероятностью обнаружат поломку.
- Повышение уверенности в изменениях.
Важные принципы:
- Качество важнее количества. 100% покрытие бессмысленных геттеров/сеттеров не равно качественному тестированию.
- Фокус на сложной бизнес-логике и пограничных случаях.
- Оптимальный уровень обычно находится в диапазоне 70-85%. Выше — часто ведет к избыточным тестам и падению ROI.
Пример (JUnit 5):
@Test
@DisplayName("Сумма двух положительных чисел")
void sumOfTwoPositiveNumbersShouldBeCorrect() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result, "2 + 3 должно быть равно 5");
}
Покрытие помогает убедиться, что такие тесты проверяют все значимые сценарии работы метода add.