Какое процентное покрытие кода unit-тестами считается хорошим?

«Какое процентное покрытие кода unit-тестами считается хорошим?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java-разработке нет единого стандарта, но существуют общепринятые рекомендации:

  • 70-80% — хороший, достижимый уровень для бизнес-логики.
  • 100% — идеал, но часто избыточен и экономически нецелесообразен.
  • <50% — тревожный сигнал о недостаточном тестировании.

Важно: Качество тестов (проверка важных сценариев, читаемость, поддержка) всегда приоритетнее формального процента покрытия. Высокий процент, достигнутый тривиальными тестами, не гарантирует надежности.

Почему не 100%? Стремление к полному покрытию часто приводит к тестированию геттеров/сеттеров, тривиального кода или логики фреймворков, что увеличивает затраты на поддержку без реальной пользы.

Пример настройки правила в Maven с Jacoco:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.7</version>
    <configuration>
        <rules>
            <rule>
                <element>BUNDLE</element>
                <limits>
                    <limit>
                        <counter>INSTRUCTION</counter>
                        <value>COVEREDRATIO</value>
                        <minimum>0.70</minimum> <!-- Минимум 70% -->
                    </limit>
                </limits>
            </rule>
        </rules>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <phase>verify</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>