Цикломатична складність Маккейба: обчислити за допомогою графіку потоку (Приклад)

Зміст:

Anonim

Щоб зрозуміти цикломатичну складність, давайте спочатку зрозуміємо -

Що таке програмна метрика?

Вимірювання - це не що інше, як кількісне зазначення розміру / розміру / ємності властивості продукту / процесу. Показник програмного забезпечення визначається як кількісний показник атрибута, яким володіє програмна система щодо вартості, якості, розміру та графіка.

Приклад-

Міра - кількість помилокМетрики - кількість помилок, виявлених на людину

У цьому підручнику ви дізнаєтесь-

  • Що таке програмна метрика?
  • Що таке цикломатична складність?
  • Позначення графіку потоку для програми:
  • Як розрахувати цикломатичну складність
  • Властивості цикломатичної складності:
  • Чим цей показник корисний для тестування програмного забезпечення?
  • Більше про V (G):
  • Інструменти для розрахунку цикломатичної складності:
  • Використання цикломатичної складності:

Цикломатична складність у тестуванні програмного забезпечення

Цикломатична складність у тестуванні програмного забезпечення - це показник тестування, що використовується для вимірювання складності програмної програми. Це кількісний показник незалежних шляхів у вихідному коді програмного забезпечення. Цикломатичну складність можна обчислити, використовуючи графіки управління потоками або відносно функцій, модулів, методів або класів в рамках програмного забезпечення.

Незалежний шлях визначається як шлях, який має принаймні одне ребро, яке раніше не проходили жодним іншим шляхом.

Ця метрика була розроблена Томасом Дж. Маккейбом у 1976 р. І вона базується на поданні програми управління потоком. Потік управління зображує програму у вигляді графіка, який складається з Вузлів та Граней.

На графіку Вузли представляють завдання обробки, тоді як ребра представляють потік управління між вузлами.

Позначення графіку потоку для програми:

Позначення графіку потоку для програми визначає кілька вузлів, з'єднаних через ребра. Нижче наведені діаграми потоків для таких тверджень, як if-else, While, while та нормальна послідовність потоків.

Як розрахувати цикломатичну складність

Математичне подання:

Математично це набір незалежних шляхів через графічну діаграму. Складність коду програми можна визначити за формулою -

V (G) = E - N + 2

Де,

E - Кількість ребер

N - кількість вузлів

V (G) = P + 1

Де P = Кількість вузлів предикатів (вузол, що містить умову)

Приклад -

i = 0;n = 4; // N-кількість вузлів, присутніх на графікув той час як (i 

Графік потоку для цієї програми буде

Обчислюючи математично,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (Вузли стану - 1,2 і 3 вузли)
  • Базовий набір - набір можливих шляхів виконання програми
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Властивості цикломатичної складності:

Ось властивості цикломатичної складності:

  1. V (G) - максимальна кількість незалежних шляхів на графіку
  2. V (G)> = 1
  3. G матиме один шлях, якщо V (G) = 1
  4. Мінімізуйте складність до 10

Чим цей показник корисний для тестування програмного забезпечення?

Основне тестування шляху - це одна із технік Білої скриньки, яка гарантує виконання хоча б одного твердження під час тестування. Він перевіряє кожен лінійно незалежний шлях через програму, що означає кількість тестових випадків, що буде еквівалентно цикломатичній складності програми.

Ця метрика корисна завдяки властивостям цикломатичної складності (М) -

  1. M може бути кількістю тестових випадків для досягнення охоплення філій (Upper Bound)
  2. М може бути кількістю шляхів через графіки. (Нижня межа)

Розглянемо цей приклад -

Якщо (умова 1)Заява 1ІнакшеЗаява 2Якщо (умова 2)Заява 3ІнакшеЗаява 4

Цикломатична складність для цієї програми становитиме 8-7 + 2 = 3.

Оскільки складність обчислюється як 3, для повного охоплення шляху для наведеного прикладу необхідні три тестові приклади.

Кроки, яких слід дотримуватися:

Для обчислення цикломатичної складності та проектування тестових кейсів слід дотримуватися наступних кроків.

Крок 1 - Побудова графіка з вузлами та ребрами з коду

Крок 2 - Визначення незалежних шляхів

Крок 3 - Розрахунок цикломатичної складності

Крок 4 - Розробка тестових кейсів

Після того, як базовий набір сформований, для написання всіх шляхів слід написати ТЕСТИ.

Більше про V (G):

Цикломатичну складність можна розрахувати вручну, якщо програма мала. Автоматизовані інструменти потрібно використовувати, якщо програма дуже складна, оскільки це включає більше графіків потоку. Виходячи з числа складності, команда може зробити висновок про дії, які потрібно вжити для вимірювання.

Наступна таблиця дає огляд числа складності та відповідного значення v (G):

Номер складності Значення
1-10 Структурований і добре написаний код Висока перевірочність Вартість і зусилля менше
10-20 Складний код Середня перевірочність Вартість та зусилля є середніми
20-40 Дуже складний код Низька перевірочність Вартість і зусилля високі
> 40 Зовсім не перевіряється Дуже висока вартість і зусилля

Інструменти для розрахунку цикломатичної складності:

Для визначення складності програми доступно багато інструментів. Деякі засоби обчислення складності використовуються для конкретних технологій. Складність можна знайти за кількістю пунктів прийняття рішень у програмі. Моменти прийняття рішень - це, якщо, для кожного, while, do, catch, case висловлювання у вихідному коді.

Прикладами інструментів є

  • OCLint - Статичний аналізатор коду для C та суміжних мов
  • Додавання рефлектора - метрики коду для збірок .NET
  • GMetrics - пошук метрик у програмах, пов’язаних із Java

Використання цикломатичної складності:

Цикломатична складність може виявитись дуже корисною в

  • Допомагає розробникам та тестувальникам визначати незалежні виконання шляху
  • Розробники можуть запевнитись, що всі шляхи протестовані принаймні один раз
  • Допомагає нам більше зосередитися на непокритих шляхах
  • Покращити охоплення коду в програмній інженерії
  • Оцініть ризик, пов'язаний із додатком або програмою
  • Використання цих показників на початку циклу зменшує більший ризик програми

Висновок:

Цикломатична складність - це програмна метрика, корисна для структурованого тестування або тестування по білій скриньці. Він в основному використовується для оцінки складності програми. Якщо пунктів рішення більше, то складність програми більше. Якщо програма має велике число складності, то ймовірність помилки велика із збільшенням часу на технічне обслуговування та вирішення проблем.