На днях читая блоги наткнулся на непонятное определени - оценка покрытия согласно С1, как оказалось это один из видов оценки покрытия кода, спросив у гугла наткнулся на достаточно подробное описание видов покрытия, как оказалось их гораздо больше 3, что я описывал ранее. Итак виды покрыти кода.
1)Собсна то самое(Statement) C1 - линейное покрытие кода, считается каждый выполненный оператор (строчка кода или блок).Данный вид покрытия самый простой и не требует изменения исходного кода.
2)Оценка покрытия кода с учетом условных операторов(Decision - С2) - в каждом условном операторе (if,while,switch...) проверяется вызывался ли условный оператор со значением условия true и false, данный способ оценки более адекватный, но не учитывает тот случай если условие содержит несколько выражений - например if(sample||sample2), при этом вариант sample2 не проверяется/вызывается (если это функция).
3)Оценка покрытия кода с учетом всех условий(Condition) - проверяется покрытие кода на предмет того вызывается ли условный оператор со всеми возможными значениями проверяемых переменных. Данный способ более адекватен чем предыдущий и позволяет получить объективную оценку покрытия
4)Оценка покрытия с учетом путей выполнения(Path Coverage) - в данном случае считаются все пути, которые выполняются в процессе работы (путь - уникальная последовательность выполнения операторов, с учетом условных операторов)
5)Оценка покрытия с учетом вызовов функций(Function Coverage) - учитываются только уникальные вызовы функций - скажем так очень не объективная оценка покрытия (также ее называют BullsEye coverage)
6)Оценка покрытия с учетом выполнения циклов (Loop Coverage)- данная метрика оценивает выполнялись ли циклы имеющиеся в коде один или более раз или не выполнялись.
7)Оценка покрытия с учетом одновременного выполнения (Race Coverage)- показывает выполняется ли какой либо код одновременно - помогает выявить возможные проблемы в частности Race condition
8)Оценка покрытия с учетом операторов сравнения - выявляет встречаются ли в операторах сравнения (>,<) непредусмотренные значения (например 1>1).
9)Оценка покрытия с учетом выполнения таблицы конечных автоматов - определяет выполнились ли все возможные ветки в таблицы конечного автомата...
Собсна оценок покрытия кода как оказалось очень много и тут перечислены далеко не все. Программно реализована тоже малая часть из них (буквально первые 3) да и большой необходимости в этом нет, так что данный список представляет исключительно академический интерес
PS
Спасибо ненашему провайдеру КТ, за баненые ипки, сижу через анонимный прокси, слов нет...