Mis on koodi katvus?
Koodide katvus on mõõde, mis kirjeldab programmi lähtekoodi testimise taset. See on üks valge kasti testimise vorm, mis leiab programmi piirkonnad, mida testjuhtumite komplekt ei kasuta. See loob ka mõned katsejuhtumid, et suurendada katvust ja määrata koodide katvuse kvantitatiivne mõõt.
Enamasti kogub koodide katvussüsteem teavet käimasoleva programmi kohta. See ühendab selle ka lähtekoodi teabega, et luua aruanne testipaki koodide katvuse kohta.
Selles õpetuses saate teada
- Mis on koodi katvus?
- Miks kasutada koodikatet?
- Koodide katmise meetodid
- Avalduse katvus
- Otsuse katvus
- Filiaali katvus
- Seisundi katvus
- Lõppseisundi masina katvus
- Millist tüüpi koodikatvust valida
- Koodi katvus vs funktsionaalne katvus
- Koodikatte tööriistad
- Koodikatvuse kasutamise eelised ja puudused
Miks kasutada koodikatet?
Siin on mõned peamised põhjused koodi katvuse kasutamiseks:
- See aitab teil mõõta testi rakendamise tõhusust
- See pakub kvantitatiivset mõõtmist.
- See määratleb lähtekoodi testimise taseme.
Koodide katmise meetodid
Järgnevad on peamised koodide katvuse meetodid
- Avalduse katvus
- Otsuse katvus
- Filiaali katvus
- Lülitage katvus
- Mikroneesia leviala
Avalduse katvus
Avalduse katvus on valge kasti testimistehnika, mille korral kõik lähtekoodi käivitatavad käskud täidetakse vähemalt üks kord. Seda kasutatakse käivitatud lähtekoodis olevate lausete arvu arvutamiseks. Avalduse katvuse peamine eesmärk on hõlmata kõiki võimalikke lähtekoodi radasid, ridu ja avaldusi.
Avalduse katvust kasutatakse stsenaariumi tuletamiseks testitava koodi struktuuri põhjal.
Valge kasti testimisel keskendub testija tarkvara toimimisele. Teisisõnu keskendub testija lähtekoodi sisemisele tööle kontrollvoogude või vooskeemide osas.
Üldiselt on igas tarkvaras lähtekoodi vaatamisel palju erinevaid elemente, nagu operaatorid, funktsioonid, loopimine, erakordsed käitlejad jne. Programmi sisendi põhjal ei pruugi osa koodilausetest olla täidetud . Avalduse katvuse eesmärk on katta koodis kõik võimalikud tee, rida ja lause.
Mõistame seda näite abil, kuidas arvutada väljavõtete katvust.
Stsenaarium väljavõtte katvuse arvutamiseks antud lähtekoodi jaoks. Siin võtame kaks erinevat stsenaariumi, et kontrollida iga stsenaariumi väljavõtete katvuse protsenti.
Lähtekood:
Prindib (int a, int b) {------------ Printsum on funktsioonint tulemus = a + b;Kui (tulemus> 0)Prindi ("Positiivne", tulemus)MuiduPrindi ("Negatiivne", tulemus)} ----------- Lähtekoodi lõpp
1. stsenaarium:
Kui A = 3, B = 9
Kollase värviga märgitud laused täidetakse vastavalt stsenaariumile
Täidetud avalduste arv = 5, avalduste koguarv = 7
Avalduse katvus: 5/7 = 71%
Samamoodi näeme stsenaariumi 2,
2. stsenaarium:
Kui A = -3, B = -9
Kollase värviga märgitud laused täidetakse vastavalt stsenaariumile.
Täidetud avalduste arv = 6
Avalduste koguarv = 7
Avalduse katvus: 6/7 = 85%
Kuid üldiselt, kui näete, on kõik väited hõlmatud teise stsenaariumiga. Seega võime järeldada, et kogu avalduse katvus on 100%.
Mida hõlmab avalduse katvus?
- Kasutamata avaldused
- Surnud kood
- Kasutamata oksad
- Puuduvad avaldused
Otsuse katvus
Otsuse katvus on valge kasti testimise tehnika, mis annab teada lähtekoodi iga tõeväärtuse tõest või valest tulemusest. 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 kajastuses võivad väljendid mõnikord keeruliseks muutuda. Seetõttu on 100% katvuse saavutamine väga raske. Seetõttu on selle mõõdiku teatamiseks palju erinevaid meetodeid. Kõik need meetodid keskenduvad kõige olulisemate kombinatsioonide kajastamisele. See sarnaneb väga otsuste katvusega, kuid pakub paremat tundlikkust voo juhtimiseks.
Näide otsuste hõlmatusest
Kaaluge järgmist koodi-
Demo (int a) {Kui (a> 5)a = a * 3Prindi (a)}
1. stsenaarium:
A väärtus on 2
Kollasega esile tõstetud kood käivitatakse. Siin kontrollitakse otsuse "Ei" tulemust, kui (a> 5).
Otsuse katvus = 50%
2. stsenaarium:
A väärtus on 6
Kollasega esile tõstetud kood käivitatakse. Siin kontrollitakse otsuse "Jah" tulemust, kui (a> 5).
Otsuse katvus = 50%
Testjuhtum | A väärtus | Väljund | Otsuse katvus |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Filiaali katvus
Haru katvus on valge kasti testimismeetod, mille käigus testitakse kõiki koodimooduli (avalduse või tsükli) tulemusi. Filiaali katvuse eesmärk on tagada, et iga filiaali iga otsustingimus täidetakse vähemalt üks kord. See aitab mõõta iseseisvate koodisegmentide murdosa ja selgitada välja harudeta sektsioonid.
Näiteks kui tulemused on binaarsed, peate testima nii tõese kui ka vale tulemuse.
Filiaali katvuse arvutamise valem:
Filiaali katvuse näide
Filiaalide katvuse õppimiseks kaalume sama näidet, mida varem kasutati
Mõelge järgmisele koodile
Demo (int a) {Kui (a> 5)a = a * 3Prindi (a)}
Filiaalide katvus arvestab ka tingimusteta haru
Testjuhtum | A väärtus | Väljund | Otsuse katvus | Filiaali katvus |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Filiaali katvuse eelised:
Filiaalide katvuse testimine pakub järgmisi eeliseid:
- Võimaldab teil kinnitada kõik koodi harud
- Aitab teil tagada, et ükski hargnenud programm ei viiks programmi töös kõrvalekalleteni
- Filiaalide katvuse meetod eemaldab avalduste katvuse testimise tõttu tekkivad probleemid
- Võimaldab leida need piirkonnad, mida muud testimismeetodid ei testinud
- See võimaldab teil leida kvantitatiivse koodi katvuse mõõtmise
- Haru katvus ignoreerib Boole'i väljendite sees olevaid harusid
Seisundi katvus
Tingimuse katvus või avaldise katvus on testimismeetod, mida kasutatakse tingimuslause muutujate või alaväljendite testimiseks ja hindamiseks. Tingimuste katvuse eesmärk on kontrollida iga loogilise tingimuse individuaalseid tulemusi. Seisundi katvus pakub paremat tundlikkust kontrollivoo suhtes kui otsuste katvus. Selles kajastuses vaadeldakse ainult loogiliste operandidega väljendeid.
Näiteks kui avaldisel on Boole'i toimingud nagu AND, OR, XOR, mis näitab kogu võimalusi.
Seisundi katvus ei taga täieliku otsuste hõlmatust.
Tingimuste katvuse arvutamise valem:
Näide:
Ülaltoodud avaldise jaoks on meil 4 võimalikku kombinatsiooni
- TT
- FF
- TF
- FT
Mõelge järgmisele sisendile
X = 3 Y = 4 |
(x |
TÕSI |
Seisundi katvus on ¼ = 25% |
A = 3 B = 4 |
(a> b) |
VÄÄR |
Lõppseisundi masina katvus
Lõpliku olekuga masina katvus on kindlasti kõige keerukam koodilevi meetod. Seda seetõttu, et see töötab disaini käitumise järgi. Selles levimeetodis peate otsima, kui palju ajaspetsiifilisi olekuid külastatakse, läbitakse. Samuti kontrollitakse, kui palju järjestusi on piiratud olekumasinasse.
Millist tüüpi koodikatvust valida
See on kindlasti kõige raskem vastus. Katvusmeetodi valimiseks peab testija kontrollima, kas
- testitaval koodil on üks või mitu avastamata viga
- võimaliku karistuse maksumus
- kaotatud maine maksumus
- kaotatud müügi maksumus jne.
Mida suurem on tõenäosus, et defektid põhjustavad kulukaid tootmisprobleeme, seda raskema katvuse taseme peate valima.
Koodi katvus vs funktsionaalne katvus
Koodide katvus | Funktsionaalne katvus |
Koodide katvus näitab teile, kui hästi teie testpink on lähtekoodi kasutanud. | Funktsionaalne katvus mõõdab, kui hästi on teie katsepink katnud disaini funktsionaalsuse. |
Ärge kunagi kasutage disainispetsifikatsiooni | Kasutage disaini spetsifikatsiooni |
Koostanud arendajad | Koostanud testijad |
Koodikatte tööriistad
Siin on loetelu olulistest koodide katvuse tööriistadest:
Tööriista nimi | Kirjeldus |
Cobertura | See on avatud lähtekoodiga katvuse tööriist. See mõõdab testkatvust, seadistades koodibaasi ja analüüsides, milliseid koodiridu testipaketi käivitamisel täidetakse ja milliseid mitte. |
Ristik | Ristik vähendab ka testimise aega, käivitades ainult testid, mis hõlmavad rakenduse koodi, mida on muudetud pärast eelmist järku. |
DevPartner | DevPartner võimaldab arendajatel analüüsida Java-koodi koodikvaliteedi ja keerukuse osas. |
Emma | EMMA toetab klassi, meetodi, rea ja baasploki katvust, koondatud lähtefaili, klassi ja meetodi tasemeid. |
Kalistick | Kalistick on kolmanda osapoole rakendus, mis analüüsib koode erineva vaatenurgaga. |
CoView ja CoAnt | Kodeerimistarkvara on koodide katvuse tööriist mõõdikute, mõnitavate objektide loomise, koodi testimise, tee ja harude katvuse jms jaoks. |
Bullseye C ++ jaoks | BulseyeCoverage on koodide katvuse tööriist C ++ ja C jaoks. |
Sonar | Sonar on avatud koodide katvuse tööriist, mis aitab teil koodi kvaliteeti hallata. |
Koodikatvuse kasutamise eelised
- Kasulik hinnata koodi katvuse kvantitatiivset mõõdet
- See võimaldab teil katvuse suurendamiseks luua täiendavaid testjuhtumeid
- See võimaldab teil leida programmi piirkonnad, mida testjuhtumite komplekt ei kasuta
Koodikatvuse kasutamise puudused
- Isegi kui mõnda konkreetset funktsiooni pole disainis rakendatud, teatab koodi katvus ikkagi 100% ulatuses.
- Ei ole võimalik kindlaks teha, kas testisime funktsiooni kõiki võimalikke väärtusi koodi katvuse abil
- Koodi katvus ei tähenda ka seda, kui palju ja kui hästi olete oma loogikat kajastanud
- Kui määratud funktsiooni pole rakendatud või see pole spetsifikatsioonist lisatud, ei leia struktuuripõhised tehnikad seda probleemi.
Kokkuvõte
- Koodide katvus on mõõde, mis kirjeldab programmi lähtekoodi testimise taset
- See aitab teil mõõta testi rakendamise tõhusust
- Viis koodikatte meetodit on 1.) Avalduse katvus 2.) Seisundi katvus 3) Haru katvus 4) Lülituse katvus 5) Mikroneesia katvus
- Avalduse katvus hõlmab kõigi lähtekoodi käivitatavate käskude täitmist vähemalt üks kord
- Otsuse ulatus kajastab iga Boole'i avaldise tõelisi või valesid tulemusi
- Haru katvuses testitakse kõiki koodimooduli tulemusi
- Tingimuslik paljastab, kuidas hinnatakse tingimuslause muutujaid või alaväljendeid
- Lõpliku olekuga masina katvus on kindlasti kõige keerukam koodilevi meetod
- Katvusmeetodi valimiseks peab testija kontrollima võimaliku karistuse, kaotatud maine, kaotatud müügi jms maksumust.
- Koodi katvus näitab teile, kui hästi teie proovipink on lähtekoodi kasutanud, funktsionaalne katvus mõõdab, kui hästi on disaini funktsionaalsus kaetud
- Cobertura, JTest, Clover, Emma, Kalistick on mõned olulised koodikattevahendid
- Koodide katvus võimaldab teil katvuse suurendamiseks luua täiendavaid testjuhtumeid
- Koodikatvus ei aita teil tuvastada, kas testisime funktsiooni kõiki võimalikke väärtusi