Cyklomatická složitost v testování softwaru (příklad)

Co je McCabeova cyklomatická složitost?

Cyklomatická složitost v testování softwaru je testovací metrika používaná pro měření složitosti softwarového programu. Je to kvantitativní měření nezávislých cest ve zdrojovém kódu softwarového programu. Cyklomatickou složitost lze vypočítat pomocí grafů řídicích toků nebo s ohledem na funkce, moduly, metody nebo třídy v rámci softwarového programu.

Nezávislá dráha je definována jako dráha, která má alespoň jednu hranu, která dosud nebyla projeta v žádné jiné cestě.

Tuto metriku vyvinul Thomas J. McCabe v roce 1976 a je založena na reprezentaci řídicího toku programu. Řídicí tok zobrazuje program jako graf, který se skládá z uzlů a hran.

V grafu uzly představují úlohy zpracování, zatímco hrany představují řídicí tok mezi uzly.

McCabe's Cyclomatic Complexity

Zápis vývojového grafu pro program

Zápis Flow Graph pro program definuje několik uzlů spojených hranami. Níže jsou vývojové diagramy pro příkazy jako if-else, While, till a normální sekvence toku.

Zápis vývojového grafu pro program

Jak vypočítat cyklomatickou složitost

Matematické znázornění:

Matematicky se jedná o množinu nezávislých cest přes graf grafu. Složitost kódu programu lze definovat pomocí vzorce –

V(G) = E - N + 2

Kde,

E – Počet hran

N – Počet uzlů

V (G) = P + 1

Kde P = počet predikátových uzlů (uzel, který obsahuje podmínku)

Příklad -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Vývojový diagram pro tento program bude

Vypočítejte cyklomatickou složitost

Počítat matematicky,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (uzly podmínky jsou 1,2, 3 a XNUMX uzly)
  • Základní sada – Sada možných cest provádění 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 cyklomatické složitosti

Níže jsou uvedeny vlastnosti cyklomatické složitosti:

  1. V (G) je maximální počet nezávislých cest v grafu
  2. V (G) >=1
  3. G bude mít jednu cestu, pokud V (G) = 1
  4. Minimalizujte složitost na 10

Jak je tato metrika užitečná pro testování softwaru?

Testování základní cesty je jednou z technik White box a zaručuje provedení alespoň jednoho příkazu během testování. Kontroluje každou lineárně nezávislou cestu programem, která znamená počet testovacích případů, bude ekvivalentní cyklomatické složitosti programu.

Tato metrika je užitečná kvůli vlastnostem cyklomatické složitosti (M) –

  1. M může být počet testovacích případů k dosažení pokrytí větví (horní hranice)
  2. M může být počet cest přes grafy. (dolní hranice)

Zvažte tento příklad –

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Cyklomatická složitost pro tento program bude 8-7+2=3.

Vzhledem k tomu, že složitost byla vypočtena jako 3, jsou nutné tři testovací případy k úplnému pokrytí cesty pro výše uvedený příklad.

Kroky, které je třeba dodržet:

Při výpočtu cyklomatické složitosti a návrhu testovacích případů je třeba dodržet následující kroky.

Krok 1 – Konstrukce grafu s uzly a hranami z kódu

Krok 2 – Identifikace nezávislých cest

Krok 3 – Výpočet cyklické složitosti

Krok 4 – Návrh testovacích případů

Jakmile je vytvořena základní sada, TESTOVACÍ PŘÍPADY by měl být zapsán tak, aby provedl všechny cesty.

Více o V (G)

Cyklomatickou složitost lze vypočítat ručně, pokud je program malý. Je-li program velmi složitý, je třeba použít automatizované nástroje, protože zahrnuje více vývojových grafů. Na základě čísla složitosti může tým dojít k závěru o akcích, které je třeba provést pro měření.

Následující tabulka poskytuje přehled čísla složitosti a odpovídajícího významu v (G):

Číslo složitosti Význam
1-10 Strukturovaný a dobře napsaný kód

Vysoká testovatelnost

Náklady a úsilí jsou nižší

10-20 Komplexní kód

Střední testovatelnost

Náklady a úsilí jsou střední

20-40 Velmi složitý kód

Nízká testovatelnost

Náklady a úsilí jsou vysoké

> 40 Vůbec ne testovatelné

Velmi vysoké náklady a úsilí

Nástroje pro výpočet cyklomatické složitosti:

Pro stanovení složitosti aplikace je k dispozici mnoho nástrojů. Pro specifické technologie se používají některé nástroje pro výpočet složitosti. Složitost lze nalézt podle počtu rozhodovacích bodů v programu. Rozhodovacími body jsou příkazy if, for, for-each, while, do, catch, case ve zdrojovém kódu.

Příklady nástrojů jsou

  • OCLint – Analyzátor statického kódu pro C a příbuzné jazyky
  • Reflector Add In – metriky kódu pro sestavení .NET
  • GMetrics – Najděte metriky v Java související aplikace

Použití cyklomatické složitosti:

Cyklomatická složitost se může ukázat jako velmi užitečná

  • Pomáhá vývojářům a testerům určit nezávislá provedení cesty
  • Vývojáři mohou ujistit, že všechny cesty byly testovány alespoň jednou
  • Pomáhá nám více se soustředit na odkryté cesty
  • Zlepšete pokrytí kódu v Softwarové inženýrství
  • Vyhodnoťte riziko spojené s aplikací nebo programem
  • Použití těchto metrik na začátku cyklu snižuje větší riziko programu

Proč investovat do čističky vzduchu?

Cyclomatic Complexity je softwarová metrika užitečná pro strukturované resp Bílý Box Testování. Používá se hlavně k hodnocení složitosti programu. Pokud je rozhodovacích bodů více, pak je složitější program větší. Pokud má program vysoké číslo složitosti, pak je pravděpodobnost chyby vysoká se zvýšeným časem na údržbu a odstraňování problémů.

Denní zpravodaj Guru99

Začněte svůj den s nejnovějšími a nejdůležitějšími zprávami o umělé inteligenci, které vám přinášíme právě teď.