Какое процентное покрытие кода тестами считается оптимальным в разработке?

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

Ответ

Оптимальным считается 70–80% покрытия кода модульными (unit) тестами.

Почему не 100%?

  • Стремление к 100% часто приводит к написанию бесполезных тестов для тривиального кода (геттеры, сеттеры, простые toString()), что увеличивает стоимость поддержки.
  • Фокус должен быть на качестве тестов, а не на метрике. Лучше иметь 70% содержательных тестов, чем 100% формальных.

Пример разумного подхода:

// Этот метод содержит бизнес-логику — его нужно тестировать.
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

// А этот тривиальный метод — нет необходимости.
@Override
public String toString() {
    return "Calculator";
}

Важно: Высокое покрытие не гарантирует отсутствия дефектов. Критическую логику следует покрывать интеграционными и end-to-end тестами.