Koodi katvuse õpetus: filiaalide, avalduste ja otsuste testimine

Mis on koodi katvus?

Koodi katvus on mõõt, mis kirjeldab programmi lähtekoodi testimise taset. See on üks valge kasti testimise vorme, mis leiab programmi valdkonnad, mida testjuhtumite komplekt ei kasuta. Samuti loob see mõned testjuhtumid katvuse suurendamiseks ja koodi katvuse kvantitatiivse mõõtmise määramiseks.

Enamikul juhtudel kogub koodi katvussüsteem teavet töötava programmi kohta. Samuti ühendab see selle lähtekoodi teabega, et luua aruanne testkomplekti koodi katvuse kohta.

Miks kasutada koodikatvuse testimist?

Siin on mõned koodi leviala kasutamise peamised põhjused:

  • See aitab teil mõõta testi rakendamise tõhusust
  • See pakub kvantitatiivset mõõtmist.
  • See määrab lähtekoodi testimise astme.

Koodi katmise meetodid

Järgnevalt on toodud peamised koodikatte meetodid

  • Väljavõtte katvus
  • Otsuste katvus
  • Filiaalide katvus
  • Toggle Katvus
  • FSM leviala

Väljavõtte katvus

Väljavõtte katvus on valge kasti testimistehnika, mille puhul käivitatakse kõik lähtekoodis olevad käivitatavad laused vähemalt korra. Seda kasutatakse lähtekoodis käivitatud avalduste arvu arvutamiseks. Väljavõtte katvuse põhieesmärk on katta kõik võimalikud teed, read ja laused lähtekoodis.

Väljavõtte katvust kasutatakse testitava koodi struktuuri põhjal stsenaariumi tuletamiseks.

Väljavõtte katvus

In Valge Box Testimine, keskendub testija tarkvara toimimisele. Teisisõnu keskendub testija lähtekoodi sisemisele tööle, mis puudutab kontrolli voograafikuid või vooskeeme.

Üldiselt on igas tarkvaras, kui vaatame lähtekoodi, palju erinevaid elemente, nagu operaatorid, funktsioonid, silmused, erandlikud töötlejad jne. Programmi sisendi põhjal ei pruugita mõnda koodilauset täita . Väljavõtte katvuse eesmärk on katta koodis kõik võimalikud teed, read ja laused.

Mõistame seda näite abil, kuidas väljavõtte katvust arvutada.

Stsenaarium antud lähtekoodi väljavõtte katvuse arvutamiseks. Siin kasutame kahte erinevat stsenaariumi, et kontrollida iga stsenaariumi avalduse katvuse protsenti.

Lähtekood:

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 

Stsenaarium 1:

Kui A = 3, B = 9

Väljavõtte katvus

Kollase värviga märgitud avaldused on need, mis täidetakse vastavalt stsenaariumile

Täidetud avalduste arv = 5, lausete koguarv = 7

Väljavõtte katvus: 5/7 = 71%

Väljavõtte katvus

Samuti näeme stsenaariumi 2,

Stsenaarium 2:

Kui A = -3, B = -9

Väljavõtte katvus

Kollase värviga märgitud avaldused on need, mis täidetakse vastavalt stsenaariumile.

Täidetud avalduste arv = 6

Väidete koguarv = 7

Väljavõtte katvus

Väljavõtte katvus: 6/7 = 85%

Väljavõtte katvus

Kuid üldiselt on mõlemad stsenaariumid kaetud kõigi väidetega. Seega võime järeldada, et üldine avalduse katvus on 100%.

Väljavõtte katvus

Mida hõlmab väljavõtte katvus?

  1. Kasutamata avaldused
  2. Surnud kood
  3. Kasutamata oksad
  4. Puuduvad avaldused

Otsuste katvuse testimine

Otsuste katvus on valge kasti testimistehnika, mis teatab lähtekoodi iga tõeväärtusavaldise tõesed või valed tulemused. Otsuste katvuse testimise eesmärk on katta ja kinnitada kogu juurdepääsetav lähtekood, kontrollides ja tagades, et iga võimaliku otsustuspunkti iga haru täidetakse vähemalt üks kord.

Selles kajas võivad väljendid mõnikord keeruliseks muutuda. Seetõttu on 100% katvust väga raske saavutada. Seetõttu on selle mõõdiku esitamiseks palju erinevaid meetodeid. Kõik need meetodid keskenduvad kõige olulisemate kombinatsioonide katmisele. See on väga sarnane otsuste kattega, kuid pakub paremat tundlikkust voolu juhtimiseks.

