Code Katvuse tööriist: väljavõtete, harude ja otsuste testimine

⚡ Nutikas kokkuvõte

Code Katvus on valge kasti mõõt, mis näitab, mil määral on lähtekoodi testimiskomplekt läbi töötanud.ping meeskonnad leiavad testimata lauseid, harusid, tingimusi ja teid, mida võivad hõivata varjatud defektid.

  • 🎯 Määratlus: Code Katvus kvantifitseerib, kui suurt osa lähtekoodist teie testid tegelikult täidavad.
  • 📊 Meetodid: On olemas viis meetodit – lause-, otsustus-, hargnemis-, tingimus- ja lõpliku olekuga masina katvus.
  • 🧩 Avaldus vs haru: Väljavõtte katvus kontrollib ridu, samas kui filiaali katvus kontrollib iga otsuse tulemust.
  • 🇧🇷 Code vs funktsionaalne: Code rakendatud katvusmeetmete kood; hõlmatud funktsionaalsete katvusmeetmete nõuded.
  • 🛠️ Vahendid: Cobertura, OpenClover, EMMA ja Sonar automatiseerivad katvuse mõõtmist.
  • 🤖 AI abi: Tehisintellekti tööriistad genereerivad teste ja tuvastavad automaatselt testimata, kõrge riskiga katvuslüngad.

Code Katvuse õpetus

Mis on Code Katvus?

Code katmine on mõõt, mis kirjeldab programmi lähtekoodi testimise ulatust. See on üks selle vorme. valge kasti testimine mis leiab programmi alad, mida testjuhtumite komplekt ei ole läbi proovinud. See aitab luua ka täiendavaid testjuhtumeid, et suurendada ulatust ja määrata koodi ulatuse kvantitatiivne mõõt.

Enamasti kogub koodi katvuse süsteem teavet töötava programmi kohta. Seejärel ühendab see selle lähtekoodi teabega, et genereerida aruanne testimiskomplekti koodi katvuse kohta.

Miks kasutada Code Katvuse testimine?

Siin on mõned koodikatte kasutamise peamised põhjused:

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

Code Katvusmeetodid

Järgnevalt on toodud peamised koodi katmise meetodid:

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

Väljavõtte katvus

Väljavõtte katvus on valge kasti testimise tehnika, mille puhul kõiki lähtekoodi käivitatavaid lauseid käivitatakse vähemalt üks kord. Seda kasutatakse lähtekoodis käivitatud lausete arvu arvutamiseks. Lausekatte peamine eesmärk on katta kõik võimalikud teed, read ja laused lähtekoodis.

Lausekatet kasutatakse stsenaariumide tuletamiseks testitava koodi struktuuri põhjal.

Väljavõtte katvus

Valge kasti testimisel keskendub testija tarkvara toimimisele. Teisisõnu, testija keskendub lähtekoodi sisemisele toimimisele, mis on seotud juhtimisvoo graafikute või vooskeemidega.

Üldiselt on igas tarkvaras lähtekoodi vaadates palju erinevaid elemente, näiteks operaatoreid, funktsioone, loogikat ja muid elemente.ping, erandite käitlejad jne. Sõltuvalt programmi sisendist ei pruugita mõnda koodilauset täita. Lausekatte eesmärk on katta kõik võimalikud teed, read ja laused koodis.

Vaatame näite abil, kuidas arvutada väljavõtte katvust. Siin vaatleme kahte erinevat stsenaariumi, et kontrollida iga stsenaariumi väljavõtte katvuse protsenti.

allikas 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

Stsenaarium 1: Kui A = 3, B = 9

Avalduse katvuse stsenaarium 1

Kollasega märgitud laused on need, mis täidetakse vastavalt stsenaariumile. Täidetud lausete arv = 5, lausete koguarv = 7, seega lause katvus = 5/7 = 71%.

Stsenaarium 2: Kui A = -3, B = -9

Avalduse katvuse stsenaarium 2

Kollasega märgitud laused on need, mis täidetakse vastavalt stsenaariumile. Täidetud lausete arv = 6, lausete koguarv = 7, seega lause katvus = 6/7 = 85%.

Aga üldiselt, kui näete, on kõik väited mõlema stsenaariumiga kaetud. Seega võime järeldada, et väidete üldine katvus on 100%.

Mida hõlmab väljavõtte katvus?

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

Otsuste katvuse testimine

