Code Dekningsverktøy: Testing av uttalelser, grener og beslutninger
⚡ Smart oppsummering
Code dekning er en hvitboksmåling som rapporterer i hvilken grad kildekoden har blitt brukt av en testsuite, helping Teamene finner uprøvde setninger, grener, betingelser og stier som skjulte feil kan oppta.

Hva er Code Dekning?
Code dekning er et mål som beskriver i hvilken grad kildekoden til et program er testet. Det er én form for testing av hvit boks som finner områdene i et program som ikke utøves av et sett med testtilfeller. Det hjelper også med å lage flere testtilfeller for å øke dekningen og for å bestemme et kvantitativt mål på kodedekningen.
I de fleste tilfeller samler et kodedekningssystem informasjon om det kjørende programmet. Det kombinerer deretter dette med kildekodeinformasjon for å generere en rapport om testsuitens kodedekning.
Hvorfor bruk Code Dekningstesting?
Her er noen hovedgrunner til å bruke kodedekning:
- Det hjelper deg med å måle effektiviteten av testimplementeringen.
- Den tilbyr en kvantitativ måling av testing.
- Den definerer i hvilken grad kildekoden er testet.
Code Dekningsmetoder
Følgende er de viktigste metodene for kodedekning:
- Uttalelsesdekning
- Beslutningsdekning
- Filialdekning
- Toggle Dekning
- FSM-dekning
Uttalelsesdekning
Uttalelsesdekning er en hvitboks-testteknikk der alle de kjørbare setningene i kildekoden utføres minst én gang. Den brukes til å beregne antall setninger i kildekoden som er utført. Hovedformålet med setningsdekning er å dekke alle mulige stier, linjer og setninger i kildekoden.
Utsagnsdekning brukes til å utlede scenarier basert på strukturen til koden som testes.
I hvitbokstesting konsentrerer testeren seg om hvordan programvaren fungerer. Med andre ord konsentrerer testeren seg om kildekodens interne virkemåte når det gjelder kontrollflytgrafer eller flytskjemaer.
Generelt sett i all programvare, hvis du ser på kildekoden, vil det være et bredt utvalg av elementer som operatorer, funksjoner, osv.ping, unntakshåndterere og så videre. Basert på input til programmet, kan det hende at noen av kodesetningene ikke blir utført. Målet med setningsdekning er å dekke alle mulige stier, linjer og setninger i koden.
La oss forstå dette med et eksempel på hvordan man beregner dekningsgrad for kontoutskrifter. Her tar vi to forskjellige scenarioer for å sjekke prosentandelen av dekningsgrad for kontoutskrifter for hvert scenario.
Kilde Code:
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 = 9
Utsagnene merket med gult er de som utføres i henhold til scenarioet. Antall utførte utsagn = 5, totalt antall utsagn = 7, så utsagnsdekning = 5/7 = 71 %.
Scenario 2: Hvis A = -3, B = -9
Utsagnene merket med gult er de som utføres i henhold til scenarioet. Antall utførte utsagn = 6, totalt antall utsagn = 7, så utsagnsdekning = 6/7 = 85 %.
Men totalt sett, hvis du ser det, dekkes alle utsagnene av begge scenariene. Så vi kan konkludere med at den totale utsagnsdekningen er 100 %.
Hva dekkes av erklæringsdekning?
- Ubrukte uttalelser
- Død Code
- Ubrukte grener
- Manglende utsagn
Testing av beslutningsdekning
Beslutningsdekning er en hvitboks-testteknikk som rapporterer sanne eller usanne resultater for hvert boolsk uttrykk i kildekoden. Målet med beslutningsdekningstesting 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. Derfor brukes ulike metoder for å rapportere denne målingen. Disse metodene prioriterer de mest kritiske kombinasjonene. Selv om den ligner på grendekning, gir den større følsomhet for kontrollflyt.
Eksempel på beslutningsdekning
Vurder følgende kode:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Scenario 1: Verdien av a er 2. Utfallet av beslutningen er «nei». Hvis (a > 5) er avkrysset, er beslutningsdekningen 50 %.
Scenario 2: Verdien av a er 6. «Ja»-utfallet av avgjørelsen. Hvis (a > 5) er avkrysset, er avgjørelsesdekningen = 50 %.
| Testsak | Verdien av A | Produksjon | Beslutningsdekning |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Testing av grendekning
Filialdekning er en testmetode i hvit boks der hvert utfall fra en kodemodul (setning eller løkke) testes. Formålet med grendekning er å sikre at hver beslutningsbetingelse fra hver gren utføres minst én gang. Det hjelper med å måle brøkdeler av uavhengige kodesegmenter og finne ut seksjoner som ikke har noen grener.
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 om filialdekning, vurder det samme eksemplet som ble brukt tidligere. Filialdekning vil også vurdere den ubetingede filialen.
| Testsak | Verdien av A | Produksjon | Beslutningsdekning | Filialdekning |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Fordeler med filialdekning:
- Lar deg validere alle grenene i koden.
- Hjelper deg med å sikre at ingen grener fører til unormaliteter i programmets drift.
- Fjerner problemer som oppstår på grunn av testing av dekning av utsagn.
- Lar deg finne områder som ikke testes med andre testmetoder.
- Lar deg finne et kvantitativt mål på kodedekning.
- Grendekning ignorerer grener inne i boolske uttrykk.
Tilstandsdekningstesting
Tilstandsdekning, eller uttrykksdekning, er en testmetode som brukes til å teste og evaluere variablene eller deluttrykkene i en betinget setning. Målet med betingelsesdekning er å sjekke individuelle utfall for hver logiske betingelse. Betingelsesdekning gir bedre følsomhet for kontrollflyten enn beslutningsdekning. I denne dekningen vurderes bare uttrykk med logiske operander.
Hvis for eksempel et uttrykk har boolske operasjoner som AND, OR eller XOR, indikerer det de totale mulighetene. Betingelsesdekning garanterer ikke full beslutningsdekning.
Formelen for å beregne tilstandsdekning:
For et uttrykk med to operander finnes det fire mulige kombinasjoner: TT, FF, TF og FT. Tenk på inputen X=3, Y=4 (x b) USANN, som gir en tilstandsdekning på 1/4 = 25 %.
Finite State Machine Dekning
Dekning av endelige tilstandsmaskiner er absolutt den mest komplekse typen kodedekningsmetode. Dette er fordi den opererer på designets oppførsel. I denne dekningsmetoden må du se på hvor mange ganger bestemte tilstander besøkes eller passeres. Den sjekker også hvor mange sekvenser som er inkludert i en endelig tilstandsmaskin.
Hvilken type Code Dekning å velge
Dette er absolutt det vanskeligste svaret å gi. For å velge en dekningsmetode må testeren sjekke om:
- koden som testes har én eller flere uoppdagede feil,
- kostnaden av den potensielle straffen,
- kostnaden av tapt omdømme,
- kostnaden for tapt salg, og så videre.
Jo høyere sannsynlighet for at feil vil forårsake kostbare produksjonssvikt, desto strengere er dekningsnivået du må velge.
Code Dekning vs. funksjonell dekning
| Code Dekning | Funksjonell dekning |
|---|---|
| Forteller deg hvor godt kildekoden har blitt brukt av testbenken din. | Måler hvor godt funksjonaliteten til designet har blitt dekket av testbenken din. |
| Bruker aldri en designspesifikasjon. | Bruker en designspesifikasjon. |
| Gjort av utviklere. | Utført av testere. |
Code Dekningsverktøy
Her er en liste over viktige verktøy for kodedekning:
| Verktøyets navn | Tekniske beskrivelser |
|---|---|
| Cobertura | Et verktøy for dekning av åpen kildekode. Det 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 | Kløver (OpenClover) reduserer også testtiden ved kun å kjøre testene som dekker applikasjonskoden som er endret siden forrige versjon. |
| DevPartner | DevPartner gjør det mulig for utviklere å analysere Java kode for kodekvalitet og kompleksitet. |
| Emma | EMMA støtter klasse-, metode-, linje- og grunnleggende blokkdekning, aggregert på kildefil-, klasse- og metodenivå. |
| Kalistick | Kalistick er et tredjepartsprogram som analyserer koden fra forskjellige perspektiver. |
| CoView og CoAnt | Et kodedekningverktøy for metrikk, oppretting av simulerte objekter, kodetestbarhet, sti- og grendekning og mer. |
| Bullseye for C++ | BullseyeCoverage er et kodedekningverktøy for C++ og C. |
| Sonar | Sonar er et verktøy for åpen kodedekning som hjelper deg med å administrere kodekvalitet. |
Fordeler og ulemper ved bruk Code Dekning
| Fordeler | Ulemper |
|---|---|
| Nyttig for å evaluere et kvantitativt mål på kodedekning. | Selv når en spesifikk funksjon ikke er implementert i designet, rapporterer kodedekningen fortsatt 100 % dekning. |
| Lar deg opprette ekstra testtilfeller for å øke dekningen. | Det er ikke mulig å avgjøre om alle mulige verdier for en funksjon ble testet ved hjelp av kodedekning. |
| Lar deg finne områdene i et program som ikke utøves av et sett med testtilfeller. | Code Dekning forteller ikke hvor mye og hvor godt du har dekket logikken din. |






