← Назад к вопросам

Какое должно быть покрытие тестами в проекте?

2.3 Middle🔥 121 комментариев
#Тестирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Покрытие тестами в Java проектах

Покрытие кода тестами (Code Coverage) — это метрика, показывающая какой процент кодовой базы покрыт автоматическими тестами. Это один из важных показателей качества проекта, но не единственный.

Стандартные показатели

Минимум для production

70-80% — общепринятый минимум для production кода:

  • Критические и сложные части системы должны быть протестированы
  • Бизнес-логика обязательно полностью протестирована
  • Getters/setters и trivial код можно не покрывать

Рекомендуемые показатели

  • 85-90% — хороший результат для большинства проектов
  • 90%+ — отличное качество, достаточно высокий стандарт
  • 95%+ — критичные системы, банки, healthcare, aerospace
  • 100% — редко достижимо и не всегда целесообразно

Виды покрытия

1. Line Coverage (покрытие строк)

Процент строк кода, выполненных во время тестов:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public int divide(int a, int b) {
        if (b == 0) {
            throw new IllegalArgumentException();
        }
        return a / b;
    }
}

Если нет теста для divide(5, 0), то обработка исключения не покрыта.

2. Branch Coverage (покрытие ветвей)

Процент всех путей выполнения кода:

public String checkAge(int age) {
    if (age >= 18) {
        return "Adult";
    } else {
        return "Minor";
    }
}

Для 100% branch coverage нужны тесты обоих путей.

3. Method Coverage (покрытие методов)

Процент методов, вызванных хотя бы один раз.

Инструменты для измерения

JaCoCo (Java Code Coverage)

Самый популярный инструмент:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.10</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Запуск: mvn clean test (отчёт в target/site/jacoco/index.html)

Best Practices

✅ Делай это:

  • Пиши тесты для критичной бизнес-логики
  • Не гонись за 100% — качество важнее количества
  • Тести исключительные ситуации

❌ Не делай это:

  • Не тести только для количества%
  • Не копируй тесты просто для coverage
  • Не тести внешние библиотеки

Рекомендации по покрытию

Тип проектаПокрытиеПримечание
Стартап60-70%Скорость важнее
Веб-приложение75-85%Баланс
Enterprise85-90%Высокий стандарт
Банковская система95%+Критична надёжность
Библиотека90%+Часто используется другими

Выводы

  • 85-90% — золотой стандарт для большинства проектов
  • Качество > количество: лучше 80% хороших тестов чем 100% плохих
  • Фокусируйся на критичной логике — бизнес-слой, валидация
  • Автоматизируй проверку через CI/CD
  • Регулярно пересматривай стратегию в зависимости от проекта
Какое должно быть покрытие тестами в проекте? | PrepBro