Otsuste katvus on valge kasti testimise tehnika, mis annab lähtekoodis iga tõeväärtuse avaldise kohta teada, kas see on tõene või väär. Otsustuskatvuse testimise eesmärk on katta ja valideerida kogu ligipääsetav lähtekood, kontrollides ja tagades, et iga võimaliku otsustuspunkti iga haru käivitatakse vähemalt üks kord.

Selle katvuse tüübi puhul võivad avaldised muutuda keerukaks, mistõttu on 100% katvuse saavutamine keeruline. Seetõttu kasutatakse selle mõõdiku esitamiseks mitmesuguseid meetodeid. Need meetodid seavad esikohale kõige kriitilisemad kombinatsioonid. Kuigi see sarnaneb harude katvusele, pakub see suuremat tundlikkust juhtimisvoo suhtes.

Otsuste katvuse testimine

Otsustuskatte 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. Otsuse tulemus on „Ei“. Kui (a>5) on märgitud, siis otsuse katvus = 50%.

Stsenaarium 2: a väärtus on 6. Otsuse tulemus on „Jah“. Kui (a>5) on märgitud, siis 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 testimise meetod, mille puhul testitakse iga koodimooduli (lause või tsükli) tulemust. Harude katvuse eesmärk on tagada, et iga haru iga otsustustingimus täidetakse vähemalt üks kord. See aitab mõõta sõltumatute koodisegmentide osakaalu ja leida sektsioonid, millel pole harusid.

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

Filiaali katvuse arvutamise valem:

Filiaali katvuse valem

Näide filiaalide katmisest

Haru katvuse õppimiseks vaatleme sama näidet, mida varem kasutasime. Haru katvus arvestab ka tingimusteta haruga.

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

Filiaali leviala eelised:

  • Võimaldab teil valideerida kõik koodis olevad harud.
  • Aitab tagada, et ükski haru ei põhjusta programmi töös mingeid kõrvalekaldeid.
  • Eemaldab probleemid, mis tekivad väljavõtete katvuse testimise tõttu.
  • Võimaldab leida alasid, mida teised testimismeetodid ei ole testinud.
  • Võimaldab leida koodi katvuse kvantitatiivse mõõtme.
  • Harude katvus ignoreerib tõeväärtusavaldiste sees olevaid harusid.

Seisundi katvuse testimine

Seisundi katvusehk avaldisekatvus on testimismeetod, mida kasutatakse tingimuslauses olevate muutujate või alam-avaldiste testimiseks ja hindamiseks. Tingimuskatvuse eesmärk on kontrollida iga loogilise tingimuse individuaalseid tulemusi. Tingimuskatvus pakub juhtimisvoo suhtes paremat tundlikkust kui otsustuskatvus. Selles katvuses käsitletakse ainult loogiliste operandidega avaldisi.

Näiteks kui avaldisel on tõeväärtusoperatsioonid nagu AND, OR või XOR, näitab see võimaluste koguarvu. Tingimuste katvus ei garanteeri täielikku otsustuskatvust.

Tingimuse katvuse arvutamise valem:

Seisundi katmise valem

Kahe operandiga avaldise puhul on neli võimalikku kombinatsiooni: TT, FF, TF ja FT. Vaatleme sisendit X=3, Y=4 (x b) VÄÄR, mis annab tingimuskatteks 1/4 = 25%.

Piiratud olekuga masina katvus

Lõpliku olekuga masina katmine on kindlasti kõige keerulisem koodi katmise meetod. See on tingitud asjaolust, et see töötab disaini käitumise peal. Selle katmismeetodi puhul tuleb vaadata, mitu korda konkreetseid olekuid külastatakse või läbitakse. Samuti kontrollitakse, mitu järjestust lõplikus masinas on.

Millist tüüpi Code Valitav kindlustuskaitse

See on kindlasti kõige keerulisem vastus. Katvusmeetodi valimiseks peab testija kontrollima, kas:

  • testitavas koodis on üks või mitu avastamata defekti,
  • võimaliku karistuse maksumus,
  • kaotatud maine hind,
  • kaotatud müügi maksumus ja nii edasi.

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

Code Katvus vs. funktsionaalne katvus

Code Katmine Funktsionaalne katvus
Näitab, kui hästi on lähtekoodi testimispingil läbi proovitud. Mõõdab, kui hästi on teie testpink disaini funktsionaalsust katnud.
Ei kasuta kunagi disainispetsifikatsiooni. Kasutab disainispetsifikatsiooni.
Arendajate tehtud. Testijate tehtud.