Otsuste katvuse testimine

Otsuse katvuse näide

Mõelge järgmisele koodile -

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }

Stsenaarium 1:

A väärtus on 2

Otsuste katvuse testimine

Kollasega esiletõstetud kood käivitatakse. Siin on märgitud otsuse „Ei” tulemus Kui (a>5).

Otsuse katvus = 50%

Stsenaarium 2:

A väärtus on 6

Otsuste katvuse testimine

Kollasega esiletõstetud kood käivitatakse. Siin on märgitud otsuse "Jah" tulemus Kui (a>5).

Otsuse katvus = 50%

Testjuhtum A väärtus Väljund Otsuste katvus
1 2 2 50%
2 6 18 50%

Filiaalide katvuse testimine

Filiaalide katvus on valge kasti testimismeetod, milles testitakse iga koodimooduli (lause või tsükli) tulemust. Filiaali katvuse eesmärk on tagada, et iga filiaali iga otsustustingimus täidetakse vähemalt üks kord. See aitab mõõta sõltumatute koodisegmentide murde ja leida harudeta sektsioone.

Näiteks kui tulemused on binaarsed, peate testima nii tõeseid kui ka valesid tulemusi.

Filiaali katvuse arvutamise valem:

Filiaalide katvuse testimine

Näide filiaalide katmisest

Haru katvuse õppimiseks vaatleme sama näidet, mida kasutati varem

Mõelge järgmisele koodile -

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }                                       

Filiaalide katvuse testimine

Filiaalide katvus arvestab ka tingimusteta filiaaliga

Testjuhtum A väärtus Väljund Otsuste katvus Filiaalide katvus
1 2 2 50% 33%
2 6 18 50% 67%

Filiaali leviala eelised:

Filiaali katvuse testimine pakub järgmisi eeliseid:

  • Võimaldab teil kontrollida kõiki koodi harusid
  • Aitab teil tagada, et ükski hargnemine ei põhjustaks programmi töös mingeid kõrvalekaldeid
  • Filiaali katvuse meetod eemaldab probleemid, mis tekivad väljavõtte katvuse testimise tõttu
  • Võimaldab leida valdkondi, mida teiste testimismeetoditega ei testita
  • See võimaldab teil leida koodi katvuse kvantitatiivse mõõdu
  • Haru katvus ignoreerib Boole'i ​​avaldiste sees olevaid harusid

Seisundi katvuse testimine

Seisundi katvus või avaldise katvus on testimismeetod, mida kasutatakse tingimuslause muutujate või alamväljendite testimiseks ja hindamiseks. Tingimuste katvuse eesmärk on kontrollida iga loogilise tingimuse individuaalseid tulemusi. Tingimuste katvus pakub juhtimisvoo suhtes paremat tundlikkust kui otsuste katvus. Selles kajas käsitletakse ainult loogiliste operandidega väljendeid.

Näiteks kui avaldis sisaldab Boole'i ​​tehteid nagu JA, VÕI, XOR, mis näitab kõiki võimalusi.

Tingimuste katvus ei anna garantiid täieliku otsuse katvuse kohta.

Tingimuse katvuse arvutamise valem:

Seisundi katvuse testimine

Näide:

Seisundi katvuse testimine

Ülaltoodud avaldise jaoks on meil 4 võimalikku kombinatsiooni

  • TT
  • FF
  • TF
  • FT

Kaaluge järgmist sisendit

X = 3

Y = 4

