Vodič za pokrivanje koda: testiranje grana, izjava i odluka
Što je pokrivenost kodom?
Pokrivenost koda je mjera koja opisuje stupanj testiranja izvornog koda programa. To je jedan oblik testiranja bijele kutije koji pronalazi područja programa koja se ne koriste skupom testnih slučajeva. Također stvara neke testne slučajeve za povećanje pokrivenosti i određivanje kvantitativne mjere pokrivenosti koda.
U većini slučajeva sustav pokrivanja koda prikuplja informacije o pokrenutom programu. Također kombinira to s informacijama o izvornom kodu za generiranje izvješća o pokrivenosti koda paketa testova.
Zašto koristiti testiranje pokrivenosti koda?
Evo nekoliko glavnih razloga za korištenje pokrivenosti kodom:
- Pomaže vam u mjerenju učinkovitosti provedbe testa
- Nudi kvantitativno mjerenje.
- Definira stupanj do kojeg je izvorni kod testiran.
Metode pokrivanja koda
Slijede glavne metode pokrivanja koda
- Pokrivenost izjave
- Pokrivenost odluka
- Pokrivenost podružnica
- Toggle Pokrivenost
- FSM pokrivenost
Pokrivenost izjave
Pokrivenost izjave je tehnika testiranja bijele kutije u kojoj se sve izvršne izjave u izvornom kodu izvode barem jednom. Koristi se za izračun broja iskaza u izvornom kodu koji su izvršeni. Glavna svrha Statement Coverage je pokriti sve moguće staze, retke i izjave u izvornom kodu.
Pokrivenost izjave koristi se za izvođenje scenarija na temelju strukture koda koji se testira.
In bijela Box Ispitivanje, tester se koncentrira na to kako softver radi. Drugim riječima, ispitivač će se usredotočiti na interni rad izvornog koda u vezi s kontrolnim grafikonima toka ili dijagramima toka.
Općenito, u bilo kojem softveru, ako pogledamo izvorni kod, postojat će širok izbor elemenata kao što su operatori, funkcije, petlje, iznimni rukovatelji itd. Na temelju unosa u program, neke od izjava koda možda se neće izvršiti . Cilj pokrivenosti naredbe je pokriti sve moguće staze, retke i naredbe u kodu.
Shvatimo ovo na primjeru, kako izračunati pokrivenost izjave.
Scenarij za izračun pokrivenosti izjava za dati izvorni kod. Ovdje uzimamo dva različita scenarija kako bismo provjerili postotak pokrivenosti izjave za svaki scenarij.
Izvorni kod:
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
Scenarij 1:
Ako je A = 3, B = 9Izjave označene žutom bojom su one koje se izvršavaju prema scenariju
Broj izvršenih naredbi = 5, Ukupan broj naredbi = 7
Pokrivenost izjave: 5/7 = 71%
Isto tako ćemo vidjeti 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 naredbi = 6
Ukupan broj izjava = 7
Pokrivenost izjave: 6/7 = 85%
Ali općenito, ako vidite, sve su izjave obuhvaćene oba scenarija. Stoga možemo zaključiti da je ukupna pokrivenost izjava 100%.
Što pokriva Statement Coverage?
- Neiskorištene izjave
- Mrtav kod
- Neiskorištene grane
- Izjave koje nedostaju
Testiranje pokrivenosti odluka
Pokrivenost odluka je tehnika testiranja bijele kutije koja izvještava o istinitim ili lažnim rezultatima svakog Booleovog izraza izvornog koda. Cilj testiranja pokrivenosti odluke je pokriti i potvrditi sav dostupni izvorni kod provjerom i osiguravanjem da se svaka grana svake moguće točke odluke izvrši barem jednom.
U ovoj vrsti pokrivenosti, izrazi mogu postati složeni, čineći izazovnim postići 100% pokrivenost. Zbog toga se koriste različite metode za izvješćivanje ove metrike. Ove metode daju prioritet najkritičnijim kombinacijama. Iako je sličan pokrivanju odluka, pruža veću osjetljivost na kontrolu tijeka.
Primjer pokrića odluke
Razmotrite sljedeći kod-
Demo(int a) { If (a> 5) a=a*3 Print (a) }
Scenarij 1:
Vrijednost a je 2
Kôd označen žutom bojom bit će izvršen. Ovdje je označen "Ne" ishod odluke Ako (a>5).
Pokrivenost odluke = 50%
Scenarij 2:
Vrijednost a je 6
Kôd označen žutom bojom bit će izvršen. Ovdje je označen "Da" ishod odluke Ako (a>5).
Pokrivenost odluke = 50%
Testni slučaj | Vrijednost A | Izlaz | Pokrivenost odluka |
---|---|---|---|
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Testiranje pokrivenosti podružnica
Pokrivenost podružnica je metoda testiranja bijele kutije u kojoj se testira svaki ishod iz modula koda (naredba ili petlja). Svrha pokrivenosti grana je osigurati da se svaki uvjet odluke iz svake grane izvrši barem jednom. Pomaže u mjerenju frakcija neovisnih segmenata koda i pronalaženju odjeljaka koji nemaju grane.
Na primjer, ako su ishodi binarni, morate testirati i True i False ishode.
Formula za izračun pokrivenosti podružnice:
Primjer pokrivenosti podružnica
Da naučimo pokrivenost grana, razmotrimo isti primjer korišten ranije
Razmotrite sljedeći kod-
Demo(int a) { If (a> 5) a=a*3 Print (a) }
Pokrivenost podružnice također će uzeti u obzir bezuvjetnu podružnicu
Testni slučaj | Vrijednost A | Izlaz | Pokrivenost odluka | Pokrivenost podružnica |
---|---|---|---|---|
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Prednosti pokrivenosti podružnice:
Pokrivenost podružnica Testiranje nudi sljedeće prednosti:
- Omogućuje provjeru svih grana u kodu
- Pomaže vam da osigurate da nijedno grananje ne dovodi do abnormalnosti u radu programa
- Metoda pokrivenosti grana uklanja probleme koji se javljaju zbog testiranja pokrivenosti izjava
- Omogućuje vam da pronađete ona područja koja nisu testirana drugim metodama testiranja
- Omogućuje vam da pronađete kvantitativnu mjeru pokrivenosti koda
- Pokrivenost granama zanemaruje grane unutar Booleovih izraza
Ispitivanje pokrivenosti stanja
Pokrivenost stanja ili pokrivenost izraza je metoda testiranja koja se koristi za testiranje i procjenu varijabli ili podizražaja u uvjetnoj izjavi. Cilj pokrivenosti uvjeta je provjeriti pojedinačne ishode za svaki logički uvjet. Pokrivenost uvjeta nudi bolju osjetljivost na tok kontrole nego pokrivenost odluka. U ovoj se pokrivenosti razmatraju samo izrazi s logičkim operandima.
Na primjer, ako izraz ima Booleove operacije kao što su AND, OR, XOR, što ukazuje na ukupne mogućnosti.
Pokriće uvjeta ne daje jamstvo o potpunom pokriću odluke.
Formula za izračun pokrića stanja:
Primjer:
Za gornji izraz imamo 4 moguće kombinacije
- TT
- FF
- TF
- FT
Razmotrite sljedeći unos
X = 3
Y = 4 |
(x | TRUE | Pokrivenost uvjeta je ¼ = 25% |
A = 3
B = 4 |
(a>b) | FALSE |
Pokrivenost konačnog stroja stanja
Pokrivanje konačnog stroja sigurno je najsloženiji tip metode pokrivanja koda. To je zato što djeluje na ponašanje dizajna. U ovoj metodi pokrivenosti, morate tražiti koliko je vremenski specifičnih država posjećeno, prijeđeno. Također provjerava koliko je nizova uključeno u konačni stroj.
Koju vrstu pokrića koda odabrati
Ovo je svakako najteži odgovor. Kako bi odabrao način pokrivanja, ispitivač treba provjeriti je li
- kod koji se testira ima jedan ili više neotkrivenih nedostataka
- trošak potencijalne kazne
- cijena izgubljenog ugleda
- trošak izgubljene prodaje itd.
Što je veća vjerojatnost da će nedostaci uzrokovati skupe kvarove u proizvodnji, to je veća razina pokrivenosti koju trebate odabrati.
Pokrivenost koda u odnosu na funkcionalnu pokrivenost
Pokrivenost koda | Funkcionalna pokrivenost |
---|---|
Pokrivenost koda govori vam koliko je dobro vaš testni uređaj koristio izvorni kod. | Funkcionalna pokrivenost mjeri koliko je dobro funkcionalnost dizajna pokrivena vašim ispitnim stolom. |
Nikada nemojte koristiti specifikaciju dizajna | Koristite specifikaciju dizajna |
Izradili programeri | Izradili testeri |
Alati za pokrivanje koda
Ovdje je popis važnih alata za pokrivanje koda:
Naziv alata | Description |
---|---|
Cobertura | To je alat za pokrivanje otvorenog koda. Mjeri pokrivenost testa instrumentiranjem baze koda i analizom koji se redovi koda izvršavaju, a koji se ne izvršavaju kada se testni paket izvodi. |
Djetelina | Clover također smanjuje vrijeme testiranja pokretanjem samo testova koji pokrivaju kod aplikacije koji je izmijenjen od prethodne verzije. |
DevPartner | DevPartner omogućuje programerima analizu Java kod za kvalitetu i složenost koda. |
Emma | EMMA podržava razinu pokrivenosti klase, metode, linije i osnovnog bloka, agregirane izvorne datoteke, klase i metode. |
Kalistick | Kalistick je aplikacija treće strane koja analizira kodove iz različitih perspektiva. |
CoView i CoAnt | Softver za kodiranje je alat za pokrivanje koda za metriku, stvaranje lažnog objekta, mogućnost testiranja koda, pokrivenost staze i grana itd. |
Bullseye za C++ | BulseyeCoverage je alat za pokrivanje koda za C++ i C. |
Sonar | Sonar je otvoreni alat za pokrivanje koda koji vam pomaže upravljati kvalitetom koda. |
Prednosti i nedostaci korištenja pokrivenosti kodom
Prednosti pokrivenosti kodom | Nedostaci pokrivenosti kodom |
---|---|
Korisno za procjenu kvantitativne mjere pokrivenosti koda | Čak i kada bilo koja posebna značajka nije implementirana u dizajnu, pokrivenost koda i dalje izvješćuje o 100% pokrivenosti. |
Omogućuje vam stvaranje dodatnih testnih slučajeva za povećanje pokrivenosti | Nije moguće utvrditi jesmo li uz pomoć pokrivenosti koda testirali sve moguće vrijednosti značajke |
Omogućuje vam da pronađete područja programa koja se ne izvode skupom testnih slučajeva | Pokrivenost koda također ne govori koliko ste i koliko dobro pokrili svoju logiku |
U slučaju kada navedena funkcija nije implementirana ili nije uključena u specifikaciju, tehnike temeljene na strukturi ne mogu pronaći taj problem. |
rezime
- Pokrivenost koda je mjera koja opisuje stupanj testiranja izvornog koda programa
- Pomaže vam u mjerenju učinkovitosti provedbe testa
- Pet metoda pokrivenosti koda su 1.) Pokrivenost izjava 2.) Pokrivenost uvjeta 3) Pokrivenost grane 4) Toggle Pokrivenost 5) FSM pokrivenost
- Pokrivenost naredbe uključuje izvršenje svih izvršnih naredbi u izvornom kodu barem jednom
- Pokrivenost odluka izvještava o istinitim ili lažnim ishodima svakog Booleovog izraza
- U pokrivenosti grane testira se svaki ishod modula koda
- Uvjetni izraz će otkriti kako se procjenjuju varijable ili podizrazi u uvjetnom iskazu
- Pokrivanje konačnog stroja sigurno je najsloženiji tip metode pokrivanja koda
- Kako bi odabrao metodu pokrića, ispitivač treba provjeriti trošak potencijalne kazne, izgubljenog ugleda, izgubljene prodaje itd.
- Pokrivenost koda govori vam koliko je dobro vaša ispitna ploča koristila izvorni kod, dok funkcionalna pokrivenost mjeri koliko je dobro pokrivena funkcionalnost dizajna
- Cobertura, JTest, Clover, Emma, Kalistick nekoliko je važnih alata za pokrivanje koda
- Pokrivenost koda omogućuje vam stvaranje dodatnih testnih slučajeva za povećanje pokrivenosti
- Pokrivenost koda ne pomaže vam utvrditi jesmo li testirali sve moguće vrijednosti značajke