Что такое Code Coverage в тестировании ПО?

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

Ответ

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

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

  • Покрытие строк (Line Coverage): Процент выполненных строк кода.
  • Покрытие ветвей (Branch Coverage): Процент протестированных ветвей в условных операторах (if/else, switch).
  • Покрытие методов (Method/Function Coverage): Процент вызванных методов или функций.

Пример (Java с JUnit и JaCoCo):

public class Calculator {
    public int add(int a, int b) {
        return a + b; // Строка 1
    }
    public int divide(int a, int b) {
        if (b == 0) { // Ветвь 1 (true)
            throw new ArithmeticException("Division by zero");
        }
        return a / b; // Ветвь 2 (false)
    }
}

// Тест обеспечивает 100% покрытие метода add(), но 0% для divide()
@Test
public void testAdd() {
    Calculator calc = new Calculator();
    assertEquals(5, calc.add(2, 3));
}

Важно: Высокий Code Coverage не гарантирует отсутствие дефектов, но низкий coverage явно указывает на недостаточно протестированные участки кода.