Kodedekningsveiledning: Branch, Statement & Decision Testing
Hva er kodedekning?
Kodedekning er et mรฅl som beskriver graden av kildekoden til programmet er testet. Det er en form for testing av hvite bokser som finner omrรฅdene i programmet som ikke utรธves av et sett med testtilfeller. Det oppretter ogsรฅ noen testtilfeller for รฅ รธke dekningen og bestemme et kvantitativt mรฅl for kodedekning.
I de fleste tilfeller samler kodedekningssystem informasjon om det kjรธrende programmet. Den kombinerer ogsรฅ det med kildekodeinformasjon for รฅ generere en rapport om testpakkens kodedekning.
Hvorfor bruke kodedekningstesting?
Her er noen hovedgrunner for รฅ bruke kodedekning:
- Det hjelper deg รฅ mรฅle effektiviteten av testimplementering
- Den tilbyr en kvantitativ mรฅling.
- Den definerer i hvilken grad kildekoden er testet.
Metoder for kodedekning
Fรธlgende er viktige kodedekningsmetoder
- Uttalelsesdekning
- Beslutningsdekning
- Filialdekning
- Toggle Dekning
- FSM-dekning
Uttalelsesdekning
Uttalelsesdekning er en hvit boks-testteknikk der alle de kjรธrbare setningene i kildekoden kjรธres minst รฉn gang. Den brukes til รฅ beregne 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 scenario basert pรฅ strukturen til koden som testes.
In Hvit Box Testing, konsentrerer testeren seg om hvordan programvaren fungerer. Med andre ord vil testeren konsentrere seg om den interne driften av kildekoden angรฅende kontrollflytgrafer eller flytskjemaer.
Generelt i enhver programvare, hvis vi ser pรฅ kildekoden, vil det vรฆre et bredt utvalg av elementer som operatรธrer, funksjoner, looping, eksepsjonelle behandlere, etc. Basert pรฅ input til programmet, kan det hende at noen av kodesetningene ikke blir utfรธrt . Mรฅlet med Statement-dekning er รฅ dekke alle mulige stier, linjer og uttalelser i koden.
La oss forstรฅ dette med et eksempel, hvordan du beregner utsagnsdekning.
Scenario for รฅ beregne erklรฆringsdekning for gitt kildekode. Her tar vi to forskjellige scenarier for รฅ sjekke prosentandelen av erklรฆringsdekningen for hvert scenario.
Kildekode:
Prints (int a, int b) { ------------ Printsum is a function
int result = a+ b;
If (result> 0)
Print ("Positive", result)
Else
Print ("Negative", result)
} ----------- End of the source code
Scenario 1:
Hvis A = 3, B = 9Utsagnene merket med gul farge er de som utfรธres i henhold til scenariet
Antall utfรธrte utsagn = 5, Totalt antall utsagn = 7
Uttalelsesdekning: 5/7 = 71 %
Pรฅ samme mรฅte vil vi se scenario 2,
Scenario 2:
Hvis A = -3, B = -9
Utsagnene merket med gul farge er de som utfรธres i henhold til scenariet.
Antall utfรธrte utsagn = 6
Totalt antall utsagn = 7
Uttalelsesdekning: 6/7 = 85 %
Men totalt sett, hvis du ser, er alle utsagnene dekket av begge scenariene. Sรฅ vi kan konkludere med at den generelle dekningen er 100 %.
Hva dekkes av erklรฆringsdekning?
- Ubrukte uttalelser
- Dรธd kode
- Ubrukte grener
- Manglende utsagn
Testing av beslutningsdekning
Beslutningsdekning er en hvit boks-testteknikk som rapporterer sanne eller falske utfall av hvert boolsk uttrykk for kildekoden. Mรฅlet med testing av beslutningsdekning er รฅ dekke og validere all tilgjengelig kildekode ved รฅ sjekke og sikre at hver gren av alle mulige beslutningspunkter utfรธres minst รฉn gang.
I denne dekningstypen kan uttrykk bli komplekse, noe som gjรธr det utfordrende รฅ oppnรฅ 100 % dekning. Dette er grunnen til at ulike metoder brukes for รฅ rapportere denne beregningen. Disse metodene prioriterer de mest kritiske kombinasjonene. Selv om det ligner pรฅ beslutningsdekning, gir det stรธrre fรธlsomhet for kontrollflyt.
Eksempel pรฅ vedtaksdekning
Tenk pรฅ fรธlgende kode-
Demo(int a) {
If (a> 5)
a=a*3
Print (a)
}
Scenario 1:
Verdien av a er 2
Koden uthevet i gult vil bli utfรธrt. Her er "Nei"-utfallet av avgjรธrelsen If (a>5) krysset av.
Beslutningsdekning = 50 %
Scenario 2:
Verdien av a er 6
Koden uthevet i gult vil bli utfรธrt. Her er "Ja"-utfallet av avgjรธrelsen If (a>5) krysset av.
Beslutningsdekning = 50 %
| Testsak | Verdien av A | Produksjon | Beslutningsdekning |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Testing av grendekning
Filialdekning er en hvit boks-testmetode der hvert utfall fra en kodemodul (utsagn eller loop) testes. Hensikten med filialdekning er รฅ sikre at hver beslutningsbetingelse fra hver filial blir utfรธrt minst รฉn gang. Det hjelper รฅ mรฅle brรธkdeler av uavhengige kodesegmenter og รฅ finne ut seksjoner som ikke har noen forgreninger.
For eksempel, hvis resultatene er binรฆre, mรฅ du teste bรฅde sanne og usanne utfall.
Formelen for รฅ beregne grendekning:
Eksempel pรฅ filialdekning
For รฅ lรฆre grendekning, la oss vurdere det samme eksemplet som ble brukt tidligere
Tenk pรฅ fรธlgende kode-
Demo(int a) {
If (a> 5)
a=a*3
Print (a)
}
Filialdekning vil ogsรฅ vurdere ubetinget filial
| Testsak | Verdien av A | Produksjon | Beslutningsdekning | Filialdekning |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Fordeler med filialdekning:
Filialdekning Testing gir fรธlgende fordeler:
- Lar deg validere alle grenene i koden
- Hjelper deg med รฅ sikre at ingen forgrenet fรธrer til unormalt i programmets drift
- Branch-dekningsmetoden fjerner problemer som oppstรฅr pรฅ grunn av testing av erklรฆringsdekning
- Lar deg finne de omrรฅdene som ikke er testet av andre testmetoder
- Den lar deg finne et kvantitativt mรฅl for kodedekning
- Grenedekning ignorerer grener inne i de boolske uttrykkene
Tilstandsdekningstesting
Tilstandsdekning eller uttrykksdekning er en testmetode som brukes til รฅ teste og evaluere variablene eller underuttrykkene i den betingede setningen. Mรฅlet med tilstandsdekning er รฅ sjekke individuelle utfall for hver logisk tilstand. Tilstandsdekning gir bedre fรธlsomhet for kontrollflyten enn beslutningsdekning. I denne dekningen vurderes kun uttrykk med logiske operander.
For eksempel, hvis et uttrykk har boolske operasjoner som AND, OR, XOR, som indikerer totale muligheter.
Tilstandsdekning gir ingen garanti om full vedtaksdekning.
Formelen for รฅ beregne tilstandsdekning:
Eksempel:
For uttrykket ovenfor har vi 4 mulige kombinasjoner
- TT
- FF
- TF
- FT
Tenk pรฅ fรธlgende innspill
| X = 3
Y = 4 |
(x | TRUE | Tilstandsdekning er ยผ = 25 % |
| A = 3
B = 4 |
(a>b) | FALSK |
Finite State Machine Dekning
Finite state maskindekning er absolutt den mest komplekse typen kodedekningsmetode. Dette er fordi det fungerer pรฅ oppfรธrselen til designet. I denne dekningsmetoden mรฅ du se etter hvor mange tidsspesifikke stater som besรธkes, transitt. Den sjekker ogsรฅ hvor mange sekvenser som er inkludert i en endelig tilstandsmaskin.
Hvilken type kodedekning รฅ velge
Dette er absolutt det vanskeligste svaret รฅ gi. For รฅ velge en dekningsmetode, mรฅ testeren sjekke at
- koden som testes har รฉn eller flere uoppdagede defekter
- kostnaden for den potensielle straffen
- kostnadene ved tapt omdรธmme
- kostnader ved tapt salg, etc.
Jo hรธyere sannsynlighet for at feil vil forรฅrsake kostbare produksjonssvikt, desto strengere er dekningsnivรฅet du mรฅ velge.
Kodedekning vs. funksjonell dekning
| Kodedekning | Funksjonell dekning |
|---|---|
| Kodedekningen forteller deg hvor godt kildekoden har blitt brukt av testbenken din. | Funksjonell dekning mรฅler hvor godt funksjonaliteten til designet har blitt dekket av testbenken din. |
| Bruk aldri en designspesifikasjon | Bruk designspesifikasjoner |
| Utfรธrt av utviklere | Utfรธrt av testere |
Verktรธy for kodedekning
Her er en liste over viktige kodedekningsverktรธy:
| Verktรธyets navn | Tekniske beskrivelser |
|---|---|
| Cobertura | Det er et dekningsverktรธy for รฅpen kildekode. Den mรฅler testdekning ved รฅ instrumentere en kodebase og analysere hvilke linjer med kode som kjรธres og hvilke som ikke kjรธres nรฅr testpakken kjรธrer. |
| Klรธver | Clover reduserer ogsรฅ testtiden ved kun รฅ kjรธre testene som dekker applikasjonskoden som ble endret siden forrige konstruksjon. |
| DevPartner | DevPartner gjรธr det mulig for 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 en tredjepartsapplikasjon som analyserer kodene med forskjellige perspektiver. |
| CoView og CoAnt | Kodingsprogramvare er et kodedekningsverktรธy for beregninger, mock-objektoppretting, kodetestbarhet, bane- og grendekning, etc. |
| Bullseye for C++ | BulseyeCoverage er et kodedekningsverktรธy for C++ og C. |
| Sonar | Sonar er et รฅpent kodedekningsverktรธy som hjelper deg med รฅ administrere kodekvalitet. |
Fordeler og ulemper ved รฅ bruke kodedekning
| Fordeler med kodedekning | Kodedekning Ulemper |
|---|---|
| Nyttig for รฅ evaluere et kvantitativt mรฅl pรฅ kodedekning | Selv nรฅr en bestemt funksjon ikke er implementert i design, rapporterer kodedekning fortsatt 100 % dekning. |
| Den lar deg lage ekstra testtilfeller for รฅ รธke dekningen | Det er ikke mulig รฅ fastslรฅ om vi testet alle mulige verdier av en funksjon ved hjelp av kodedekning |
| Den lar deg finne omrรฅdene i et program som ikke utรธves av et sett med testtilfeller | Kodedekningen forteller heller ikke hvor mye og hvor godt du har dekket logikken din |
| I tilfellet nรฅr den angitte funksjonen ikke er implementert, eller ikke er inkludert i spesifikasjonen, kan ikke strukturbaserte teknikker finne det problemet. |
Sammendrag
- Kodedekning er et mรฅl som beskriver graden av kildekoden til programmet er testet
- Det hjelper deg รฅ mรฅle effektiviteten av testimplementering
- Fem kodedekningsmetoder er 1.) Erklรฆringsdekning 2.) Tilstandsdekning 3) Bransjedekning 4) Toggle Dekning 5) FSM Dekning
- Uttalelsesdekning innebรฆrer utfรธrelse av alle de kjรธrbare setningene i kildekoden minst รฉn gang
- Beslutningsdekning rapporterer sanne eller usanne utfall av hvert boolsk uttrykk
- I grendekningen testes hvert utfall fra en kodemodul
- Betinget vil avslรธre hvordan variablene eller underuttrykkene i den betingede setningen blir evaluert
- Finite state maskindekning er absolutt den mest komplekse typen kodedekningsmetode
- For รฅ velge en dekningsmetode, mรฅ testeren sjekke kostnadene for den potensielle straffen, tapt omdรธmme, tapt salg, etc.
- Kodedekning forteller deg hvor godt kildekoden har blitt brukt av testbenken din, mens funksjonell dekning mรฅler hvor godt funksjonaliteten til designet har blitt dekket
- Cobertura, JTest, Clover, Emma, โโKalistick er noen viktige kodedekningsverktรธy
- Kodedekning lar deg lage ekstra testtilfeller for รฅ รธke dekningen
- Kodedekning hjelper deg ikke med รฅ avgjรธre om vi har testet alle mulige verdier for en funksjon













