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.

Opsummer dette indlรฆg med: