Статическое тестирование кода (Static code analysis) используя метрику цикломатической сложности (cyclomatic complexity metric)


Обычно по статистике 20% кода вызывают 80% проблем, что образует эффект скопления багов в одном или нескольких связанных модулях приложения (defect clustering). Чтобы заранее обнаружить возможные баги, которые могут возникнуть при дальнейшем динамическом тестировании, мы можем статически тестировать код с помощью данной метрики.
Это очень полезная техника которая нам позволит определить число необходимых позитивных тестов, которые будут равны цикломатической сложности программы.

Вычисление цикломатической сложности (cyclomatic complexity metric) с помощью построения графа

Цикломатической сложность вычисляется легко, путем суммирования всех узлов таких как if, while, for и др. внутри и добавляя 1
Или по формуле
M = E − N + 2P,
где:
M = цикломатическая сложность,
E = количество рёбер,
N = количество узлов,
P = количество компонент связности.

К примеру проанализируем данный участок кода:
IF A = 100
THEN IF B > C
THEN A = B
ELSE A = C
ENDIF
ENDIF
Print A

Цикломатической сложность (cyclomatic complexity metric)
В данном случае исходя из формулы цикломатическая сложность будет равна 8 — 7 + (2 * 1) = 3

Таким образом мы определили количество позитивных тестов для проверки данного участка кода. Для этого нам нужно 3 теста с разными входными данными. Но для полного тестирования кода нужно пройти еще несколько негативных тестов.


0 комментариев