what is mutation testing
Tento tutoriál vysvetľuje príklady toho, čo je Testovanie mutácií, ako ich vykonávať, a Typy testovania mutácií:
Čo je to testovanie mutácií?
Testovanie mutácií je testovacia technika založená na poruchách, pri ktorej sú variácie softvérového programu podrobené testovacej množine údajov. Toto sa robí na stanovenie účinnosti testovacej súpravy pri izolovaní odchýlok.
Znie to trochu komplikovane, však?
Čo sa dozviete:
Testovanie mutácií
Mutation Testing (MT) má za sebou dlhú cestu, späť do 70. rokov, kedy bola prvýkrát navrhnutá ako školský projekt. Bol odpísaný, pretože bol veľmi náročný na zdroje. Keď však ľudia pokračovali vo vývoji pokročilejších počítačov, pomaly sa to vrátilo a dnes je to jedna z najpopulárnejších testovacích techník.
Definícia mutačného testovania
MT je tiež známy ako testovanie na chybe, mutácia programu, testovanie na chybe, alebo mutačná analýza .
Ako naznačuje názov, testovanie mutácií je typ testovania softvéru, ktorý je založený na zmenách alebo mutáciách. Do zdrojového kódu sa zavádzajú nepatrné zmeny, ktoré kontrolujú, či definované testovacie prípady dokážu zistiť chyby v kóde.
Ideálny prípad je, že žiaden z testovacích prípadov by nemal obstáť. Ak test vyhovuje, znamená to, že v kóde je chyba. Hovoríme, že mutant (upravená verzia nášho kódu) žil. Ak test zlyhá, v kóde nie je chyba a mutant bol zabitý. Naším cieľom je zabiť všetkých mutantov.
Mutačné testovanie tiež pomáha testovať kvalitu definovaných testovacích prípadov alebo testovacích balíkov so snahou napísať efektívnejšie testovacie prípady. Čím viac mutantov môžeme zabiť, tým vyššia je kvalita našich testov.
Koncepty testovania mutácií
Predtým, ako budeme ďalej diskutovať o testovaní mutácií, poďme preskúmať niektoré koncepty, na ktoré narazíme.
# 1) Mutanti: Je to jednoducho zmutovaná verzia zdrojového kódu. Je to kód, ktorý obsahuje drobné zmeny. Keď sú testovacie dáta spustené cez mutanta, mali by nám ideálne poskytnúť odlišné výsledky od pôvodného zdrojového kódu. Mutanti sa tiež nazývajú mutantné programy .
Existujú rôzne typy mutantov. Sú to tieto:
- Prežili mutanti: Ako sme už spomenuli, ide o mutanty, ktoré sú stále živé po vykonaní testovacích údajov prostredníctvom pôvodných a zmutovaných variantov zdrojového kódu. Títo musia byť zabití. Sú tiež známe ako živé mutanty.
- Zabití mutanti: Toto sú mutanti, ktorí sú zabití po testovaní mutácií. Získame ich, keď dostaneme odlišné výsledky od pôvodnej a zmutovanej verzie zdrojového kódu.
- Ekvivalentné mutanty: Sú úzko spojené so živými mutantmi, pretože sú „nažive“ aj po spustení testovacích údajov. Od ostatných sa líši tým, že majú rovnaký význam ako pôvodný zdrojový kód, aj keď môžu mať odlišnú syntax.
# 2) Mutanti / operátori mutácií: To je to, čo umožňuje mutácie, sú na „sedadle vodiča“. V zásade definujú druh zmeny alebo zmeny zdrojového kódu, ktorý má mať mutantnú verziu. Môžu sa označovať ako chyby alebo pravidlá mutácie .
# 3) Skóre mutácie: Toto je skóre založené na počte mutantov.
Vypočítava sa pomocou nasledujúceho vzorca:
Poznač si to, ekvivalentné mutanty sa pri výpočte skóre mutácie neprihliadajú. Mutačné skóre je tiež známe ako primeranosť mutácie . Naším cieľom by malo byť dosiahnuť vysoké skóre mutácie.
Ako urobiť testovanie mutácií
Krok 1: Poďme napísať náš test jednotky Jasmine.
Testovacia sada (Jasmine)
describe('User', function() { it('should compare the two numbers from user input', function(){ expect(20).toBeGreaterThan(5); }) });
Krok 2: Napíšte pôvodný kód.
Pôvodný kód (Javascript)
const user_info = () => { mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age > daughter_age) { alert(`Daughter's age is ${daughter_age}. Mother's age is ${mother_age}. Welcome to the Mother-Daughter program`) } else { alert(`Daughter's age: ${daughter_age}, is more than mother's age: ${mother_age}. Please enter correct ages`) } } user_info();
Krok č. 3: Potom spustíme test pomocou pôvodného kódu, aby sme sa ubezpečili, že z testu nebudeme mať neúspešné testy. Mali by sme mať nejaký výstup, ktorý komunikuje, že sme skutočne napísali test s nulovými poruchami.
Napríklad:
dokončené za 0,019 s, 1 špecifikácia, 0 zlyhaní, randomizované so semenami 31435
Výsledok pôvodného kódu:
Daughter's age is 5. Mother's age is 20. Welcome to the Mother-Daughter program
Krok č. 4: Predstavte mutanta. V takom prípade zmeníme väčší než operator (mother_age> daughter_age) to a menej ako operátor (mother_age Mutantný kód (Javascript) Krok č. 5: Potom spustíme test prostredníctvom mutantného kódu. Tu sú výsledky testu: dokončené za 0,017 s, 1 špecifikácia, 0 zlyhaní, randomizované so semenami 89555 Výsledok mutantného kódu: Krok č. 6: Porovnajte výsledky z pôvodnej verzie a mutantnej verzie. V takom prípade sa líšia, aj keď bola použitá rovnaká testovacia sada. Preto sme zabili nášho mutanta. Naša testovacia sada je teda pripravená. Existuje niekoľko druhov mutácií. Tieto sú vysvetlené ďalej. Tu zavedieme mutáciu zmenou parametra a / alebo konštantných hodnôt, zvyčajne o +/- 1. Príklad: pôvodný kód (Javascript) Ak by uvedený kód mal vynásobiť párne čísla, kde i<4 , potom by hodnotová mutácia znamenala zmenu inicializácie na nech i = 1 . Príklad: mutantný kód (Javascript) Tu odstránime alebo duplikujeme výpis v bloku kódu. Mohli by sme tiež zmeniť usporiadanie príkazov v bloku kódu. Napríklad v bloku if-else by sme mohli vymazať časť else alebo dokonca celý blok if-else. Príklad: pôvodný kód (Javascript) Príklad: mutantný kód (Javascript) Cieľom je tu kód, ktorý robí rozhodnutia, napríklad, porovnania hodnoty. Môžeme sa zmeniť > do< ako v našom príklade programu Matka-dcéra. Medzi ďalších operátorov, ktoré môžeme prepínať, patria: Výhody testovania mutácií (MT) zahŕňajú: Medzi nevýhody testovania mutácií (MT) patria: Na urýchlenie procesu generovania mutantov sa hodia nástroje. Tu je niekoľko nástrojov, ktoré môžeme použiť v MT: Stryker, Jumble, PIT a Insure ++. Poďme sa poučiť z príkladu: Povedzme, že existuje nemocničný web, ktorý umožňuje registráciu nových používateľov. Je na ňom uvedený dátum narodenia alebo vek pacienta. Ak je väčšia ako 14, určí hlavného lekára všeobecného lekára. K tomu vyvolá funkciu „všeobecného lekára“, ktorá vyhľadá dostupného lekára. Teraz môžu existovať ďalšie funkcie. Možno sú pacienti do 13 rokov pridelení k pediatrovi a podobne. Ale vezmeme iba prípad nad 14 rokov. Takto by kód mohol vyzerať: 1) Prečítajte si vek Upozorňujeme, že vyššie uvedené riadky kódu nie sú špecifické pre žiadny programovací jazyk a nebudú sa zobrazovať. Je to len hypotetické. Ako tester, ak je môj súbor údajov 14, 15, 0, 13 - nejaké náhodné čísla. Cieľom je skontrolovať, či je dátový súbor 4 hodnôt (14, 15, 0 a 3) dostatočný na identifikáciu všetkých možných problémov s týmto kódom. Prečítajte si tiež => Tipy na navrhnutie testovacích údajov pred vykonaním testovacích prípadov Ako to dosahuje testovanie mutácií? Najdôležitejšie je vytvoriť mutanty - variácie programu. Mutant nie je nič iné ako program, ktorý je napísaný ako odchýlka. Obsahuje chybu, ktorá sa sama nasadila. Príklady sú: Tieto náhrady sa tiež nazývajú „Prevádzkovatelia mutácií.“ Ukážem vám príklady: Mutant # 1: Relačný operátorvýmena 1) Vek čítania Mutant č. 2: 1) Vek čítania Mutant č. 3: 1) Vek čítania Mutant č. 4: 1) Vek čítania Mutant č. 5: Odstránenie vyhlásenia 1) Vek čítania Mutant č. 6: Vkladanie absolútnej hodnoty 1) Vek čítania Mutant č. 7: Nesprávna syntax 1) Vek čítania Mutant # 8: Robí to isté ako pôvodný test 1) Vek čítania Raz sa vytvoria všetci mutanti. Podliehajú súboru testovacích údajov. Naša množina je 14, 15, 0 a 13. Ktorých z týchto mutantov nájde naša množina údajov? Zistite v nasledujúcej tabuľke: (Kliknite na obrázok pre zväčšenie) Ako vidíte, naša údajová hodnota 14 zistí zlyhania, keď narazí na mutant 2, 3 a 4. Alebo 14 zabije mutantov 2, 3 a 4. Proti, 1, 6 a 8 je však neúčinný. Ak vaša množina údajov zabije všetkých mutantov, je to účinné. V opačnom prípade zahrňte viac alebo lepšie údaje o teste. Nie je potrebné, aby každá hodnota v množine údajov zabila všetkých mutantov. Spoločne by však mali všetkých zabiť.Napríklad:14 zabije 2, 3 a 4. 15 zabije 1, 2 a 4. A tak ďalej. A čo 5, 7 a 8? Mutant # 5 - je inštancia programu, ktorá zlyhá bez ohľadu na zadanú hodnotu údajov. Je to preto, že nebude robiť žiadne programovanie pre platné aj neplatné hodnoty. Mutant # 7 - bude chybou kompilácie. Alebo v prípade skriptovacieho jazyka chyba, ktorá zabráni vykonaniu. Mutant # 8 - je to isté ako hlavný program. Ako vidíte, vyššie uvedené mutanty nie sú vôbec užitočné. Preto je potrebné vyhnúť sa mutantom: Myslíte si, že ak to bude vyžadovať toľko úsilia, čo sa stane, keď budem musieť otestovať veľké vzorky kódu? Mutačné testovanie sa spolieha na dve veci: Takže zameriava sa na najmenšiu jednotku kódu a vkladá svoju vieru do programátorskej zručnosti škálovať testovanie mutácií na väčšie programy. Tento výukový program sa zaoberal definíciou, typmi a krokmi podrobného testovania mutácií s príkladmi. Dúfame, že sa vám páčilo čítanie a spoznávanie tejto zaujímavej testovacej techniky - Testovanie mutácií. O autorovi: Tento článok je napísaný členom tímu STH Swati S. Zdieľajte svoje komentáre, otázky a myšlienky nižšie. const user_info = () =>{ mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age
Daughter's age: 5, is more than mother's age: 20. Please enter correct ages
Typy testovania mutácií
# 1) Hodnotová mutácia
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=1; i
# 2) Mutácia vyhlásenia
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=0; i
# 3) Mutácia rozhodnutí
Pôvodný operátor Mutantný operátor 1 <= > = dva > = == 3 === == 4 a alebo 5 || &&
Nástroje na testovanie mutácií
Viac informácií o testovaní mutácií
dva) Ak je vek> 14 rokov
3) Lekár = všeobecný lekár ()
4) Koniec Ak
2) Ak je vek s<’
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
2) Ak je vek = 14 „Zmena> s =“
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
2) Ak je vek> = 14 „Zmena> s> =“
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
2) Ak je vek s<=’
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
2) Ak je vek = 14 rokov
3) „odstráňte vyhlásenie o priradení lekára“
4) Ukončite, ak
2) Ak je vek> 14 rokov
3) Doktor = Mr.X (vkladanie absolútnej hodnoty - povedzme, že X je pediatr)
4) Ukončite, ak
2) Ak je vek %% 14 (nesprávna syntax)
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
2) Ak vek> 14 rokov a vek> 14 rokov znamená to isté ako vek> 14 rokov
3) Lekár = všeobecný lekár ()
4) Ukončite, ak
Body, ktoré je potrebné poznamenať
fig_cropper.swf ako sa otvoriť
Záver
Odporúčané čítanie