Kaj je testiranje mutacij?
Kot beseda "mutirati" na splošno pomeni "sprememba", tako pomeni tudi testiranje mutacij. Testiranje mutacij je vrsta testiranja programske opreme, ki se izvaja s spreminjanjem ali mutiranjem dela kode, da se preveri / preveri, ali so testni primeri dovolj sposobni, da najdejo napake / pomanjkljivosti. Testiranje mutacij sodi med testiranje belega polja in se v osnovi izvaja med enotnimi testi določenega modula aplikacije. Spremembe, opravljene v izvedeni izvorni / glavni kodi, so izvedene v majhni količini, da ne bi vplivale na njen splošni cilj. To je znano tudi kot tehnika zaznavanja napak, saj se izvaja z namenom odkrivanja šibkosti testnih primerov z ustvarjanjem napake v izvirni kodi.
Preden opravite kakršno koli testiranje, je zelo pomembno razumeti cilj, ki stoji za njim. Glavni cilj testiranja mutacij je ugotoviti učinkovitost razvitih primerov, ki bi morali biti dovolj sposobni zaznati tudi majhne spremembe kode. Težave najdemo v preskusni zbirki in preskusnih podatkih, ki se uporabljajo med izvajanjem testiranja katere koli programske opreme. Ustvari se več mutantov ali različic izvirne kode in vsak od njih se preskusi glede na originalne testne primere. Če rezultati preskusnih primerov ostanejo enaki, kot smo jih imeli v izvirni kodi, potem se koda in preskusni primeri ponovno preverijo, ker bodisi koda ni bila izvedena ali pa testni nabor ni dovolj sposoben, da bi našel mutirano kodo.
Vrste testiranja mutacij
V bistvu obstajajo tri vrste testiranja mutacij, ki se izvajajo za ustvarjanje mutantov izvirne kode:
1. Vrednostna mutacija
Kot že ime pove, v vrednosti mutacija vrednosti konstante, parametrov, ki so bili preneseni v metodah, vrednosti, uporabljene v zankah, se spremenijo za ustvarjanje programa mutant. Bodisi se velika vrednost spremeni v manjšo ali obratno. V bistvu se vrednosti, ki so že opredeljene v programu, spremenijo tako, da izvedejo mutacijo vrednosti.
Originalna koda:
int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);
Mutant koda:
int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);
2. mutacija odločitve
V mutaciji odločitev se spremenijo logični in aritmetični operatorji, ki se uporabljajo v programu, kar spremeni splošno odločanje v programu in njegove rezultate. Na primer, določen stavek "če" se izvaja samo, kadar (a> b). V mutantni kodi je ta operater spremenjen v (a <b), kar spremeni celotno odločanje v kodi.
Originalna koda:
if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)
Mutant koda:
if (a (
print(“yes”);
)
else
(
print (“No”);
)
3. Izjava mutacija
V Izjavi mutacija se spremenijo celotne izjave kode, da se ustvari program mutant. Spremembe v stavku lahko izbrišejo celoten stavek, spremenijo vrstni red stavka v kodi, kopirajo in prilepijo izjave na drugo mesto v kodi, ponavljajo ali podvojijo nekaj stavkov v izvirni kodi.
Originalna koda:
if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)
Mutant koda:
if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)
Prednosti in slabosti testiranja mutacij
Prednosti in slabosti testiranja mutacij so podane spodaj:
Prednosti
Nekatere prednosti testiranja mutacije so podane spodaj:
- Ena največjih prednosti testiranja mutacije je, da pomaga najti skrite napake in največjo pokritost kode, da bi prepoznali del kode, ki ga originalni testni primeri niso temeljito preizkusili.
- Testiranje mutacij pomaga najti kakovost preskusnih primerov, ki se uporabljajo za testiranje programske opreme, in preizkuševalcem zagotavlja pristne povratne informacije o postopku testiranja in kakovosti testa.
- Pomaga najti kakovostne hrošče, ki jih z običajnim testiranjem ni enostavno najti.
- Testiranje mutacij včasih odkrije skrite napake, kot so dvoumnost kode, napačne vrednosti spremenljivk itd. V kodi v zgodnjih fazah testiranja programske opreme, kar je zelo koristno.
- Včasih sta koda in preskusni primer pravilni, vendar je težava nastala zaradi podatkov preskusa. Testiranje mutacij pomaga ugotoviti težave v testnih podatkih.
Slabosti
Spodaj so nekatere pomanjkljivosti testiranja mutacij:
- Pri testiranju mutacij različni mutanti kode ustvarijo in testirajo originalni testni nabor, zato traja veliko časa, medtem ko izvaja samo testiranje enote posamezne funkcije / modula aplikacije.
- Kot smo že omenili, so vsi mutanti testirani v primerjavi s prvotno zbirko, zato bi bilo treba izvesti veliko število testnih primerov, zato tega ni mogoče izvesti brez orodja za avtomatizacijo, ki je drago in lahko ovira proračun projekta.
- Kompleksni mutanti, ustvarjeni iz izvirne kode, lahko privedejo do zmede in napak v izvirni kodi.
Zaključek
Zgornja razlaga jasno določa, kaj je testiranje mutacije in njen pomen na področju testiranja aplikacije. Če želimo skozi in izčrpno testiranje aplikacije s testnimi scenariji največjega pokritja kode, igra mutacijsko preskušanje odločilno vlogo.
Priporočeni članki
To je vodnik za testiranje mutacij. Tukaj razpravljamo, kaj je mutacijsko testiranje? ter vrste testiranja mutacij, skupaj s prednostmi in slabostmi. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke
- Kaj je React?
- Negativno testiranje
- Testiranje mobilne aplikacije
- Napredni šifrirni standard
- Pokrivanje kode proti preskusni pokritosti | Top 4 razlike, ki se jih morate naučiti
- Orodja za zajetje kode | Top 6 Orodja za pokritje kode