Hva er kodedekning?
Kodedekning er et mål som beskriver i hvilken grad kildekoden til programmet er testet. Det er en form for test av hvite bokser som finner at områdene i programmet ikke utøves av et sett med testtilfeller. Det skaper også noen testtilfeller for å øke dekning og bestemme et kvantitativt mål på kodedekning.
I de fleste tilfeller samler kodedekningssystemet informasjon om det kjørende programmet. Den kombinerer også den med kildekodeinformasjon for å generere en rapport om testpakkeens kodedekning.
I denne veiledningen vil du lære-
- Hva er kodedekning?
- Hvorfor bruke kodedekning?
- Kodedekkingsmetoder
- Uttalelsesdekning
- Beslutningsdekning
- Grendekning
- Tilstandsdekning
- Endelig maskindekning
- Hvilken type kodedekning du skal velge
- Kodedekning vs. funksjonell dekning
- Kode Dekningsverktøy
- Fordeler og ulemper ved å bruke kodedekning
Hvorfor bruke kodedekning?
Her er noen hovedgrunner til å bruke kodedekning:
- Det hjelper deg med å måle effektiviteten av testimplementeringen
- Det tilbyr en kvantitativ måling.
- Den definerer i hvilken grad kildekoden er testet.
Kodedekkingsmetoder
Følgende er viktige kodedekningsmetoder
- Uttalelsesdekning
- Beslutningsdekning
- Grendekning
- Bytt dekning
- FSM-dekning
Uttalelsesdekning
Uttalelsesdekning er en testteknikk for en hvit boks der alle kjørbare utsagn i kildekoden utføres minst en gang. Den brukes til beregning av antall utsagn i kildekoden som er utført. Hovedformålet med Statement Coverage er å dekke alle mulige stier, linjer og utsagn i kildekoden.
Uttalelsesdekning brukes til å utlede scenarier basert på strukturen til koden som testes.
I White Box Testing konsentrerer testeren seg om hvordan programvaren fungerer. Med andre ord vil testeren konsentrere seg om det interne arbeidet med kildekoden angående kontrollflytdiagrammer eller flytskjemaer.
Vanligvis i hvilken som helst programvare, hvis vi ser på kildekoden, vil det være et bredt utvalg av elementer som operatører, funksjoner, looping, eksepsjonell håndterer osv. Basert på inndata til programmet, kan det hende at noen av kodesetningene ikke blir utført . Målet med uttalelsen er å dekke alle mulige stier, linjer og uttalelser i koden.
La oss forstå dette med et eksempel, hvordan vi beregner utsagnsdekning.
Scenario for å beregne utsagnsdekning for gitt kildekode. Her tar vi to forskjellige scenarier for å sjekke prosentandelen av utsagnsdekning for hvert scenario.
Kildekode:
Utskrifter (int a, int b) {------------ Printsum er en funksjonint resultat = a + b;Hvis (resultat> 0)Skriv ut ("Positivt", resultat)EllersSkriv ut ("negativt", resultat)} ----------- Slutt på kildekoden
Scenario 1:
Hvis A = 3, B = 9
Uttalelsene merket med gul farge er de som utføres i henhold til scenariet
Antall utførte uttalelser = 5, Totalt antall uttalelser = 7
Uttalelsesdekning: 5/7 = 71%
På samme måte vil vi se scenario 2,
Scenario 2:
Hvis A = -3, B = -9
Uttalelsene merket med gul farge er de som utføres i henhold til scenariet.
Antall utførte uttalelser = 6
Totalt antall utsagn = 7
Uttalelsesdekning: 6/7 = 85%
Men generelt sett, hvis du ser, blir alle utsagnene dekket av det andre scenariet. Så vi kan konkludere med at den samlede utsagnsdekningen er 100%.
Hva dekkes av uttalelsesdekning?
- Ubrukt utsagn
- Dead Code
- Ubrukte grener
- Manglende uttalelser
Beslutningsdekning
Beslutningsdekning er en testteknikk for en hvit boks som rapporterer de sanne eller falske resultatene av hvert boolske uttrykk for kildekoden. Målet med beslutningsdekningstesting er å dekke og validere all tilgjengelig kildekode ved å kontrollere og sikre at hver gren av alle mulige beslutningspunkter utføres minst en gang.
I denne dekningen kan uttrykk noen ganger bli kompliserte. Derfor er det veldig vanskelig å oppnå 100% dekning. Det er derfor det er mange forskjellige metoder for å rapportere denne beregningen. Alle disse metodene fokuserer på å dekke de viktigste kombinasjonene. Det ligner veldig på beslutningsdekning, men det gir bedre følsomhet for å kontrollere flyt.
Eksempel på beslutningsdekning
Vurder følgende kode-
Demo (int a) {Hvis (a> 5)a = a * 3Utskrift (a)}
Scenario 1:
Verdien av a er 2
Koden uthevet i gult blir utført. Her blir "Nei" utfallet av avgjørelsen Hvis (a> 5) sjekket.
Beslutningsdekning = 50%
Scenario 2:
Verdien av a er 6
Koden uthevet i gult blir utført. Her blir "Ja" utfallet av avgjørelsen Hvis (a> 5) sjekket.
Beslutningsdekning = 50%
Testforsøk | Verdien av A | Produksjon | Beslutningsdekning |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Grendekning
Branch Coverage er en testmetode for hvite bokser der hvert utfall fra en kodemodul (uttalelse eller løkke) testes. Hensikten med filialdekning er å sikre at hver avgjørelsesbetingelse fra hver filial blir utført minst en gang. Det hjelper å måle brøker av uavhengige kodesegmenter og å finne ut seksjoner uten grener.
For eksempel, hvis resultatene er binære, må du teste både sanne og falske utfall.
Formelen for å beregne grendekning:
Eksempel på grendekning
For å lære grenavdekning, la oss se på det samme eksemplet som ble brukt tidligere
Vurder følgende kode
Demo (int a) {Hvis (a> 5)a = a * 3Utskrift (a)}
Grendekning vil også vurdere ubetinget gren
Testforsøk | Verdien av A | Produksjon | Beslutningsdekning | Grendekning |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Fordeler med filialdekning:
Grendekning Testing gir følgende fordeler:
- Lar deg validere - alle grenene i koden
- Hjelper deg med å sikre at ingen forgreninger fører til unormale funksjoner i programmet
- Bransjens dekningsmetode fjerner problemer som oppstår på grunn av dekningsprøving
- Lar deg finne de områdene som ikke er testet av andre testmetoder
- Det lar deg finne et kvantitativt mål på kodedekning
- Grendekning ignorerer grener inne i de boolske uttrykkene
Tilstandsdekning
Tilstandsdekning eller uttrykksdekning er en testmetode som brukes til å teste og evaluere variablene eller underuttrykkene i den betingede uttalelsen. Målet med tilstandsdekning er å kontrollere individuelle resultater for hver logiske tilstand. Tilstandsdekning gir bedre følsomhet for kontrollflyten enn beslutningsdekning. I denne dekningen blir uttrykk med logiske operander bare vurdert.
For eksempel hvis et uttrykk har boolske operasjoner som AND, OR, XOR, som indikerer totale muligheter.
Tilstandsdekning gir ingen garanti for full beslutningsdekning.
Formelen for å beregne tilstandsdekning:
Eksempel:
For ovennevnte uttrykk har vi 4 mulige kombinasjoner
- TT
- FF
- TF
- FT
Tenk på følgende innspill
X = 3 Y = 4 |
(x |
EKTE |
Tilstandsdekning er ¼ = 25% |
A = 3 B = 4 |
(a> b) |
FALSK |
Endelig maskindekning
Endelig maskindekning er absolutt den mest komplekse typen kodedekningsmetode. Dette er fordi det fungerer på designens oppførsel. I denne dekningsmetoden må du se etter hvor mange tidsspesifikke stater som blir besøkt, transitt. Den sjekker også hvor mange sekvenser som er inkludert i en endelig tilstandsmaskin.
Hvilken type kodedekning du skal velge
Dette er absolutt det vanskeligste svaret å gi. For å velge en dekningsmetode, må testeren sjekke at
- koden under test har enkelt eller flere uoppdagede feil
- kostnaden for den potensielle straffen
- kostnad for tapt omdømme
- kostnad for tapt salg osv.
Jo høyere sannsynligheten for at mangler vil forårsake kostbare produksjonsfeil, jo mer alvorlig dekkingsnivå må du velge.
Kodedekning vs. funksjonell dekning
Kodedekning | Funksjonell dekning |
Kodedekning forteller deg hvor godt kildekoden har blitt utøvd av testbenken din. | Funksjonell dekning måler hvor godt funksjonaliteten til designet har blitt dekket av testbenken din. |
Bruk aldri en designspesifikasjon | Bruk designspesifikasjon |
Gjort av utviklere | Utført av testere |
Kode Dekningsverktøy
Her er en liste over viktige kodedekkingsverktøy:
Verktøyets navn | Beskrivelse |
Cobertura | Det er et dekningsverktøy med åpen kildekode. Den måler testdekning ved å instrumentere en kodebase og analysere hvilke kodelinjer som kjøres og hvilke som ikke kjøres når testpakken kjører. |
Kløver | Clover reduserer også testng-tiden ved bare å kjøre testene som dekker applikasjonskoden som ble endret siden forrige versjon. |
DevPartner | DevPartner lar utviklere analysere Java-kode for kodekvalitet og kompleksitet. |
Emma | EMMA støtter klasse-, metode-, linje- og basisblokkdekning, aggregerte kildefil-, klasse- og metodenivåer. |
Kalistick | Kalistick er et tredjepartsprogram som analyserer kodene med forskjellige perspektiver. |
CoView og CoAnt | Kodingsprogramvare er et kodedekkingsverktøy for beregninger, oppretting av mock-objekter, kodetestbarhet, bane- og grendekning etc. |
Bullseye for C ++ | BulseyeCoverage er et kodedekkingsverktøy for C ++ og C. |
Ekkolodd | Sonar er et dekningsverktøy med åpen kode som hjelper deg med å administrere kodekvaliteten. |
Fordeler med å bruke kodedekning
- Nyttig å evaluere et kvantitativt mål på kodedekning
- Det lar deg lage ekstra testsaker for å øke dekningen
- Den lar deg finne områdene i et program som ikke utøves av et sett med testtilfeller
Ulemper ved å bruke kodedekning
- Selv når en bestemt funksjon ikke er implementert i design, rapporterer kodedekning fortsatt 100% dekning.
- Det er ikke mulig å avgjøre om vi testet alle mulige verdier for en funksjon ved hjelp av kodedekning
- Kodedekning forteller heller ikke hvor mye og hvor godt du har dekket logikken din
- I tilfelle når den angitte funksjonen ikke er implementert, eller ikke er inkludert i spesifikasjonen, kan strukturbaserte teknikker ikke finne det problemet.
Sammendrag
- Kodedekning er et mål som beskriver i hvilken grad kildekoden til programmet er testet
- Det hjelper deg med å måle effektiviteten av testimplementeringen
- Fem kode dekkingsmetoder er 1.) Deklarasjon Dekning 2.) Tilstand Dekning 3) Gren Dekning 4) Toggle Dekning 5) FSM Dekning
- Uttalelsesdekning innebærer utførelse av alle kjørbare utsagn i kildekoden minst en gang
- Beslutningsdekning rapporterer de sanne eller falske resultatene av hvert boolsk uttrykk
- I filialdekningen testes hvert utfall fra en kodemodul
- Betinget vil avsløre hvordan variablene eller underuttrykkene i den betingede uttalelsen blir evaluert
- Endelig maskindekning er absolutt den mest komplekse typen kodedekningsmetode
- For å velge en dekningsmetode, må testeren sjekke kostnadene for potensiell straff, mistet omdømme, tapt salg osv.
- Kodedekning forteller deg hvor godt kildekoden har blitt utøvd av testbenken din, mens funksjonell dekning måler hvor godt funksjonaliteten til designet er dekket
- Cobertura, JTest, Clover, Emma, Kalistick er få viktige kodedekkingsverktøy
- Kodedekning lar deg lage ekstra testtilfeller for å øke dekningen
- Kodedekning hjelper deg ikke med å avgjøre om vi testet alle mulige verdier for en funksjon