Co je testování mutací? (Příklad)
Co je testování mutací?
Testování mutací je typ testování softwaru, při kterém se mění/mutují určité příkazy zdrojového kódu, aby se ověřilo, zda jsou testovací případy schopny najít chyby ve zdrojovém kódu. Cílem Mutation Testing je zajistit kvalitu testovacích případů z hlediska robustnosti, aby selhal mutovaný zdrojový kód.
Změny provedené v mutantním programu by měly být extrémně malé, aby neovlivnily celkový cíl programu. Testování mutací se také nazývá strategie testování založená na chybách, protože zahrnuje vytvoření chyby v programu a je to typ Bílý Box Testování který se používá hlavně pro Testování jednotek.
Mutace byla původně navržena v roce 1971, ale ztratila nadšení kvůli vysokým nákladům. Nyní si opět vybral steam a je široce používán pro jazyky jako např Java a XML.
Jak provést testování mutací?
Následují kroky k provedení testování mutací (analýza mutací):
Krok 1: Chyby jsou zaváděny do zdrojového kódu programu vytvořením mnoha verzí nazývaných mutanti. Každý mutant by měl obsahovat jednu chybu a cílem je způsobit selhání mutantní verze, což demonstruje účinnost testovacích případů.
Krok 2: Testovací případy jsou aplikovány na původní program a také na mutantní program. A Testovací případ by měla být adekvátní a je vylepšena tak, aby detekovala chyby v programu.
Krok 3: Porovnejte výsledky původního a mutantního programu.
Krok 4: Pokud původní program a mutantní programy generují odlišný výstup, pak je mutant zabit testovacím případem. Testovací případ je tedy dostatečně dobrý, aby detekoval změnu mezi původním a mutantním programem.
Krok 5: Pokud původní program a mutantní program generují stejný výstup, Mutant zůstane naživu. V takových případech je třeba vytvořit efektivnější testovací případy, které zabijí všechny mutanty.
Jak vytvořit mutantní programy?
Mutace není nic jiného než jediná syntaktická změna, která je provedena v programovém prohlášení. Každý mutantní program by se měl od původního programu lišit o jednu mutaci.
| Původní program | Mutantní program |
|---|---|
| Pokud (x>y)
Vytisknout „Ahoj“ Jiný Vytisknout „Ahoj“ |
Li(x<y)
Vytisknout „Ahoj“ Jiný Vytisknout „Ahoj“ |
Co změnit v Mutant Programu?
Existuje několik technik, které lze použít ke generování mutantních programů. Pojďme se na ně podívat
| Operanáhradní operátory | Modifikace výrazu Operatorů | Úprava výpisu Operatorů |
|---|---|---|
| Nahraďte operand jiným operandem (x za y nebo y za x) nebo konstantní hodnotou. | Nahrazení operátoru nebo vložení nových operátorů v programovém prohlášení. | Programové příkazy jsou upraveny tak, aby vytvářely mutantní programy. |
| Příklad-
If(x>y) nahraďte hodnoty x a y If(5>y) nahraďte x konstantou 5 |
Příklad-
If(x==y) Můžeme nahradit == za >= a mít mutantní program jako If(x>=y) a vložení ++ do příkazu If(x==++y) |
Příklad-
Odstraňte část else v příkazu if-else Vymažte celý příkaz if-else a zkontrolujte, jak se program chová Některé z operátorů vzorových mutací:
|
Automatizace testování mutací
Testování mutací je extrémně časově náročné a složitě se provádí ručně. Pro urychlení procesu je vhodné sáhnout po automatizačních nástrojích. Automatizační nástroje také snižují náklady na testování.
Seznam dostupných nástrojů -
Typy testování mutací
In Softwarové inženýrstvíTestování mutací lze v zásadě rozdělit do 3 typů – výroková mutace, rozhodovací mutace a hodnotová mutace.
- Statement Mutation – vývojář vyjme a vloží část kódu, jehož výsledkem může být odstranění některých řádků
- Hodnotová mutace– upravují se hodnoty primárních parametrů
- Rozhodovací mutace– kontrolní výkazy se mají změnit
Skóre mutace
Skóre mutace je definováno jako procento usmrcených mutantů s celkovým počtem mutantů.
- Skóre mutace = (zabití mutanti / celkový počet mutantů) * 100
Testovací případy jsou mutace adekvátní, pokud je skóre 100 %. Experimentální výsledky ukázaly, že testování mutací je účinným přístupem pro měření přiměřenosti testovacích případů. Ale hlavní nevýhodou jsou vysoké náklady na generování mutantů a provádění každého testovacího případu proti tomuto mutantnímu programu.
Výhody testování mutací
Níže jsou uvedeny výhody testování mutací:
- Je to účinný přístup k dosažení vysokého pokrytí zdrojového programu.
- Toto testování je schopné komplexně testovat mutantní program.
- Testování mutací přináší vývojářům softwaru dobrou úroveň detekce chyb.
- Tato metoda odhaluje nejednoznačnosti ve zdrojovém kódu a má schopnost detekovat všechny chyby v programu.
- Zákazníci mají z tohoto testování prospěch tím, že získají nejspolehlivější a nejstabilnější systém.
Nevýhody mutačního testování
Na druhé straně jsou následující nevýhody testování mutantů:
- Testování mutací je extrémně nákladné a časově náročné, protože existuje mnoho mutačních programů, které je třeba vygenerovat.
- Vzhledem k jeho časové náročnosti je fér říci, že toto testování nelze provést bez automatizačního nástroje.
- Každá mutace bude mít stejný počet testovacích případů než původní program. Takže může být potřeba otestovat velké množství mutantních programů proti původní testovací sadě.
- Protože tato metoda zahrnuje změny zdrojového kódu, není vůbec použitelná Černá Box Testování.
Závěr
Chcete důkladné testování vaší aplikace? Odpověď je testování mutace. Je to nejkomplexnější technika pro testování programu. Jedná se o metodu, která kontroluje účinnost a přesnost testovacího programu pro zjištění závad nebo chyb v systému.



