Покрытие кода (code coverage) — это метрика, показывающая процент исходного кода, который был выполнен во время тестирования. Она помогает оценить эффективность тестов и выявить непроверенные участки программы.
Основные типы покрытия:
g++ -fprofile-arcs -ftest-coverage program.cpp
./program
gcov program.cpp
clang -fprofile-instr-generate -fcoverage-mapping program.cpp
./program
llvm-profdata merge -sparse default.profraw -o default.profdata
llvm-cov show ./program -instr-profile=default.profdata
Пример с Google Test:
#include <gtest/gtest.h>
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
TEST(FactorialTest, HandlesZeroInput) {
EXPECT_EQ(1, factorial(0));
}
TEST(FactorialTest, HandlesPositiveInput) {
EXPECT_EQ(120, factorial(5));
}
TEST_P(ParametrizedTest, TestCases) {
int value = GetParam();
ASSERT_TRUE(value > 0);
}
INSTANTIATE_TEST_SUITE_P(
PositiveValues,
ParametrizedTest,
testing::Values(1, 2, 3, 5, 10)
);
Целевые показатели:
Анализ результатов:
Интеграция в процесс разработки:
Резюмируем: покрытие кода — важная метрика качества тестирования, которая требует комплексного подхода к инструментам и методологии. Оптимальное значение зависит от проекта, а сама метрика должна дополняться другими видами тестирования.