По строкам программного кода (Statement Coverage)
Для обеспечения полного покрытия программного кода на данном уровне, необходимо, чтобы в результате выполнения тестов каждый оператор был выполнен хотя бы один раз.
Особенность данного уровня покрытия состоит в том, что на нем затруднен анализ покрытия некоторых управляющих структур.
Например, для полного покрытия всех строк следующего участка программного кода на языке C достаточно одного тестового примера:
Вход: condition = true; Ожидаемый выход: *p = 123.
int* p = NULL;
if (condition)
p = &variable;
*p = 123;
Даже если в состав тестов не будет входить тестовый пример, проверяющий работу фрагмента при значении condition = false, код будет покрыт. Однако, в случае condition = false выполнение фрагмента вызовет ошибку.
Аналогичные проблемы возникают при проверке циклов do … while – при данном уровне покрытия достаточно выполнение цикла только один раз, при этом метод совершенно нечувствителен к логическим операторам || и &&.
Другой особенностью данного метода является зависимость уровня покрытия от структуры программного кода. На практике часто не требуется 100% покрытия программного кода, вместо этого устанавливается допустимый уровень покрытия, например 75%. Проблемы могут возникнуть при покрытии следующего фрагмента программного кода:
if (condition)
functionA();
else
functionB();
Если functionA() содержит 99 операторов, а functionB() один оператор, то единственного тестового примера, устанавливающего condition в true, будет достаточно для достижения необходимого уровня покрытия. При этом аналогичный тестовый пример, устанавливающий значение condition в false даст слишком низкий уровень покрытия.