For å forstå syklomatisk kompleksitet, kan vi først forstå -
Hva er programvare beregning?
Måling er ikke annet enn kvantitativ indikasjon på størrelse / dimensjon / kapasitet til et attributt til et produkt / en prosess. Programvare beregning er definert som et kvantitativt mål på et attributt et programvaresystem har med hensyn til kostnad, kvalitet, størrelse og tidsplan.
Eksempel-
Tiltak - antall feilBeregninger - Antall feil funnet per person
I denne veiledningen vil du lære-
- Hva er programvare beregning?
- Hva er syklomatisk kompleksitet?
- Flytegrafnotasjon for et program:
- Hvordan beregne syklomatisk kompleksitet
- Egenskaper av syklomatisk kompleksitet:
- Hvordan denne beregningen er nyttig for programvaretesting?
- Mer om V (G):
- Verktøy for beregning av syklomatisk kompleksitet:
- Bruk av syklomatisk kompleksitet:
Syklomatisk kompleksitet i programvaretesting
Syklomatisk kompleksitet i programvaretesting er en testmåling som brukes til å måle kompleksiteten til et program. Det er et kvantitativt mål på uavhengige baner i kildekoden til et program. Syklomatisk kompleksitet kan beregnes ved hjelp av kontrollflytdiagrammer eller med hensyn til funksjoner, moduler, metoder eller klasser i et program.
Uavhengig sti er definert som en sti som har minst en kant som ikke har blitt krysset før i noen andre stier.
Denne beregningen ble utviklet av Thomas J. McCabe i 1976, og den er basert på en representasjon av kontrollflyten av programmet. Kontrollflyt viser et program som en graf som består av noder og kanter.
I grafen representerer noder behandlingsoppgaver mens kantene representerer kontrollflyt mellom nodene.
Flytegrafnotasjon for et program:
Flow Graph-notasjon for et program definerer flere noder som er koblet gjennom kantene. Nedenfor er flytdiagrammer for utsagn som if-else, While, til og normal strømningssekvens.
Hvordan beregne syklomatisk kompleksitet
Matematisk fremstilling:
Matematisk sett er det satt av uavhengige baner gjennom grafdiagrammet. Programmets kodekompleksitet kan defineres ved hjelp av formelen -
V (G) = E - N + 2
Hvor,
E - Antall kanter
N - Antall noder
V (G) = P + 1
Hvor P = Antall predikatnoder (node som inneholder tilstand)
Eksempel -
i = 0;n = 4; // N-antall noder som er tilstede i grafenmens (iFlytskjema for dette programmet vil være
Regner matematisk,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (Tilstandsnoder er 1,2 og 3 noder)
- Basis Set - Et sett med mulig kjøringsbane 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
Egenskaper av syklomatisk kompleksitet:
Følgende er egenskapene til syklomatisk kompleksitet:
- V (G) er det maksimale antallet uavhengige baner i grafen
- V (G)> = 1
- G vil ha en bane hvis V (G) = 1
- Minimer kompleksiteten til 10
Hvordan denne beregningen er nyttig for programvaretesting?
Basis Path testing er en av White box teknikker, og det garanterer å utføre minst en uttalelse under testing. Den sjekker hver lineær uavhengig vei gjennom programmet, som betyr antall testtilfeller, vil være ekvivalent med programmets syklomatiske kompleksitet.
Denne beregningen er nyttig på grunn av egenskapene til syklomatisk kompleksitet (M) -
- M kan være antall testsaker for å oppnå grendekning (Upper Bound)
- M kan være antall stier gjennom grafene. (Nedre grense)
Tenk på dette eksemplet -
Hvis (tilstand 1)Erklæring 1EllersErklæring 2Hvis (tilstand 2)Uttalelse 3EllersUttalelse 4Syklomatisk kompleksitet for dette programmet vil være 8-7 + 2 = 3.
Siden kompleksiteten er beregnet som 3, er tre testtilfeller nødvendige for fullstendig banedekning for eksemplet ovenfor.
Fremgangsmåte som skal følges:
Følgende trinn bør følges for beregning av syklomatisk kompleksitet og utforming av testtilfeller.
Trinn 1 - Konstruksjon av graf med noder og kanter fra koden
Trinn 2 - Identifisering av uavhengige stier
Trinn 3 - Beregning av syklomatisk kompleksitet
Trinn 4 - Utforming av testsaker
Når basissettet er dannet, skal TESTSAKER skrives for å utføre alle banene.
Mer om V (G):
Syklomatisk kompleksitet kan beregnes manuelt hvis programmet er lite. Automatiske verktøy må brukes hvis programmet er veldig komplekst, da dette innebærer flere flytgrafer. Basert på kompleksitetsnummer kan teamet konkludere med handlingene som må tas for tiltak.
Følgende tabell gir oversikt over kompleksitetstall og tilhørende betydning av v (G):
Kompleksitetsnummer Betydning 1-10 Strukturert og velskrevet kode Høy testbarhet Kostnad og innsats er mindre 10-20 Kompleks kode Medium testbarhet Kostnad og innsats er middels 20-40 Svært kompleks kode Lav testbarhet Kostnad og innsats er høy > 40 Ikke i det hele tatt kan testes. Meget høye kostnader og innsats Verktøy for beregning av syklomatisk kompleksitet:
Mange verktøy er tilgjengelige for å bestemme kompleksiteten i applikasjonen. Noen beregningsverktøy for kompleksitet brukes til spesifikke teknologier. Kompleksitet kan bli funnet ved antall beslutningspunkter i et program. Avgjørelsespunktene er hvis, for, for hver, mens, gjør, fangst, saksuttalelser i en kildekode.
Eksempler på verktøy er
- OCLint - Statisk kodeanalysator for C og relaterte språk
- Reflector Add In - Code-beregninger for .NET-samlinger
- GMetrics - Finn beregninger i Java-relaterte applikasjoner
Bruk av syklomatisk kompleksitet:
Syklomatisk kompleksitet kan vise seg å være veldig nyttig i
- Hjelper utviklere og testere med å bestemme uavhengige banekjøringer
- Utviklere kan forsikre seg om at alle banene er testet minst en gang
- Hjelper oss med å fokusere mer på de avdekkede stiene
- Forbedre kodedekningen i Software Engineering
- Evaluer risikoen forbundet med applikasjonen eller programmet
- Å bruke disse beregningene tidlig i syklusen reduserer mer risiko for programmet
Konklusjon:
Syklomatisk kompleksitet er programvaremetrisk som er nyttig for strukturert eller White Box-testing. Det brukes hovedsakelig til å evaluere kompleksiteten i et program. Hvis beslutningspoengene er mer, er kompleksiteten i programmet mer. Hvis programmet har høyt kompleksitetstall, er sannsynligheten for feil stor med økt tid for vedlikehold og feilsøking.