the_norn (the_norn) wrote,
the_norn
the_norn

Оценка покрытия кода (Code Coverage)

На днях читая блоги наткнулся на непонятное определени - оценка покрытия согласно С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
Спасибо ненашему провайдеру КТ, за баненые ипки, сижу через анонимный прокси, слов нет...
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments