Mccabes cyklomatiska komplexitet: Beräkna med flödesdiagram (exempel)

Innehållsförteckning:

Anonim

För att förstå cyklomatisk komplexitet kan vi först förstå -

Vad är mjukvarumätvärde?

Mätning är inget annat än kvantitativ indikation på storlek / dimension / kapacitet hos ett attribut för en produkt / process. Mjukvarumätvärde definieras som ett kvantitativt mått på ett attribut som ett mjukvarusystem har med avseende på kostnad, kvalitet, storlek och schema.

Exempel-

Mått - Antal felMätvärden - Antal fel hittades per person

I den här handledningen lär du dig-

  • Vad är mjukvarumätvärde?
  • Vad är cyklomatisk komplexitet?
  • Flödesschema för ett program:
  • Hur man beräknar cyklomatisk komplexitet
  • Egenskaper hos cyklomatisk komplexitet:
  • Hur är detta mått användbart för programvarutestning?
  • Mer om V (G):
  • Verktyg för cyklomatisk komplexitetsberäkning:
  • Användning av cyklomatisk komplexitet:

Cyklomatisk komplexitet i programvarutestning

Cyklomatisk komplexitet i programvarutestning är ett testmått som används för att mäta komplexiteten i ett program. Det är ett kvantitativt mått på oberoende vägar i källkoden för ett program. Cyklomatisk komplexitet kan beräknas med hjälp av kontrollflödesdiagram eller med avseende på funktioner, moduler, metoder eller klasser i ett program.

Oberoende väg definieras som en väg som har åtminstone en kant som inte har passerats tidigare i andra vägar.

Detta mått utvecklades av Thomas J. McCabe 1976 och baseras på en kontrollflödesrepresentation av programmet. Kontrollflödet visar ett program som ett diagram som består av noder och kanter.

I diagrammet representerar noder bearbetningsuppgifter medan kanterna representerar kontrollflöde mellan noder.

Flödesschema för ett program:

Flödesdiagramnotering för ett program definierar flera noder som är anslutna genom kanterna. Nedan finns flödesdiagram för påståenden som if-else, While, till och normal flödessekvens.

Hur man beräknar cyklomatisk komplexitet

Matematisk representation:

Matematiskt är det uppsättning av oberoende vägar genom diagramdiagrammet. Programmets kodkomplexitet kan definieras med 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 tillstånd)

Exempel -

i = 0;n = 4; // N-antalet noder som finns i diagrammetmedan (i 

Flödesdiagram för detta program kommer att vara

Beräknar matematiskt,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (villkorsnoder är 1,2 och 3 noder)
  • Basuppsättning - En uppsättning möjlig körväg 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 hos cyklomatisk komplexitet:

Följande är egenskaperna hos cyklomatisk komplexitet:

  1. V (G) är det maximala antalet oberoende vägar i diagrammet
  2. V (G)> = 1
  3. G kommer att ha en väg om V (G) = 1
  4. Minimera komplexiteten till 10

Hur är detta mått användbart för programvarutestning?

Grundvägstestning är en av White box-tekniker och det garanterar att utföra minst ett uttalande under testningen. Det kontrollerar varje linjärt oberoende väg genom programmet, vilket innebär att antalet testfall kommer att motsvara programmets cyklomatiska komplexitet.

Detta mått är användbart på grund av egenskaperna hos cyklomatisk komplexitet (M) -

  1. M kan vara antal testfall för att uppnå filialtäckning (Upper Bound)
  2. M kan vara antal banor genom graferna. (Nedre gräns)

Tänk på detta exempel -

Om (villkor 1)Uttalande 1AnnanUttalande 2Om (villkor 2)Uttalande 3AnnanUttalande 4

Cyklomatisk komplexitet för detta program blir 8-7 + 2 = 3.

Eftersom komplexiteten har beräknats som 3, är tre testfall nödvändiga för att fullständiga bantäckningen 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 diagram med noder och kanter från koden

Steg 2 - Identifiering av oberoende vägar

Steg 3 - Cyklomatisk komplexitetsberäkning

Steg 4 - Utformning av testfall

När grunduppsättningen har bildats ska TESTFALL skrivas för att utföra alla banor.

Mer om V (G):

Cyklomatisk komplexitet kan beräknas manuellt om programmet är litet. Automatiserade verktyg måste användas om programmet är mycket komplicerat 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 översikt över komplexitetsnumret och motsvarande betydelse av v (G):

Komplexitetsnummer Menande
1-10 Strukturerad och välskriven kod Hög testbarhet Kostnad och ansträngning är mindre
10-20 Komplex kod Medium Testbarhet Kostnad och ansträngning är Medium
20-40 Mycket komplex kod Låg testbarhet Kostnad och ansträngning är hög
> 40 Inte alls testbar Mycket hög kostnad och ansträngning

Verktyg för cyklomatisk komplexitetsberäkning:

Många verktyg finns tillgängliga för att bestämma applikationens komplexitet. Vissa verktyg för komplexitetsberäkning används för specifik teknik. Komplexitet kan hittas efter antalet beslutspunkter i ett program. Beslutspunkterna är om, för, för varje, medan, gör, fånga, uttalanden i en källkod.

Exempel på verktyg är

  • OCLint - Statisk kodanalysator för C och relaterade språk
  • Reflector Add In - Code-mätvärden för .NET-enheter
  • GMetrics - 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 körning av banor
  • Utvecklare kan försäkra sig om att alla vägar har testats minst en gång
  • Hjälper oss att fokusera mer på de otäckta vägarna
  • Förbättra kodtäckningen i Software Engineering
  • Utvärdera risken för applikationen eller programmet
  • Att använda dessa mätvärden tidigt i cykeln minskar större risk för programmet

Slutsats:

Cyclomatic Complexity är mjukvarumetrik som är användbart för strukturerad eller White Box-testning. Den används främst för att utvärdera komplexiteten i ett program. Om beslutspunkterna är fler är programmets komplexitet mer. Om programmet har högt komplexitetsnummer är sannolikheten för fel hög med ökad tid för underhåll och felsökning.