what is cyclomatic complexity learn with an example
Cyklomatisk kompleksitet er et meget almindeligt buzz-ord i udviklingssamfundet. Denne teknik bruges hovedsageligt til at bestemme kompleksiteten af et stykke kode eller funktionalitet.
hvordan man tester private metoder ved hjælp af mockito
Teknikken blev udviklet af MaCabe og hjælper med at identificere nedenstående 3 spørgsmål til programmerne / funktionerne
- Kan funktionen / programmet testes?
- Forstås funktionen / programmet af alle?
- Er funktionen / programmet pålideligt nok?
Som en kvalitetssikring kan vi bruge denne teknik til at identificere ”niveauet” af vores test. Det er en praksis, at hvis resultatet af cyklomatisk kompleksitet er mere eller større, betragter vi det stykke funktionalitet for at være af kompleks karakter, og derfor konkluderer vi som en test; at kodestykket / funktionaliteten kræver dybtgående test.
På den anden side, hvis resultatet af den cyklomatiske kompleksitet er et mindre antal, konkluderer vi som QA, at funktionaliteten er mindre kompleks, og beslutter omfanget i overensstemmelse hermed.
Lad mig gå trin for trin: først forstå, hvordan det beregnes, og så går vi videre til at forstå, hvordan testniveauet bestemmes.
Hvad du lærer:
- Hvordan beregnes cyklomatisk kompleksitet?
- Cyklomatisk kompleksitetsformel
- Eksempel på cyklomatisk kompleksitet
- Hvordan kan testere bruge det?
- Nu kommer genvejen-
- Anbefalet læsning
Hvordan beregnes cyklomatisk kompleksitet?
Beregningen af CC drejer sig om 2 koncepter
- Knuder
- Kanter
Udsagn i et program er repræsenteret som noder, og kontrolstier fra en sætning til en anden er repræsenteret af kanter.
Cyklomatisk kompleksitetsformel
Formlen til beregning af CC er som:
CC = E ~ N + 2
Hvor:
E = antal kanter
N = antal noder.
(Der er en genvej til beregning af den, men ikke nu ... senere ...)
Eksempel på cyklomatisk kompleksitet
Lad os tage nedenstående eksempel for at forstå det.
Overvej nedenstående kontrolflowdiagram:
Jeg har placeret NET prikker for at identificere noderne og BLÅ linjer for at identificere kanterne:
Så her i dette eksempel:
Antal noder (røde prikker) = 14
Antal kanter (blå linjer) = 15
Så den cyklomatiske kompleksitet = N ~ E + 2 = (14-15) +2 = 3
Hvordan kan testere bruge det?
I den virkelige verden kan testere sidde med udviklere for at udlede kontrolflowdiagrammet for et givet stykke kode. Og når vi først har grafen, kan vi udlede kompleksiteten ved hjælp af denne formel. Men historien for testere slutter ikke her: - Hovedpointen her er - hvad er brugen af dette nummer til testteamet?
hvordan man bruger sortering i java
Nå, testere kan bruge dette nummer til at bestemme niveauet for deres test.
I praksis er der to testniveauer:
- Test af længde
- Breddetestning
Overvej nedenstående matrix for forskellige funktioner i ethvert modul: -
Length Testing er en måde, hvorpå vi forsøger at dække hele omfanget ved at vælge de vigtige testcases for hver funktion. For eksempel , i dette tilfælde antager, at jeg vælger at antyde med testet længde, så kan jeg vælge -
- Underfunktion 1.1 og Underfunktion 1.3 til Funktion 1
- Underfunktion 2.2 fra Feature 2
- Underfunktion 3.3 fra funktion 3
- Underfunktion 4.2 og Underfunktion 4.3 fra funktion 4
- Underfunktion 5.3 fra funktion 5
Så her berører jeg hele funktionen uden at gå ind i udtømmende detaljer om underfunktioner.
Nu, hvis resultatet af CC er et større tal, vælger jeg at gå med Breadth-test, jeg vil faktisk teste hver eneste funktion sammen med hver underfunktion.
Så baseret på dit nuværende projektkrav, miljøpålidelighed, kan testere samarbejde sammen med udviklingsteamet og skabe en standard til identifikation af testniveauet og omfanget. For eksempel -
- Hvis CC<=15 – Basic sanity test
- Hvis CC er mellem 16 og 30 - Test af længde
- Hvis CC er mellem 31 og 50 - Breddetest
- Hvis CC> 50 - Det er en kaotisk funktionalitet og har brug for yderligere nedbrydning
Nu kommer genvejen-
Bare tal antallet af lukkede regioner og tilføj 1 til det.
I vores eksempel ovenfor - antallet af lukket område = 2 (udfyldt med gult), så CC = 2 + 1 = 3
hvordan man åbner en json-fil
I det virkelige arbejde er det meget vanskeligt at konkludere resultatet, når vi afgiver udsagn som -
- “… .. Denne funktionalitet er meget vanskelig at implementere”
Hvad mener du med vanskeligt? Er det kompliceret, kompliceret eller kaotisk?
Hvordan konkluderede du, at dette er svært?
- “... dette skal være tilgængeligt ved udgangen af dagen”
Hvad er slutningen af dagen? Din afslutning på dagen er kl. 19.00, sandsynligvis er min kl. 18.00?
- '... Jeg bliver nødt til at foretage detaljerede test for dette'
Hvad er detaljeret test? Der er ingen testteknik kaldet “Detaljeret test”
- “... koden skal være af god kvalitet, inden vi distribuerer den til QA”
Hvordan måler du god kvalitet?
I stedet hvis jeg omformulerer udsagnene som -
Den cyklomatiske kompleksitet for kodestykket beregnes som 75 og i henhold til vores standarder; denne funktionalitet er af kaos karakter. Derfor anbefaler vi yderligere nedbrydning af det.
Over
- “… .. Denne funktionalitet er meget vanskelig at implementere”
Funktionaliteten implementeres i QA-miljø kl. 17.00 CST.
Over
- '.... Dette skal være tilgængeligt inden udgangen af dagen'
Da den cyklomatiske kompleksitet beregnes som 48, udfører vi i henhold til vores standard systemtest sammen med Integration og Regressionstest for funktionen.
Over
- '.... Jeg ville have brug for at foretage detaljerede test for dette'
Som pr Sonar er CC nu 102. Vi har standardiseret at have CC til 10. Vi vil implementere koden, når vi forbedrer koden for at gøre CC mindre end 10.
Over
- '.... Koden skal være af god kvalitet, inden vi distribuerer den til QA'
Hvad er forskellen mellem de to udsagn?
Nå, forskellen her er målingen. Jeg har støttet hver af mine udsagn med passende måling, som vil hjælpe mine interessenter med at vide nøjagtigt, hvad jeg vil sige.
Brug ligeledes cyklomatisk kompleksitet i softwaretest til at bestemme det nøjagtige mål for din testindsats, og du kan bruge den til ikke kun at identificere omfanget af din test, men også de typer test, som du bliver nødt til at udføre.
Anbefalet læsning
- Hvad er komponenttest eller modultest (lær med eksempler)
- Hvad er sammenligningstest (lær med eksempler)
- Software Testing Karrierepakke eBook
- Hvad er System Integration Testing (SIT): Lær med eksempler
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- Test af Primer eBook Download
- 5 vigtige diagrammer, som testere har brug for at lære at bruge
- TestRail gennemgangsvejledning: Lær end-to-end test case management