Aby sme pochopili Cyklomatickú zložitosť, najskôr pochopíme -
Čo je softvérová metrika?
Meranie nie je nič iné ako kvantitatívne označenie veľkosti / rozmeru / kapacity atribútu produktu / procesu. Softvérová metrika je definovaná ako kvantitatívne meranie atribútu, ktorý má softvérový systém v súvislosti s nákladmi, kvalitou, veľkosťou a harmonogramom.
Príklad-
Opatrenie - počet chýbMetriky - počet nájdených chýb na osobu
V tomto návode sa naučíte
- Čo je softvérová metrika?
- Čo je to cyklomatická zložitosť?
- Zápis vývojového diagramu pre program:
- Ako vypočítať cyklomatickú zložitosť
- Vlastnosti cyklomatickej zložitosti:
- Ako je táto metrika užitočná na testovanie softvéru?
- Viac informácií o V (G):
- Nástroje na výpočet cyklomatickej zložitosti:
- Použitie cyklomatickej zložitosti:
Cyklomatická zložitosť v testovaní softvéru
Cyklomatická zložitosť v testovaní softvéru je metrika testovania používaná na meranie zložitosti softvérového programu. Jedná sa o kvantitatívne meranie nezávislých ciest v zdrojovom kóde softvérového programu. Cyklomatická zložitosť sa dá vypočítať pomocou grafov toku riadenia alebo vzhľadom na funkcie, moduly, metódy alebo triedy v rámci softvérového programu.
Nezávislá cesta je definovaná ako cesta, ktorá má najmenej jednu hranu, ktorá predtým nebola prekonaná v žiadnych iných cestách.
Túto metriku vytvoril Thomas J. McCabe v roku 1976 a je založená na reprezentácii riadiaceho toku programu. Riadiaci tok zobrazuje program ako graf, ktorý sa skladá z uzlov a okrajov.
V grafe uzly predstavujú úlohy spracovania, zatiaľ čo hrany predstavujú riadiaci tok medzi uzlami.
Zápis vývojového diagramu pre program:
Zápis vývojového diagramu pre program definuje niekoľko uzlov spojených cez okraje. Ďalej sú uvedené vývojové diagramy pre výroky ako if-else, While, until a normálna postupnosť toku.
Ako vypočítať cyklomatickú zložitosť
Matematické znázornenie:
Matematicky je to súbor nezávislých dráh cez grafový diagram. Zložitosť kódu programu je možné definovať pomocou vzorca -
V (G) = E - N + 2
Kde,
E - Počet hrán
N - počet uzlov
V (G) = P + 1
Kde P = počet predikátových uzlov (uzol, ktorý obsahuje podmienku)
Príklad -
i = 0;n = 4; // N-Počet uzlov v grafewhile (iVývojový graf pre tento program bude
Matematické výpočty
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (podmienené uzly sú 1,2 a 3 uzly)
- Sada základov - sada možných ciest vykonania programu
- 1, 7
- 1, 2, 6, 1, 7
- 1, 2, 3, 4, 5, 2, 6, 1, 7
- 1, 2, 3, 5, 2, 6, 1, 7
Vlastnosti cyklomatickej zložitosti:
Vlastnosti cyklomatickej zložitosti sú tieto:
- V (G) je maximálny počet nezávislých dráh v grafe
- V (G)> = 1
- G bude mať jednu cestu, ak V (G) = 1
- Minimalizujte zložitosť na 10
Ako je táto metrika užitočná na testovanie softvéru?
Testovanie základnej cesty je jednou z metód Bielej skrinky a zaručuje zaručenie vykonania najmenej jedného príkazu počas testovania. Kontroluje každú lineárne nezávislú cestu programom, čo znamená, že počet testovacích prípadov bude ekvivalentný cyklomatickej zložitosti programu.
Táto metrika je užitočná z dôvodu vlastností cyklomatickej zložitosti (M) -
- M môže byť počet testovacích prípadov na dosiahnutie pokrytia vetvy (horná hranica)
- M môže byť počet ciest v grafoch. (Nižšia hranica)
Zvážte tento príklad -
Ak (podmienka 1)Vyhlásenie 1InakVýrok 2Ak (podmienka 2)Vyhlásenie 3InakVyhlásenie 4Cyklomatická zložitosť pre tento program bude 8-7 + 2 = 3.
Pretože zložitosť sa počítala ako 3, sú potrebné tri testovacie prípady na úplné pokrytie cesty pre vyššie uvedený príklad.
Kroky, ktoré treba dodržiavať:
Pri výpočte cyklomatickej zložitosti a návrhu testovacích prípadov by sa malo postupovať podľa nasledujúcich krokov.
Krok 1 - Konštrukcia grafu s uzlami a hranami z kódu
Krok 2 - Identifikácia nezávislých trás
Krok 3 - Výpočet cyklomatickej zložitosti
Krok 4 - Návrh testovacích prípadov
Po vytvorení základnej množiny by sa mali napísať TESTOVACIE PRÍPADY, aby sa vykonali všetky cesty.
Viac informácií o V (G):
Cyklomatická zložitosť sa dá vypočítať manuálne, ak je program malý. Ak je program veľmi zložitý, je potrebné použiť automatizované nástroje, pretože to vyžaduje viac vývojových grafov. Na základe zložitosti čísla môže tím dospieť k záveru o krokoch, ktoré je potrebné prijať pre opatrenie.
Nasledujúca tabuľka poskytuje prehľad o počte zložitosti a zodpovedajúcom význame v (G):
Číslo zložitosti Význam 1-10 Štruktúrovaný a dobre napísaný kód, vysoká testovateľnosť, náklady a úsilie sú menšie 10-20 Testovateľnosť stredného komplexného kódu Náklady a úsilie sú stredné 20-40 Veľmi zložitý kód, nízka testovateľnosť, náklady a úsilie sú vysoké > 40 Vôbec nie testovateľné Veľmi vysoké náklady a námaha Nástroje na výpočet cyklomatickej zložitosti:
Na určenie zložitosti aplikácie je k dispozícii veľa nástrojov. Niektoré nástroje na výpočet zložitosti sa používajú pre konkrétne technológie. Zložitosť možno nájsť podľa počtu rozhodovacích bodov v programe. Rozhodovacími bodmi sú vyhlásenia typu if, for-for-each, while, do, catch, case v zdrojovom kóde.
Príklady nástrojov sú
- OCLint - analyzátor statického kódu pre jazyk C a súvisiace jazyky
- Reflector Add In - metriky kódu pre zostavy .NET
- GMetrics - Nájdite metriky v aplikáciách súvisiacich s Javou
Použitie cyklomatickej zložitosti:
Cyklomatická zložitosť sa môže ukázať ako veľmi užitočná v prípade
- Pomáha vývojárom a testerom určiť nezávislé vykonanie cesty
- Vývojári môžu zaistiť, že všetky cesty boli testované aspoň raz
- Pomáha nám viac sa sústrediť na nekryté cesty
- Zlepšite pokrytie kódu v softvérovom inžinierstve
- Vyhodnoťte riziko spojené s aplikáciou alebo programom
- Používanie týchto metrík na začiatku cyklu znižuje väčšie riziko programu
Záver:
Cyklomatická zložitosť je softvérová metrika užitočná na štruktúrované alebo White Box Testovanie. Používa sa hlavne na vyhodnotenie zložitosti programu. Ak je rozhodovacích bodov viac, potom je zložitosť programu väčšia. Ak má program vysoké číslo zložitosti, potom je pravdepodobnosť chyby vysoká so zvýšeným časom údržby a odstraňovania problémov.