(x TRUE Tingimuse katvus on ¼ = 25%
A = 3

B = 4

(a>b) FALSE

Piiratud olekuga masina katvus

Lõpliku olekuga masina katvus on kindlasti kõige keerulisem koodikatte meetod. Seda seetõttu, et see mõjutab disaini käitumist. Selle katvusmeetodi puhul peate otsima, kui palju ajapõhiseid riike külastatakse, läbitakse. Samuti kontrollib see, mitu jada on piiratud olekumasinasse kaasatud.

Millist koodikatte tüüpi valida

See on kindlasti kõige raskem vastus anda. Katvusmeetodi valimiseks peab testija kontrollima, et

  • testitaval koodil on üks või mitu avastamata defekti
  • võimaliku trahvi maksumus
  • kaotatud maine maksumus
  • kaotatud müügi maksumus jne.

Mida suurem on tõenäosus, et defektid põhjustavad kulukaid tootmistõrkeid, seda tõsisema katvuse taseme peate valima.

Koodi katvus vs funktsionaalne katvus

Koodide katvus Funktsionaalne katvus
Koodi katvus näitab, kui hästi on lähtekoodi teie testistend kasutanud. Funktsionaalne katvus mõõdab, kui hästi on teie katsestendil disaini funktsionaalsused kaetud.
Ärge kunagi kasutage disaini spetsifikatsiooni Kasutage disaini spetsifikatsiooni
Arendajate tehtud Testijad

Koodikatte tööriistad

Siin on oluliste koodikatte tööriistade loend:

Tööriista nimi Kirjeldus
Cobertura See on avatud lähtekoodi kattetööriist. See mõõdab testi katvust, instrumenteerides koodibaasi ja analüüsides, milliseid koodiridu testimiskomplekti käitamisel käivitatakse ja milliseid mitte.
Ristikhein Clover vähendab ka testimise aega, käivitades ainult need testid, mis hõlmavad rakenduse koodi, mida on muudetud pärast eelmist ehitamist.
DevPartner DevPartner võimaldab arendajatel analüüsida Java koodi kvaliteedi ja keerukuse kood.
Emma EMMA toetab klassi, meetodi, rea ja põhiploki katvust, koondatud lähtefaili, klassi ja meetodi taset.
Kalistick Kalistick on kolmanda osapoole rakendus, mis analüüsib koode erinevate vaatenurkadega.
CoView ja CoAnt Kodeerimistarkvara on koodikatte tööriist mõõdikute, näidisobjektide loomise, koodi testimise, tee ja haru katvuse jms jaoks.
Bullseye jaoks C++ BulseyeCoverage on koodi katmise tööriist C++ ja C.
Sonar Sonar on avatud koodi katvuse tööriist, mis aitab teil koodi kvaliteeti hallata.

Koodikatte kasutamise eelised ja puudused

Koodikatte eelised Koodikatte puudused
Abiks koodi katvuse kvantitatiivse mõõtmise hindamisel Isegi kui mõnda konkreetset funktsiooni disainis ei rakendata, on koodi katvus endiselt 100% katvus.
See võimaldab teil katvuse suurendamiseks luua täiendavaid testjuhtumeid Koodikatte abil pole võimalik kindlaks teha, kas testisime funktsiooni kõiki võimalikke väärtusi
See võimaldab teil leida programmi valdkondi, mida testjuhtumite komplekt ei kasuta Koodi katvus ei näita ka seda, kui palju ja kui hästi olete oma loogikat katnud
Kui määratud funktsiooni pole rakendatud või see pole spetsifikatsioonis sisaldunud, ei leia struktuuripõhised tehnikad seda probleemi.

kokkuvõte

  • Koodi katvus on mõõt, mis kirjeldab programmi lähtekoodi testimise taset
  • See aitab teil mõõta testi rakendamise tõhusust
  • Viis koodi hõlmamise meetodit on 1.) Väljavõtte katvus 2.) Tingimuste katvus 3) Filiaalide katvus 4) Toggle Katvus 5) Mikroneesia leviala
  • Väljavõtte katvus hõlmab kõigi lähtekoodis olevate käivitatavate lausete täitmist vähemalt üks kord
  • Otsuste katvus teatab iga Boole'i ​​avaldise tõesed või valed tulemused
  • Haru katvuses testitakse iga koodimooduli tulemust
  • Tingimuslik näitab, kuidas tingimuslause muutujaid või alamväljendeid hinnatakse
  • Lõpliku olekuga masina katvus on kindlasti kõige keerulisem koodikatte meetod
  • Kattemeetodi valimiseks peab testija kontrollima võimaliku trahvi maksumust, kaotatud mainet, kaotatud müüki jne.
  • Koodi katvus näitab, kui hästi on lähtekoodi teie katsestendil kasutatud, samas kui funktsionaalne katvus mõõdab, kui hästi on disaini funktsionaalsus kaetud
  • Cobertura, JTest, Clover, Emma, ​​Kalistick on mõned olulised koodikatte tööriistad
  • Koodi katvus võimaldab leviala suurendamiseks luua täiendavaid testjuhtumeid
  • Koodi katvus ei aita teil kindlaks teha, kas testisime funktsiooni kõiki võimalikke väärtusi