Мццабе-ова цикломатична сложеност: израчунати помоћу графикона протока (пример)

Преглед садржаја:

Anonim

Да бисмо разумели цикломатичку сложеност, прво да схватимо -

Шта је софтверска метрика?

Мерење није ништа друго до квантитативна индикација величине / димензије / капацитета атрибута производа / процеса. Софтверска метрика је дефинисана као квантитативна мера атрибута који софтверски систем поседује у односу на трошкове, квалитет, величину и распоред.

Пример-

Мера - број грешакаМетрика - број пронађених грешака по особи

У овом упутству ћете научити-

  • Шта је софтверска метрика?
  • Шта је цикломатична сложеност?
  • Ознака графа тока за програм:
  • Како израчунати цикломатску сложеност
  • Особине цикломатичне сложености:
  • Како је ова метрика корисна за тестирање софтвера?
  • Више о В (Г):
  • Алати за израчунавање сложености циклома:
  • Употребе цикломатичне сложености:

Цикломатична сложеност у тестирању софтвера

Цикломатична сложеност у тестирању софтвера је метрика испитивања која се користи за мерење сложености софтверског програма. То је квантитативна мера независних путања у изворном коду софтверског програма. Цикломатична сложеност може се израчунати коришћењем графикона контролних токова или с обзиром на функције, модуле, методе или класе у оквиру софтверског програма.

Независна путања је дефинисана као путања која има најмање једну ивицу која раније није пређена ни на једној другој путањи.

Ову метрику развио је Тхомас Ј. МцЦабе 1976. године и заснива се на представљању контролног тока програма. Контролни ток приказује програм као графикон који се састоји од чворова и ивица.

На графикону чворови представљају задатке обраде, док ивице представљају контролни ток између чворова.

Ознака графа тока за програм:

Ознака графа тока за програм дефинише неколико чворова повезаних кроз ивице. Испод су дијаграми протока за изјаве попут иф-елсе, Вхиле, унтил и нормални редослед протока.

Како израчунати цикломатску сложеност

Математички приказ:

Математички је скуп независних путања кроз графички дијаграм. Сложеност кода програма може се дефинисати помоћу формуле -

В (Г) = Е - Н + 2

Где,

Е - Број ивица

Н - Број чворова

В (Г) = П + 1

Где је П = број чворова предиката (чвор који садржи услов)

Пример -

и = 0;н = 4; // Н-број чворова присутних на графиконудок (и <н-1) радеј = и + 1;док (ј <н) радеако је А [и] <А [ј] тадазаменити (А [и], А [ј]);енд до;и = и + 1;енд до;

Графикон тока за овај програм биће

Рачунајући математички,

  • В (Г) = 9 - 7 + 2 = 4
  • В (Г) = 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. В (Г) је максималан број независних путања на графикону
  2. В (Г)> = 1
  3. Г ће имати једну путању ако је В (Г) = 1
  4. Смањите сложеност на 10

Како је ова метрика корисна за тестирање софтвера?

Основно тестирање пута је једна од техника беле кутије и гарантује извршавање најмање једне изјаве током тестирања. Проверава сваки линеарно независан пут кроз програм, што значи да ће број тест случајева бити еквивалентан цикломатичној сложености програма.

Ова метрика је корисна због својстава цикломатичне сложености (М) -

  1. М може бити број тест случајева за постизање покривености огранака (горња граница)
  2. М може бити број путања кроз графиконе. (Доња граница)

Размотрите овај пример -

Ако (услов 1)Изјава 1ЕлсеИзјава 2Ако (услов 2)Изјава 3ЕлсеИзјава 4

Цикломатска сложеност овог програма биће 8-7 + 2 = 3.

Како је сложеност израчуната као 3, три случаја теста су неопходна за комплетно покривање путање за горњи пример.

Кораци које треба следити:

Следеће кораке треба следити за рачунање сложености циклома и дизајн тест случајева.

Корак 1 - Конструкција графа са чворовима и ивицама из кода

Корак 2 - Идентификација независних путева

Корак 3 - Прорачун цикломатске сложености

Корак 4 - Дизајн тест случајева

Једном када се формира основни скуп, ТЕСТ ЦАСЕС би требало да буду написани за извршавање свих путања.

Више о В (Г):

Цикломатична сложеност може се израчунати ручно ако је програм мали. Ако је програм веома сложен, треба користити аутоматизоване алате, јер то укључује више графикона протока. На основу броја сложености, тим може закључити о радњама које треба предузети ради мере.

Следећа табела даје преглед броја сложености и одговарајућег значења в (Г):

Број сложености Значење
1-10 Структурирани и добро написани код Високи трошкови и напори за тестирање су мањи
10-20 Сложени код Средња проверљивост Трошкови и напори су средњи
20-40 Веома сложени код Ниска проверљивост Трошкови и напори су високи
> 40 Уопште није могуће тестирати Веома високи трошкови и напор

Алати за израчунавање сложености циклома:

Доступно је много алата за одређивање сложености апликације. Неки алати за израчунавање сложености користе се за одређене технологије. Сложеност се може утврдити бројем бодова одлучивања у програму. Тачке одлучивања су ако, за, за сваки, док, уради, ухвати, изјаве случаја у изворном коду.

Примери алата су

  • ОЦЛинт - Статички анализатор кода за Ц и сродне језике
  • Рефлецтор Адд Ин - Метрике кода за .НЕТ склопове
  • ГМетрицс - Пронађите метрику у апликацијама повезаним са Јавом

Употребе цикломатичне сложености:

Цикломатична сложеност може бити од велике помоћи у

  • Помаже програмерима и тестерима да одреде независно извршавање путање
  • Програмери могу да се увере да су сви путеви најмање једном тестирани
  • Помаже нам да се више фокусирамо на непокривене стазе
  • Побољшати покривеност кодом у софтверском инжењерству
  • Процените ризик повезан са апликацијом или програмом
  • Коришћење ових показатеља на почетку циклуса смањује већи ризик од програма

Закључак:

Цицломатиц Цомплекити је софтверска метрика корисна за структурирано или Вхите Бок тестирање. Углавном се користи за процену сложености програма. Ако је више поена у одлучивању, тада је сложеност програма већа. Ако програм има велики број сложености, вероватноћа грешке је велика са повећаним временом за одржавање и решавање проблема.