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.

Pokrivenost izjave

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 = 9

Pokrivenost izjave

Izjave 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%

Pokrivenost izjave

Isto tako ćemo vidjeti scenarij 2,

Scenarij 2:

Ako je A = -3, B = -9

Pokrivenost izjave

Izjave označene žutom bojom su one koje se izvršavaju prema scenariju.

Broj izvršenih naredbi = 6

Ukupan broj izjava = 7

Pokrivenost izjave

Pokrivenost izjave: 6/7 = 85%

Pokrivenost izjave

Ali općenito, ako vidite, sve su izjave obuhvaćene oba scenarija. Stoga možemo zaključiti da je ukupna pokrivenost izjava 100%.

Pokrivenost izjave

Što pokriva Statement Coverage?

  1. Neiskorištene izjave
  2. Mrtav kod
  3. Neiskorištene grane
  4. 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.

Testiranje pokrivenosti odluka

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

Testiranje pokrivenosti odluka

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

Testiranje pokrivenosti odluka

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:

Testiranje pokrivenosti podružnica

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)
    }                                       

Testiranje pokrivenosti podružnica

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:

Ispitivanje pokrivenosti stanja

Primjer:

Ispitivanje pokrivenosti stanja

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