For at forstå cyklomatisk kompleksitet, lad os først forstå -
Hvad er softwaremetrik?
Måling er intet andet end kvantitativ indikation af størrelse / dimension / kapacitet for en attribut for et produkt / en proces. Softwaremetrik er defineret som et kvantitativt mål for en attribut, som et softwaresystem besidder med hensyn til omkostninger, kvalitet, størrelse og tidsplan.
Eksempel-
Mål - antal fejlMetrics - Antal fundne fejl pr. Person
I denne vejledning lærer du-
- Hvad er softwaremetrik?
- Hvad er cyklomatisk kompleksitet?
- Flowgrafnotation for et program:
- Sådan beregnes cyklomatisk kompleksitet
- Egenskaber ved cyklomatisk kompleksitet:
- Hvordan denne måling er nyttig til softwaretest?
- Mere om V (G):
- Værktøjer til beregning af cyklomatisk kompleksitet:
- Anvendelse af cyklomatisk kompleksitet:
Cyklomatisk kompleksitet i softwaretest
Cyklomatisk kompleksitet i softwaretest 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 hjælp af kontrolgrafer eller med hensyn til funktioner, moduler, metoder eller klasser inden for et softwareprogram.
Uafhængig sti er defineret som en sti, der har mindst en kant, som ikke tidligere er gennemgået i andre stier.
Denne måling blev udviklet af Thomas J. McCabe i 1976, og den er baseret på en kontrolflowrepræ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.
Flowgrafnotation for et program:
Flow Graph-notation for et program definerer flere noder, der er forbundet gennem kanterne. Nedenfor er flowdiagrammer for udsagn som if-else, While, indtil og normal sekvens af flow.
Sådan beregnes cyklomatisk kompleksitet
Matematisk repræsentation:
Matematisk er det sæt 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 (knude, der indeholder betingelse)
Eksempel -
i = 0;n = 4; // N-antal noder til stede i grafenmens (iFlowdiagram for dette program vil være
Beregning matematisk,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (Tilstandsnoder er 1,2 og 3 noder)
- Basis Set - Et sæt af mulig eksekveringssti 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 ved cyklomatisk kompleksitet:
Følgende er egenskaberne ved cyklomatisk kompleksitet:
- V (G) er det maksimale antal uafhængige stier i grafen
- V (G)> = 1
- G vil have en sti, hvis V (G) = 1
- Minimer kompleksiteten til 10
Hvordan denne måling er nyttig til softwaretest?
Basis Path-test er en af White box-teknikker, og det garanterer at udføre mindst en erklæring under testningen. Den kontrollerer hver lineært uafhængig sti gennem programmet, hvilket betyder antal testtilfælde, svarer til programmets cyklomatiske kompleksitet.
Denne måling er nyttig på grund af egenskaber ved cyklomatisk kompleksitet (M) -
- M kan være antal testsager for at opnå grenafdækning (Upper Bound)
- M kan være antal stier gennem graferne. (Nedre grænse)
Overvej dette eksempel -
Hvis (betingelse 1)Erklæring 1AndetErklæring 2Hvis (betingelse 2)Erklæring 3AndetErklæring 4Cyklomatisk kompleksitet for dette program vil være 8-7 + 2 = 3.
Da kompleksiteten er beregnet som 3, er tre testtilfælde nødvendige for at fuldføre stigdæ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 uafhængige stier
Trin 3 - Beregning af cyklomatisk kompleksitet
Trin 4 - Design af testsager
Når basissættet er dannet, skal TESTSAGER skrives for at udføre alle stier.
Mere om V (G):
Cyklomatisk kompleksitet kan beregnes manuelt, hvis programmet er lille. Automatiske værktøjer skal bruges, hvis programmet er meget komplekst, da dette involverer flere flowgrafer. Baseret på antallet af kompleksiteter kan teamet konkludere på de handlinger, der skal træffes til en foranstaltning.
Følgende tabel giver et overblik over kompleksitetsnummeret og den tilsvarende betydning af v (G):
Kompleksitetsnummer Betyder 1-10 Struktureret og velskrevet kode Høj testbarhed Omkostninger og indsats er mindre 10-20 Kompleks kode Medium testbarhed Omkostninger og indsats er medium 20-40 Meget kompleks kode Lav testbarhed Omkostninger og indsats er høje > 40 Kan slet ikke testes Meget høje omkostninger og indsats Værktøjer til beregning af cyklomatisk kompleksitet:
Mange værktøjer er tilgængelige til bestemmelse af applikationens kompleksitet. Nogle kompleksitetsberegningsværktøjer bruges til specifikke teknologier. Kompleksitet kan findes ved antallet af beslutningspunkter i et program. Beslutningspunkterne er, hvis, for, for hver, mens, gør, fangst, sagsangivelser i en kildekode.
Eksempler på værktøjer er
- OCLint - Statisk kodeanalysator til C og beslægtede sprog
- Reflector Add In - Code-metrics til .NET-samlinger
- GMetrics - Find metrics i Java-relaterede applikationer
Anvendelse af cyklomatisk kompleksitet:
Cyklomatisk kompleksitet kan vise sig at være meget nyttigt i
- Hjælper udviklere og testere med at bestemme uafhængige banekørsler
- Udviklere kan forsikre, at alle stier er testet mindst én gang
- Hjælper os med at fokusere mere på de udækkede stier
- Forbedre kodedækning i Software Engineering
- Evaluer risikoen forbundet med applikationen eller programmet
- Brug af disse målinger tidligt i cyklussen reducerer større risiko for programmet
Konklusion:
Cyclomatic Complexity er softwaremetrik, der er nyttig til struktureret eller White Box-test. Det bruges hovedsageligt til at evaluere et programs kompleksitet. Hvis beslutningspunkterne er mere, er programmets kompleksitet mere. Hvis programmet har et højt kompleksitetstal, er sandsynligheden for fejl stor med øget tid til vedligeholdelse og fejlfinding.