Što je pokrivenost Code?
Pokrivenost kodom mjera je koja opisuje stupanj testiranja izvornog koda programa. To je jedan oblik testiranja bijele kutije koji pronalazi područja programa koja se ne primjenjuju u nizu testnih slučajeva. Također stvara neke test slučajeve za povećanje pokrivenosti i određivanje kvantitativne mjere pokrivenosti kodom.
U većini slučajeva sustav pokrivanja koda prikuplja informacije o pokrenutom programu. Također se kombinira s informacijama o izvornom kodu kako bi se generiralo izvješće o pokrivenosti koda test paketa.
U ovom vodiču naučit ćete-
- Što je pokrivenost Code?
- Zašto koristiti Code Coverage?
- Metode pokrivanja koda
- Obuhvat izvještaja
- Pokrivenost odlukom
- Pokrivenost podružnice
- Stanje Pokrivenost
- Pokrivenost konačnog državnog stroja
- Koju vrstu pokrivenosti koda odabrati
- Pokrivenost koda nasuprot funkcionalnoj pokrivenosti
- Alati za pokrivanje koda
- Prednosti i nedostaci korištenja pokrivenosti kodom
Zašto koristiti Code Coverage?
Evo nekoliko glavnih razloga za upotrebu pokrivanja koda:
- Pomaže vam u mjerenju učinkovitosti provedbe testa
- Nudi kvantitativno mjerenje.
- Definira stupanj testiranja izvornog koda.
Metode pokrivanja koda
Slijede glavne metode pokrivanja koda
- Obuhvat izvještaja
- Pokrivenost odlukom
- Pokrivenost podružnice
- Uključi / isključi pokrivenost
- Pokrivenost FSM-a
Obuhvat izvještaja
Statement Coverage je tehnika testiranja bijelog okvira u kojoj se svi izvršni izrazi u izvornom kodu izvršavaju barem jednom. Koristi se za izračun broja izvršenih naredbi u izvornom kodu. Glavna svrha pokrivanja izjave je pokriti sve moguće putove, linije i izjave u izvornom kodu.
Pokrivenost izjavama koristi se za izvođenje scenarija na temelju strukture koda koji se testira.
U testiranju bijele kutije, ispitivač se koncentrira na to kako softver radi. Drugim riječima, ispitivač će se koncentrirati na interni rad izvornog koda u vezi s kontrolnim grafovima protoka ili dijagramima toka.
Općenito u bilo kojem softveru, ako pogledamo izvorni kod, naći će se širok spektar elemenata poput operatora, funkcija, petlje, izuzetnih rukovatelja itd. Na temelju unosa u program, neke izjave koda možda se neće izvršiti . Cilj pokrivanja Izjave je pokriti sve moguće staze, crtu i iskaz u kodu.
Shvatimo to na primjeru, kako izračunati pokrivenost izvoda.
Scenarij za izračunavanje pokrivenosti izjave za zadani izvorni kod. Ovdje uzimamo dva različita scenarija za provjeru postotka pokrivenosti izvoda za svaki scenarij.
Izvorni kod:
Ispisi (int a, int b) {------------ Printsum je funkcijarezultat int = a + b;Ako (rezultat> 0)Ispis ("Pozitivno", rezultat)DrugoIspis ("Negativno", rezultat)} ----------- Kraj izvornog koda
Scenarij 1:
Ako je A = 3, B = 9
Izjave označene žutom bojom su one koje se izvršavaju prema scenariju
Broj izvršenih izvoda = 5, Ukupan broj izvoda = 7
Pokrivenost izjave: 5/7 = 71%
Slično ćemo vidjeti i scenarij 2,
Scenarij 2:
Ako je A = -3, B = -9
Izjave označene žutom bojom su one koje se izvršavaju prema scenariju.
Broj izvršenih izjava = 6
Ukupan broj izjava = 7
Pokrivenost izjave: 6/7 = 85%
Ali sveukupno ako vidite, sve su izjave pokrivene razmatranim 2. scenarijem. Tako možemo zaključiti da je ukupna pokrivenost izjave 100%.
Što je obuhvaćeno Izvještajem?
- Neiskorištene izjave
- Mrtvi zakonik
- Neiskorištene grane
- Izjave koje nedostaju
Pokrivenost odlukom
Pokrivenost odlukom tehnika je bijelog okvira koja izvještava o istinitim ili lažnim ishodima svakog logičkog izraza izvornog koda. Cilj testiranja pokrivenosti odluka je pokriti i potvrditi sav pristupačni izvorni kod provjerom i osiguravanjem da se svaka grana svake moguće točke odlučivanja izvrši barem jednom.
U ovom pokrivanju izrazi se ponekad mogu zakomplicirati. Stoga je vrlo teško postići 100% pokrivenost. Zato postoji mnogo različitih metoda izvještavanja o ovoj metrici. Sve se ove metode usredotočuju na pokrivanje najvažnijih kombinacija. Vrlo je sličan pokrivanju odluka, ali nudi bolju osjetljivost za kontrolu protoka.
Primjer pokrića odluke
Razmotrite sljedeći kod -
Demo (int a) {Ako je (a> 5)a = a * 3Ispis (a)}
Scenarij 1:
Vrijednost a je 2
Izvršit će se kod označen žutom bojom. Ovdje se provjerava "Ne" ishod odluke Ako je (a> 5).
Pokrivenost odlukom = 50%
Scenarij 2:
Vrijednost a je 6
Izvršit će se kod označen žutom bojom. Ovdje se provjerava ishod odluke "Da" Ako je (a> 5).
Pokrivenost odlukom = 50%
Test slučaj | Vrijednost A | Izlaz | Pokrivenost odlukom |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Pokrivenost podružnice
Pokrivenost grane metoda je bijele kutije u kojoj se testira svaki ishod modula koda (izjava ili petlja). Svrha pokrivanja podružnice je osigurati da se svaki uvjet odluke iz svake podružnice izvrši barem jednom. Pomaže u mjerenju ulomaka neovisnih segmenata koda i otkrivanju odjeljaka koji nemaju grane.
Na primjer, ako su ishodi binarni, morate testirati i istinite i netačne ishode.
Formula za izračunavanje pokrivenosti podružnice:
Primjer pokrivenosti podružnice
Da bismo naučili pokrivenost podružnica, razmotrimo isti primjer korišten ranije
Razmotrite sljedeći kod
Demo (int a) {Ako je (a> 5)a = a * 3Ispis (a)}
Pokrivenost podružnica razmotrit će i bezuvjetnu podružnicu
Test slučaj | Vrijednost A | Izlaz | Pokrivenost odlukom | Pokrivenost podružnice |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Prednosti pokrivanja podružnice:
Ispitivanje pokrivenosti podružnice nudi sljedeće prednosti:
- Omogućuje vam provjeru valjanosti svih grana u kodu
- Pomaže vam da osigurate da razgranati vodič ne dovede do bilo kakvih abnormalnosti u radu programa
- Metoda pokrivanja poslovnica uklanja probleme koji se događaju zbog testiranja pokrivenosti izvoda
- Omogućuje vam pronalaženje područja koja nisu testirana drugim metodama ispitivanja
- Omogućuje vam pronalaženje kvantitativne mjere pokrivenosti koda
- Pokrivenost grana zanemaruje grane unutar logičkih izraza
Stanje Pokrivenost
Uvjet Pokrivenost ili pokrivenost izraza je metoda ispitivanja koja se koristi za testiranje i procjenu varijabli ili pod-izraza u uvjetnom iskazu. Cilj pokrivanja uvjeta je provjeriti pojedinačne ishode za svaki logički uvjet. Pokrivenost uvjetima nudi bolju osjetljivost na protok kontrole od pokrivenosti odlukom. U ovom se pokriću samo razmatraju izrazi s logičkim operandima.
Na primjer, ako izraz ima logičke operacije poput AND, OR, XOR, što ukazuje na ukupne mogućnosti.
Obuhvat uvjeta ne daje jamstvo o potpunom pokrivanju odluka.
Formula za izračunavanje pokrivenosti stanja:
Primjer:
Za gornji izraz imamo 4 moguće kombinacije
- TT
- FF
- TF
- FT
Razmotrite sljedeći ulaz
X = 3 Y = 4 |
(x |
PRAVI |
Stanje pokrivenosti je ¼ = 25% |
A = 3 B = 4 |
(a> b) |
NETOČNO |
Pokrivenost konačnog državnog stroja
Pokrivenost konačnog automata zasigurno je najsloženija vrsta metode pokrivanja koda. To je zato što djeluje na ponašanje dizajna. U ovoj metodi pokrivanja trebate potražiti koliko se vremenski specifičnih stanja posjeti, prođe. Također provjerava koliko je sekvenci uključeno u konačni stroj.
Koju vrstu pokrivenosti koda odabrati
Ovo je zasigurno najteži odgovor. Da bi odabrao način pokrivanja, ispitivač mora provjeriti da li
- kod koji se testira ima pojedinačne ili više neotkrivenih nedostataka
- trošak potencijalne kazne
- trošak izgubljene reputacije
- trošak izgubljene prodaje itd.
Što je veća vjerojatnost da će nedostaci prouzročiti skupe proizvodne kvarove, to je ozbiljnija razina pokrivenosti koju trebate odabrati.
Pokrivenost koda nasuprot funkcionalnoj pokrivenosti
Pokrivenost kodom | Funkcionalna pokrivenost |
Pokrivenost koda govori vam koliko je dobro testirao vaš izvorni kod. | Funkcionalno pokrivanje mjeri koliko je funkcionalnost dizajna pokrivena vašim ispitnim uređajem. |
Nikada nemojte koristiti specifikaciju dizajna | Koristite specifikaciju dizajna |
Izradili programeri | Učinili testeri |
Alati za pokrivanje koda
Evo popisa važnih alata za pokrivanje koda:
Naziv alata | Opis |
Cobertura | To je alat za pokrivanje otvorenog koda. Mjeri pokrivenost testom instrumentiranjem baze koda i analizira koji se redovi koda izvršavaju, a koji ne izvršavaju kada se testni paket pokrene. |
Djetelina | Clover također smanjuje vrijeme testiranja izvodeći samo testove koji pokrivaju kod aplikacije koji je izmijenjen od prethodne gradnje. |
DevPartner | DevPartner omogućuje programerima da analiziraju Java kôd zbog kvalitete i složenosti koda. |
Emma | EMMA podržava pokrivenost klase, metode, linije i osnovnog bloka, agregirane izvorne datoteke, klase i razine metode. |
Kalistick | Kalistick je aplikacija treće strane koja analizira kodove s različitih gledišta. |
CoView i CoAnt | Program za kodiranje alat je za pokrivanje koda za metrike, lažno stvaranje objekata, provjerljivost koda, pokrivenost puta i grana itd. |
Bullseye za C ++ | BulseyeCoverage je alat za pokrivanje koda za C ++ i C. |
Sonar | Sonar je alat za pokrivanje otvorenog koda koji vam pomaže u upravljanju kvalitetom koda. |
Prednosti korištenja pokrivenosti kodom
- Korisno za procjenu kvantitativne mjere pokrivenosti koda
- Omogućuje vam stvaranje dodatnih test slučajeva za povećanje pokrivenosti
- Omogućuje vam pronalaženje područja programa koja se ne provode u nizu testnih slučajeva
Nedostaci korištenja pokrivenosti kodom
- Čak i kada bilo koja specifična značajka nije implementirana u dizajn, pokrivenost kodom i dalje izvještava o 100% pokrivenosti.
- Nije moguće utvrditi jesmo li uz pomoć pokrivanja koda testirali sve moguće vrijednosti značajke
- Pokrivenost koda također ne govori koliko ste i koliko dobro pokrili svoju logiku
- U slučaju da se navedena funkcija nije implementirala ili nije uključena u specifikaciju, tada tehnike temeljene na strukturi ne mogu pronaći taj problem.
Sažetak
- Pokrivenost kodom mjera je koja opisuje stupanj testiranja izvornog koda programa
- Pomaže vam u mjerenju učinkovitosti provedbe testa
- Pet metoda pokrivanja kodom su 1.) Pokrivenost izjavom 2.) Pokrivenost stanja 3) Pokrivenost podružnice 4) Prekrivanje pokrivenosti 5) Pokrivenost FSM-a
- Pokrivanje izjave uključuje izvršavanje svih izvršnih naredbi u izvornom kodu barem jednom
- Pokrivanje odluka izvještava o istinitim ili lažnim ishodima svakog logičkog izraza
- U pokrivanju podružnice testira se svaki ishod modula koda
- Uvjetno će otkriti kako se procjenjuju varijable ili podizrazi u uvjetnom izrazu
- Pokrivenost konačnog automata zasigurno je najsloženija vrsta metode pokrivanja koda
- Da bi odabrao način pokrića, ispitivač mora provjeriti troškove potencijalne kazne, izgubljene reputacije, izgubljene prodaje itd.
- Pokrivenost koda govori vam koliko je dobro testirao vaš testni stol dok je funkcionalni pokrivač mjerio koliko je dobro pokrivena funkcionalnost dizajna
- Cobertura, JTest, Clover, Emma, Kalistick nekoliko su važnih alata za pokrivanje koda
- Code Coverage vam omogućuje stvaranje dodatnih test slučajeva za povećanje pokrivenosti
- Pokrivenost koda vam ne pomaže utvrditi jesmo li testirali sve moguće vrijednosti značajke