what is cyclomatic complexity learn with an example
Cyklomatisk komplexitet är ett mycket vanligt buzz-ord i utvecklingssamhället. Denna teknik används främst för att bestämma komplexiteten hos en kod eller funktion.
Tekniken utvecklades av MaCabe och hjälper till att identifiera nedanstående 3 frågor för programmen / funktionerna
- Kan funktionen / programmet testas?
- Förstås funktionen / programmet av alla?
- Är funktionen / programmet tillräckligt pålitligt?
Som en kvalitetsbedömning kan vi använda denna teknik för att identifiera ”nivån” i våra tester. Det är en praxis att om resultatet av cyklomatisk komplexitet är mer eller ett större antal, anser vi att den funktionen är av komplex natur och därför avslutar vi som testare; att koden / funktionaliteten kräver djupgående tester.
lista över spionappar för Android
Å andra sidan, om resultatet av den cyklomatiska komplexiteten är ett mindre antal, drar vi som QA slutsatsen att funktionaliteten är mindre komplex och bestämmer omfattningen därefter.
Låt mig gå steg för steg: först först hur det beräknas, och sedan går vi vidare för att förstå hur testnivån bestäms.
Vad du kommer att lära dig:
- Hur man beräknar cyklomatisk komplexitet?
- Cyklomatisk komplexitetsformel
- Cyklomatisk komplexitetsexempel
- Hur kan testare använda det?
- Nu kommer genvägen-
- Rekommenderad läsning
Hur man beräknar cyklomatisk komplexitet?
Beräkningen av CC kretsar kring två begrepp
- Knutpunkter
- Kanter
Uttalanden i ett program representeras som noder och kontrollvägar från ett uttalande till ett annat representeras av kanter.
Cyklomatisk komplexitetsformel
Formeln för beräkning av CC är som:
CC = E ~ N + 2
Var:
E = Antal kanter
N = antal noder.
(Det finns en genväg för att beräkna den, men inte nu ...… senare ...)
Cyklomatisk komplexitetsexempel
Låt oss ta exemplet nedan för att förstå det.
Tänk på nedanstående flödesdiagram för kontroll:
Jag har placerat NETTO prickar för att identifiera noder och BLÅ linjer för att identifiera kanterna:
Så här i det här exemplet:
Antal noder (röda prickar) = 14
Antal kanter (blå linjer) = 15
Så den cyklomatiska komplexiteten = N ~ E + 2 = (14-15) +2 = 3
Hur kan testare använda det?
I den verkliga världen kan testare sitta med utvecklare för att härleda kontrollflödesdiagrammet för en viss kod. Och när vi väl har grafen kan vi härleda komplexiteten med den här formeln. Men berättelsen för testare slutar inte här: - Huvudpoängen här är - vad är det här numret för testteamet?
Tja, testare kan använda detta nummer för att bestämma nivån på deras testning.
I praktiken finns det två testnivåer:
- Längdtestning
- Breddtestning
Tänk på matrisen nedan för olika funktioner i vilken modul som helst: -
hur man skriver ett testplanprov
Längdtestning är ett sätt på vilket vi försöker täcka hela omfattningen genom att välja viktiga testfall för varje funktion. Till exempel , i det här fallet, antar att jag väljer att antyda med längdtestningen, då kan jag välja -
- Underfunktion 1.1 och Underfunktion 1.3 för Funktion 1
- Underfunktion 2.2 från funktion 2
- Underfunktion 3.3 från funktion 3
- Sub Feature 4.2 och Sub Feature 4.3 från Feature 4
- Underfunktion 5.3 från funktion 5
Så här berör jag hela funktionen utan att gå in på uttömmande detaljer om underfunktioner.
Nu om resultatet av CC är ett större antal väljer jag att gå med Breddtestning, jag kommer faktiskt att testa varje funktion tillsammans med varje underfunktion.
Så baserat på ditt nuvarande projektkrav, miljöpåverkan, kan testare samarbeta tillsammans med utvecklingsteamet och skapa en standard för identifiering av testnivån och omfattningen. Till exempel -
- Om CC<=15 – Basic sanity test
- Om CC är mellan 16 och 30 - Test av längd
- Om CC är mellan 31 och 50 - Breddtestning
- Om CC> 50 - Det är en kaotisk funktionalitet och behöver ytterligare sönderdelning
Nu kommer genvägen-
Räkna bara antalet stängda regioner och lägg till 1 i det.
I vårt exempel ovan - antal stängda regioner = 2 (fyllda i gula), så CC = 2 + 1 = 3
hur man öppnar en json-fil
I det verkliga arbetet är det mycket svårt att avsluta resultatet när vi ger uttalanden som -
- '... .. denna funktion är mycket svår att implementera'
Vad menar du med svårt? Är det komplicerat, komplicerat eller kaotiskt?
Hur kom du fram till att detta är svårt?
- '... detta borde vara tillgängligt i slutet av dagen'
Vad är slutet på dagen? Ditt slut på dagen är 19.00, förmodligen är mitt 18.00?
- '... Jag skulle behöva göra detaljerade tester för detta'
Vad är detaljerad testning? Det finns ingen testteknik som kallas 'Detaljerad testning'
- '... koden ska vara av god kvalitet innan vi distribuerar den till QA'
Hur mäter du god kvalitet?
Istället, om jag omformulerar uttalandena som -
Den cyklomatiska komplexiteten för kodstycket beräknas till 75 och enligt våra standarder; denna funktion är av kaos karaktär. Därför rekommenderar vi att den sönderdelas ytterligare.
Över
- '... .. denna funktion är mycket svår att implementera'
Funktionaliteten kommer att distribueras i QA-miljö kl. 17.00 CST.
Över
- '.... Detta borde vara tillgängligt i slutet av dagen'
Eftersom den cyklomatiska komplexiteten beräknas som 48, skulle vi enligt vår standard göra systemtesterna tillsammans med Integration och Regressionstest för funktionen.
Över
- '... Jag skulle behöva göra detaljerade tester för detta'
Enligt Sonar är CC nu 102. Vi har standardiserat att ha CC till 10. Vi kommer att distribuera koden när vi förbättrar koden för att göra CC mindre än 10.
Över
- '.... Koden ska vara av god kvalitet innan vi distribuerar den till QA'
Vad är skillnaden mellan de två påståenden?
Skillnaden här är mätningen. Jag har stött vart och ett av mina uttalanden med lämplig mätning som skulle hjälpa mina intressenter att veta exakt vad jag vill säga.
Använd också cyklomatisk komplexitet i programvarutestning för att bestämma det exakta måttet på dina testansträngningar och du kan använda den för att inte bara identifiera omfattningen av din testning utan också de typer av test som du skulle behöva göra.
Rekommenderad läsning
- Vad är komponenttestning eller modultestning (lär dig med exempel)
- Vad är jämförelsetestning (lär dig med exempel)
- Software Testing Career Package eBook
- Vad är System Integration Testing (SIT): Lär dig med exempel
- Bästa verktyg för testning av programvara 2021 (QA Test Automation Tools)
- Testing Primer eBook Download
- 5 viktiga diagram som testare behöver lära sig att använda
- TestRail Review Tutorial: Lär dig hantera slut-till-slut testfall