Цикломатическая складність - метрика ПО, яка забезпечує кількісну оцінку логічної складності програми. У способі тестування базового шляху цикломатическая складність визначає:
q кількість незалежних шляхів в базовому безлічі програми;
q верхню оцінку кількості тестів, яке гарантує одноразове виконання всіх операторів.
Незалежним називається будь-який шлях, який вводить новий оператор обробки або нову умову. У термінах потокового графа незалежний шлях повинен містити дугу, що не входить в раніше певні шляхи.
Шлях починається в початковому вузлі, а закінчується в кінцевому вузлі графа. Незалежні шляху формуються в порядку від самого короткого до найдовшого.
Перерахуємо незалежні шляхи для потокового графа з прикладу 1:
Шлях 4: 1-2-4-6-7а-7b-1-8.
Зауважимо, що кожен новий шлях включає нову дугу.
Всі незалежні шляхи графа утворюють базову безліч.
Властивості базового безлічі:
1) тести, що забезпечують його перевірку, гарантують:
q одноразове виконання кожного оператора;
q виконання кожного умови по True-гілки і по False-гілки;
2) потужність базового безлічі дорівнює цикломатическая складності потокового графа.
Значення 2-го властивості важко переоцінити - воно дає апріорну оцінку кількості незалежних шляхів, яке має сенс шукати в графі.
Цикломатическая складність обчислюється одним з трьох способів:
1) цикломатическая складність дорівнює кількості регіонів потокового графа;
2) цикломатическая складність визначається за формулою
де Е - кількість дуг, N - кількість вузлів потокового графа;
3) цикломатическая складність формується за висловом V (G) = p + 1, де р - кількість предикатних вузлів в потоковому графі G.
Обчислимо цикломатическая складність графа з прикладу 1 кожним з трьох способів:
1) потоковий граф має 4 регіони;
2) V (G) = 11 дуг - 9 вузлів + 2 = 4;
3) V (G) = 3 предикатних вузла + 1 = 4.
Таким чином, цикломатическая складність потокового графа з прикладу 1 дорівнює чотирьом.