Code Katvuse tööriistad

Siin on nimekiri olulistest koodi katmise tööriistadest:

Tööriista nimi Kirjeldus
Cobertura Avatud lähtekoodiga koodi katvuse tööriist. See mõõdab testide katvust, instrumenteerides koodibaasi ja analüüsides, milliseid koodiridu testikomplekti käivitamisel käivitatakse ja milliseid mitte.
Ristikhein Ristik (OpenClover) vähendab ka testimisaega, käivitades ainult need testid, mis hõlmavad eelmisest versioonist saadik muudetud rakenduse koodi.
DevPartner DevPartner võimaldab arendajatel analüüsida Java kood koodi kvaliteedi ja keerukuse osas.
Emma EMMA toetab klassi-, meetodi-, rea- ja põhiplokkide katvust, mis on koondatud lähtekoodifaili, klassi ja meetodi tasemel.
Kalistick Kalistick on kolmanda osapoole rakendus, mis analüüsib koodi erinevatest vaatenurkadest.
CoView ja CoAnt Koodi katvuse tööriist mõõdikute, näidisobjektide loomise, koodi testitavuse, tee ja haru katvuse ja muu jaoks.
Bullseye jaoks C++ BullseyeCoverage on koodi katmise tööriist C++ ja C.
Sonar Sonar on avatud koodi katvuse tööriist, mis aitab teil hallata koodi kvaliteeti.

Kasutamise eelised ja miinused Code Katmine

Eelised Puudused
Kasulik koodi katvuse kvantitatiivse mõõtmise hindamiseks. Isegi kui konkreetset funktsiooni disainis ei rakendata, näitab koodi katvus ikkagi 100% katvust.
Võimaldab luua täiendavaid testjuhtumeid katvuse suurendamiseks. Koodi katvuse abil ei ole võimalik kindlaks teha, kas tunnuse kõiki võimalikke väärtusi testiti.
Võimaldab leida programmi valdkondi, mida testjuhtumite komplekt ei ole läbi proovinud. Code Kajastus ei näita, kui palju ja kui hästi oled oma loogikat käsitlenud.

KKK

Paljud meeskonnad seavad praktilise eesmärgina eesmärgiks 70–80%. 100% saavutamine on harva kulutõhus. Keskendu kriitilise ja kõrge riskiga loogika katmisele, selle asemel et kogu koodibaasis ühte numbrit taga ajada.

Ei. Täielik katvus tõestab iga rea ​​​​sooritamist, mitte seda, et iga sisend, väärtus või nõue valideeriti. Loogikavead ja puuduvad funktsioonid võivad siiski avastamata jääda, seega katvus täiendab head testidisaini, mitte ei asenda seda.

Code Katvus mõõdab, kui palju lähtekoodi testimise ajal käivitatakse. Testi ulatus on laiem, trackui hästi testid käsitlevad nõudeid, funktsioone ja riske. Code Katvus on üks sisend üldise testi katvuse osas.

Ei. Võite saavutada 100% lausekatte, jättes harud testimata, näiteks puuduva muu tee. Haru (otsuse) katvus on tugevam, kuna see hõlmab lausekatte ja rakendab iga tulemust.

Tehisintellekt analüüsib lähtekoodi ja olemasolevaid teste, et tuvastada testimata ja kõrge riskiga teid, seejärel pakub välja või genereerib uusi juhtumeid. Masinõpe seab ka prioriteediks, milliseid teste käivitada, lühendades tagasisidet ja hoides samal ajalping katvus kõrge.

Jah. Tehisintellekti tööriistad, näiteks Diffblue Cover, skannivad koodi ja kirjutavad autonoomselt ühikteste katmata loogika jaoks. Need on suunatud riskantsete harude ja tingimuste uurimisele, suurendades katvust palju väiksema käsitsi tehtava pingutusega.

OpenClover mõõdab lause, haru ja meetodi ulatust ning kogub üle 20 mõõdiku. Cobertura, EMMA ja JaCoCo on ka teisi laialdaselt kasutatavaid tasuta valikuid Java projekte.

Muudetud tingimuse/otsuse katvus nõuab, et iga otsuses sisalduv tingimus mõjutaks tulemust sõltumatult. See on rangem kui haru katvus ja on DO-178C standardi kohaselt kohustuslik ohutuskriitilise tarkvara, näiteks avioonika, jaoks.

Võta see postitus kokku järgmiselt: