Cyklomatisk kompleksitet i softwaretestning (eksempel)

Hvad er McCabes cyklomatiske kompleksitet?

Cyklomatisk kompleksitet i softwaretestning er en testmetrik, der bruges til at måle kompleksiteten af ​​et softwareprogram. Det er et kvantitativt mål for uafhængige stier i kildekoden til et softwareprogram. Cyklomatisk kompleksitet kan beregnes ved at bruge kontrolflowgrafer eller med hensyn til funktioner, moduler, metoder eller klasser i et softwareprogram.

Uafhængig sti er defineret som en sti, der har mindst én kant, som ikke er blevet krydset før i nogen andre stier.

Denne metrik blev udviklet af Thomas J. McCabe i 1976, og den er baseret på en kontrolflow-repræsentation af programmet. Kontrolflow viser et program som en graf, der består af noder og kanter.

I grafen repræsenterer noder behandlingsopgaver, mens kanter repræsenterer kontrolflow mellem noderne.

McCabes cyklomatiske kompleksitet

Flowgrafnotation for et program

Flow Graph-notation for et program definerer flere noder forbundet gennem kanterne. Nedenfor er flowdiagrammer for udsagn som if-else, While, indtil og normal sekvens af flow.

Flowgrafnotation for et program

Sådan beregnes cyklomatisk kompleksitet

Matematisk fremstilling:

Matematisk er det et sæt af uafhængige stier gennem grafdiagrammet. Programmets kodekompleksitet kan defineres ved hjælp af formlen -

V(G) = E - N + 2

Hvor,

E – Antal kanter

N – Antal noder

V (G) = P + 1

Hvor P = Antal prædikatknuder (node, der indeholder betingelse)

Eksempel -

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;

Flow graf for dette program vil være

Beregn cyklomatisk kompleksitet

Beregning matematisk,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (Betingelsesknudepunkter er 1,2 og 3 knudepunkter)
  • Basissæt – Et sæt mulige udførelsesstier for et program
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Egenskaber af cyklomatisk kompleksitet

Følgende er egenskaberne ved cyklomatisk kompleksitet:

  1. V (G) er det maksimale antal uafhængige stier i grafen
  2. V(G) >=1
  3. G vil have én vej, hvis V (G) = 1
  4. Minimer kompleksiteten til 10

Hvordan er denne metrik nyttig til softwaretest?

Basis Path-test er en af ​​White box-teknikken, og den garanterer at udføre mindst én sætning under testning. Den kontrollerer hver lineært uafhængig sti gennem programmet, som betyder antal testcases, vil svare til programmets cyklomatiske kompleksitet.

Denne metrik er nyttig på grund af egenskaber af cyklomatisk kompleksitet (M) -

  1. M kan være antallet af testcases for at opnå grendækning (Upper Bound)
  2. M kan være antallet af stier gennem graferne. (Nedre grænse)

Overvej dette eksempel -

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Cyklomatisk kompleksitet for dette program vil være 8-7+2=3.

Da kompleksiteten er beregnet til 3, er tre testcases nødvendige for at fuldføre stidækningen for ovenstående eksempel.

Trin, der skal følges:

Følgende trin skal følges for beregning af cyklomatisk kompleksitet og design af testcases.

Trin 1 – Konstruktion af graf med noder og kanter fra koden

Trin 2 – Identifikation af selvstændige veje

Trin 3 – Beregning af cyklomatisk kompleksitet

Trin 4 – Design af testcases

Når det grundlæggende sæt er dannet, TESTCASES skal skrives for at udføre alle stierne.

Mere om V (G)

Cyklomatisk kompleksitet kan beregnes manuelt, hvis programmet er lille. Automatiserede værktøjer skal bruges, hvis programmet er meget komplekst, da dette involverer flere flowgrafer. Baseret på kompleksitetstal kan teamet konkludere om de handlinger, der skal tages for at måle.

Følgende tabel giver et overblik over kompleksitetstallet og den tilsvarende betydning af v (G):

Kompleksitetsnummer Betydning
1-10 Struktureret og velskrevet kode

Høj testbarhed

Omkostninger og indsats er mindre

10-20 Kompleks kode

Middel testbarhed

Omkostninger og indsats er medium

20-40 Meget kompleks kode

Lav testbarhed

Omkostninger og indsats er høje

> 40 Slet ikke testbar

Meget høje omkostninger og indsats

Værktøjer til beregning af cyklomatisk kompleksitet:

Mange værktøjer er tilgængelige til at bestemme kompleksiteten af ​​applikationen. Nogle kompleksitetsberegningsværktøjer bruges til specifikke teknologier. Kompleksiteten kan findes ved antallet af beslutningspunkter i et program. Beslutningspunkterne er hvis, for, for-each, while, do, catch, case-udsagn i en kildekode.

Eksempler på værktøjer er

  • OCLint – Statisk kodeanalysator til C og relaterede sprog
  • Reflector Add In – Kodemetrikker for .NET-samlinger
  • Gmetrics – Find metrics i Java relaterede applikationer

Anvendelser af cyklomatisk kompleksitet:

Cyklomatisk kompleksitet kan vise sig at være meget nyttig i forhold til

  • Hjælper udviklere og testere med at bestemme uafhængige stiudførelser
  • Udviklere kan forsikre, at alle stierne er blevet testet mindst én gang
  • Hjælper os med at fokusere mere på de afdækkede veje
  • Forbedre kodedækning i Software Engineering
  • Vurder risikoen forbundet med applikationen eller programmet
  • Brug af disse målinger tidligt i cyklussen reducerer større risiko for programmet

Konklusion

Cyklomatisk kompleksitet er software-metrik, der er nyttig til struktureret eller Hvid Box Test. Det bruges hovedsageligt til at evaluere kompleksiteten af ​​et program. Hvis beslutningspunkterne er flere, så er kompleksiteten af ​​programmet mere. Hvis programmet har et højt kompleksitetstal, er sandsynligheden for fejl høj med øget tid til vedligeholdelse og fejlfinding.