Cyklomatisk komplexitet i mjukvarutestning (exempel)
Vad รคr McCabes cyklomatiska komplexitet?
Cyklomatisk komplexitet i mjukvarutestning รคr ett testmรฅtt som anvรคnds fรถr att mรคta komplexiteten hos ett program. Det รคr ett kvantitativt mรฅtt pรฅ oberoende sรถkvรคgar i kรคllkoden fรถr ett program. Cyklomatisk komplexitet kan berรคknas genom att anvรคnda styrflรถdesgrafer eller med avseende pรฅ funktioner, moduler, metoder eller klasser inom ett program.
Oberoende bana definieras som en bana som har minst en kant som inte har korsat tidigare i nรฅgra andra banor.
Detta mรฅtt utvecklades av Thomas J. McCabe 1976 och รคr baserat pรฅ en kontrollflรถdesrepresentation av programmet. Kontrollflรถdet visar ett program som en graf som bestรฅr av noder och kanter.
I grafen representerar noder bearbetningsuppgifter medan kanter representerar kontrollflรถdet mellan noderna.
Flรถdesgrafnotation fรถr ett program
Flรถdesgrafnotation fรถr ett program definierar flera noder kopplade genom kanterna. Nedan finns flรถdesdiagram fรถr pรฅstรฅenden som if-else, While, tills och normal flรถdessekvens.
Hur man berรคknar cyklomatisk komplexitet
Matematisk representation:
Matematiskt sett รคr det en uppsรคttning oberoende banor genom grafdiagrammet. Code Programmets komplexitet kan definieras med hjรคlp av formeln โ
V(G) = E - N + 2
Var,
E โ Antal kanter
N โ Antal noder
V (G) = P + 1
Dรคr P = Antal predikatnoder (nod som innehรฅller villkor)
Exempel -
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;
Flรถdesdiagram fรถr detta program kommer att vara
Berรคkna matematiskt,
- V(G) = 9 โ 7 + 2 = 4
- V(G) = 3 + 1 = 4 (villkorsnoder รคr 1,2, 3 och XNUMX noder)
- Grunduppsรคttning โ En uppsรคttning mรถjliga kรถrvรคgar fรถr ett 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 cyklomatisk komplexitet
Fรถljande รคr egenskaperna hos cyklomatisk komplexitet:
- V (G) รคr det maximala antalet oberoende vรคgar i grafen
- V (G) >=1
- G kommer att ha en vรคg om V (G) = 1
- Minimera komplexiteten till 10
Hur รคr detta mรฅtt anvรคndbart fรถr programvarutestning?
Basis Path-testning รคr en av White box-tekniken och den garanterar att minst en sats kรถrs under testning. Den kontrollerar varje linjรคrt oberoende vรคg genom programmet, som betyder antal testfall, kommer att motsvara programmets cyklomatiska komplexitet.
Detta mรฅtt รคr anvรคndbart pรฅ grund av egenskaperna fรถr cyklomatisk komplexitet (M) -
- M kan vara antal testfall fรถr att uppnรฅ grentรคckning (รถvre grรคns)
- M kan vara antal vรคgar genom graferna. (nedre grรคns)
Tรคnk pรฅ det hรคr exemplet -
If (Condition 1) Statement 1 Else Statement 2 If (Condition 2) Statement 3 Else Statement 4
Cyklomatisk komplexitet fรถr detta program kommer att vara 8-7+2=3.
Eftersom komplexiteten har berรคknats som 3, รคr tre testfall nรถdvรคndiga fรถr att fullstรคndig vรคgtรคckning fรถr exemplet ovan.
Steg som ska fรถljas:
Fรถljande steg bรถr fรถljas fรถr berรคkning av cyklomatisk komplexitet och design av testfall.
steg 1 โ Konstruktion av graf med noder och kanter frรฅn koden
steg 2 โ Identifiering av oberoende vรคgar
steg 3 โ Cyklomatisk komplexitetsberรคkning
steg 4 โ Design av testfall
Nรคr grunduppsรคttningen vรคl รคr bildad, TESTFALL bรถr skrivas fรถr att kรถra alla sรถkvรคgar.
Mer om V (G)
Cyklomatisk komplexitet kan berรคknas manuellt om programmet รคr litet. Automatiserade verktyg mรฅste anvรคndas om programmet รคr mycket komplext eftersom det innebรคr fler flรถdesdiagram. Baserat pรฅ komplexitetsnummer kan teamet dra slutsatser om de รฅtgรคrder som mรฅste vidtas fรถr รฅtgรคrd.
Fรถljande tabell ger en รถversikt รถver komplexitetstalet och motsvarande betydelse fรถr v (G):
| Komplexitetsnummer | Betydelse |
|---|---|
| 1-10 | Strukturerad och vรคlskriven kod
Hรถg testbarhet Kostnad och anstrรคngning รคr mindre |
| 10-20 | Komplex Code
Medium testbarhet Kostnad och anstrรคngning รคr Medium |
| 20-40 | Mycket komplex Code
Lรฅg testbarhet Kostnaden och anstrรคngningen รคr hรถga |
| > 40 | Inte alls testbar
Mycket hรถg kostnad och anstrรคngning |
Verktyg fรถr berรคkning av cyklomatisk komplexitet:
Mรฅnga verktyg finns tillgรคngliga fรถr att bestรคmma applikationens komplexitet. Vissa verktyg fรถr komplexitetsberรคkning anvรคnds fรถr specifika tekniker. Komplexiteten kan hittas av antalet beslutspunkter i ett program. Beslutspunkterna รคr om, fรถr, fรถr varje, medan, gรถr, fรฅnga, falluttalanden i en kรคllkod.
Exempel pรฅ verktyg รคr
- OCLint โ Statisk kodanalysator fรถr C och relaterade sprรฅk
- Reflektortillรคgg โ Code mรคtvรคrden fรถr .NET-sammansรคttningar
- Gmetrik โ Hitta mรคtvรคrden i Java relaterade applikationer
Anvรคndning av cyklomatisk komplexitet:
Cyklomatisk komplexitet kan visa sig vara till stor hjรคlp
- Hjรคlper utvecklare och testare att bestรคmma oberoende sรถkvรคgskรถrningar
- Utvecklare kan fรถrsรคkra att alla vรคgar har testats รฅtminstone en gรฅng
- Hjรคlper oss att fokusera mer pรฅ de oupptรคckta vรคgarna
- Fรถrbรคttra kodtรคckningen i Mjukvaruutveckling
- Utvรคrdera risken fรถrknippad med applikationen eller programmet
- Att anvรคnda dessa mรคtvรคrden tidigt i cykeln minskar risken fรถr programmet
Slutsats
Cyclomatic Complexity รคr mjukvarumรฅtt som รคr anvรคndbart fรถr strukturerad eller Vit Box Testning. Det anvรคnds frรคmst fรถr att utvรคrdera komplexiteten hos ett program. Om beslutspunkterna รคr fler, รคr programmets komplexitet mer. Om programmet har hรถgt komplexitetstal รคr sannolikheten fรถr fel hรถg med รถkad tid fรถr underhรฅll och felsรถkning.


.png)
.png)