what is mutation testing
Tento kurz vysvětluje, co je Testování mutací, jak je provádět, a typy Testování mutací s příklady:
Co je testování mutací?
Testování mutací je technika testování založená na poruše, kde jsou variace softwarového programu vystaveny testovací datové sadě. To se provádí k určení účinnosti testovací sady při izolaci odchylek.
Zní to trochu komplikovaně, že?
Co se naučíte:
Testování mutací
Mutation Testing (MT) jde dlouhou cestou zpět do 70. let, kdy byla poprvé navržena jako školní projekt. Byl odepsán, protože byl velmi náročný na zdroje. Jak však lidé pokračovali ve vývoji pokročilejších počítačů, pomalu se vraceli a nyní jsou jednou z nejpopulárnějších testovacích technik.
Definice testování mutací
MT je také známý jako testování chyb, mutace programu, testování chyb, nebo mutační analýza .
Jak název napovídá, testování mutací je typ testování softwaru, který je založen na změnách nebo mutacích. Do zdrojového kódu jsou zavedeny drobné změny, které kontrolují, zda definované testovací případy dokážou detekovat chyby v kódu.
Ideálním případem je, že žádný z testovacích případů by neměl projít. Pokud test proběhne úspěšně, znamená to, že v kódu došlo k chybě. Říkáme, že mutant (upravená verze našeho kódu) žil. Pokud test selže, pak v kódu není žádná chyba a mutant byl zabit. Naším cílem je zabít všechny mutanty.
Mutační testování také pomáhá testovat kvalitu definovaných testovacích případů nebo testovacích sad s nabídkou psát efektivnější testovací případy. Čím více mutantů můžeme zabít, tím vyšší je kvalita našich testů.
Koncepty testování mutací
Než budeme dále diskutovat o testování mutací, prozkoumejme některé koncepty, na které narazíme.
# 1) Mutanti: Jedná se jednoduše o mutovanou verzi zdrojového kódu. Je to kód, který obsahuje drobné změny. Když jsou testovací data spuštěna mutantem, měla by nám v ideálním případě poskytnout jiné výsledky než původní zdrojový kód. Mutanti se také nazývají mutantní programy .
Existují různé typy mutantů. Jedná se o následující:
- Přežili mutanti: Jak jsme již zmínili, jedná se o mutanty, kteří jsou stále naživu po spuštění testovacích dat prostřednictvím původní a mutované varianty zdrojového kódu. Tito musí být zabiti. Jsou také známí jako živí mutanti.
- Zabití mutanti: Jedná se o mutanty, kteří jsou zabiti po testování mutací. Získáváme je, když získáváme různé výsledky z původní a mutované verze zdrojového kódu.
- Ekvivalentní mutanti: Ty úzce souvisí se živými mutanty, protože jsou „živé“ i po spuštění testovacích dat. Od ostatních se liší tím, že mají stejný význam jako původní zdrojový kód, i když mohou mít odlišnou syntaxi.
# 2) Mutátoři / operátoři mutací: To je to, co umožňuje mutace, jsou na „sedadle řidiče“. V zásadě definují druh změny nebo změny zdrojového kódu, aby měl mutantní verzi. Mohou být označovány jako chyby nebo pravidla mutace .
# 3) Mutační skóre: Toto je skóre založené na počtu mutantů.
Vypočítává se pomocí následujícího vzorce:
Všimněte si, že, ekvivalentní mutanti nejsou při výpočtu skóre mutace brány v úvahu. Mutační skóre je také známé jako přiměřenost mutací . Naším cílem by mělo být dosáhnout vysokého skóre mutace.
Jak provést testování mutací
Krok 1: Pojďme napsat náš test jednotky Jasmine.
Testovací sada (Jasmine)
describe('User', function() { it('should compare the two numbers from user input', function(){ expect(20).toBeGreaterThan(5); }) });
Krok 2: Napiš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: Poté provedeme test pomocí původního kódu, abychom zajistili, že nebudeme mít neúspěšné testy na začátku. Měli bychom mít nějaký výstup, který sděluje, že jsme skutečně napsali test s nulovými poruchami.
Například:
dokončeno za 0,019 s 1 spec, 0 poruch, randomizováno s seed 31435
Výsledek původního kódu:
Daughter's age is 5. Mother's age is 20. Welcome to the Mother-Daughter program
Krok č. 4: Představte mutanta. V tomto případě změníme větší než operator (mother_age> daughter_age) to a menší než operátor (mother_age Mutantní kód (Javascript) Krok č. 5: Poté test spustíme prostřednictvím mutantního kódu. Zde jsou výsledky testu: dokončeno za 0,017 s 1 spec, 0 selhání, náhodně s seedem 89555 Výsledek mutantního kódu: Krok č. 6: Porovnejte výsledky z původní verze a mutantní verze. V tomto případě se liší, i když byla použita stejná testovací sada. Proto jsme našeho mutanta zabili. Naše testovací sada je tedy dobrá. Existuje několik typů mutací. Ty jsou vysvětleny níže. Zde zavedeme mutaci změnou parametrů a / nebo konstantních hodnot, obvykle o +/- 1. Příklad: Původní kód (Javascript) Pokud by výše uvedený kód měl vynásobit sudá čísla, kde i<4 , pak by hodnotová mutace znamenala změnu inicializace na ať i = 1 . Příklad: Mutantní kód (Javascript) Zde smažeme nebo duplikujeme výpis v bloku kódu. Mohli bychom také přeskupit příkazy v bloku kódu. Například v bloku if-else bychom mohli odstranit část else nebo dokonce celý blok if-else. Příklad: Původní kód (Javascript) Příklad: Mutantní kód (Javascript) Cílem je kód, který rozhoduje, například, srovnání hodnot. Můžeme se změnit > do< jako v našem příkladu programu Matka-dcera. Mezi další operátory, které můžeme přepínat, patří následující: Výhody testování mutací (MT) zahrnují: Nevýhody testování mutací (MT) zahrnují: Nástroje se hodí k urychlení procesu generování mutantů. Zde je několik nástrojů, které můžeme v MT použít: Stryker, Jumble, PIT a Insure ++. Naučme se na příkladu: Řekněme, že existuje nemocniční web, který umožňuje registraci nových uživatelů. Přečte datum narození nebo věk pacienta. Pokud je větší než 14, určí hlavního lékaře praktického lékaře. K tomu vyvolá funkci „všeobecného lékaře“, která vyhledá dostupného lékaře. Nyní mohou existovat další funkce. Možná, že pacienti mladší 13 let budou přiřazeni k pediatrovi atd. Vezmeme však pouze případ starší 14 let. Takto může kód vypadat: 1) Číst věk Upozorňujeme, že výše uvedené řádky kódu nejsou specifické pro žádný programovací jazyk a nebudou spuštěny. Je to jen hypotetické. Jako tester, pokud je moje sada dat 14, 15, 0, 13 - nějaká náhodná čísla. Cílem je zkontrolovat, zda je datový soubor 4 hodnot (14, 15, 0 a 3) dostatečný k identifikaci všech možných problémů s tímto kódem. Přečtěte si také => Tipy, jak navrhnout testovací data před provedením testovacích případů Jak toho dosahuje testování mutací? Nejdůležitější je vytvořit mutanty - variace programu. Mutant není nic jiného než program, který je psán jako odchylka. Obsahuje závadu s vlastním nasazením. Příklady: Tyto náhrady se také nazývají „Provozovatelé mutací.“ Ukážu vám příklady: Mutant # 1: Relační operátorvýměna, nahrazení 1) Číst věk Mutant # 2: 1) Číst věk Mutant # 3: 1) Číst věk Mutant č. 4: 1) Číst věk Mutant č. 5: Odstranění prohlášení 1) Číst věk Mutant # 6: Absolute Value Insertion 1) Číst věk Mutant # 7: Nesprávná syntaxe 1) Číst věk Mutant # 8: Provádí to samé jako původní test 1) Číst věk Jakmile jsou vytvořeni všichni mutanti. Jsou podrobeni souboru testovacích dat. Naše sada je 14, 15, 0 a 13. Které z těchto mutantů náš soubor dat najde? Zjistěte v následující tabulce: (Klikněte na obrázek pro zvětšení) Jak vidíte, naše datová hodnota 14 zjistí selhání, když narazí na Mutant 2, 3 a 4. Nebo 14 zabije mutanty 2, 3 a 4. Proti, 1, 6 a 8 je ale neúčinná. Pokud váš datový soubor zabije všechny mutanty, je to efektivní. Jinak uveďte více nebo lepší testovací data. Není nutné, aby každá hodnota v datové sadě zabila všechny mutanty. Ale společně by měli všechny zabít.Například:14 zabije 2, 3 a 4. 15 zabije 1, 2 a 4. A tak dále. A co 5, 7 a 8? Mutant # 5 - je instance programu, která selže bez ohledu na jakoukoli hodnotu dat, kterou zadáte. Je to proto, že nebude provádět žádné programování platných i neplatných hodnot. Mutant # 7 - bude chyba kompilace. Nebo v případě skriptovacího jazyka chyba, která zabrání provedení. Mutant # 8 - je to samé jako hlavní program. Jak vidíte, výše uvedené mutanty nejsou vůbec užitečné. Mutanty, kterým je třeba se vyhnout, jsou proto: Myslíte si, že pokud to bude vyžadovat tolik úsilí, co se stane, když budu muset otestovat velké vzorky kódu? Mutační testování se opírá o dvě věci: Tak, zaměřuje se na nejmenší jednotku kódu a staví svou víru v dovednosti programátora škálovat testování mutací na větší programy. Tento výukový program zahrnoval definici, typy a kroky testování testování mutací podrobně s příklady. Doufáme, že jste si užili čtení a poznávání této zajímavé testovací techniky - Testování mutací. O autorovi: Tento článek je napsán členem týmu STH Swati S. Sdílejte níže své komentáře, dotazy a myšlenky. 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 testování mutací
# 1) Hodnotová mutace
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=1; i
# 2) Mutace prohlášení
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=0; i
# 3) Mutace rozhodnutí
Původní operátor Mutantní operátor 1 <= > = dva > = == 3 === == 4 a nebo 5 || &&
Nástroje pro testování mutací
Více informací o testování mutací
dva) Pokud je věk> 14 let
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Pokud je věk s<’
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Je-li věk = 14 „Změna> s =“
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Pokud věk> = 14 „Změna> pomocí> =“
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Pokud je věk s<=’
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Je-li věk = 14 let
3) „odstranit prohlášení o přiřazení lékaře“
4) Konec, pokud
2) Pokud je věk> 14 let
3) Doktor = Mr.X (vložení absolutní hodnoty - řekněme, že X je pediatr)
4) Konec, pokud
2) Pokud věk %% 14 (nesprávná syntaxe)
3) Lékař = praktický lékař ()
4) Konec, pokud
2) Pokud věk> 14 a věk> 14 „znamená totéž jako věk> 14“
3) Lékař = praktický lékař ()
4) Konec, pokud
Body k poznámce
mysql rozhovor otázky a odpovědi na 3 roky zkušeností
Závěr
Doporučené čtení