Obsah:
Definice - Co znamená testování mutace?
Testování mutací je metoda softwarového testování, při které je záměrně manipulováno s programem nebo zdrojovým kódem, po kterém následuje sada testů proti mutovanému kódu. Mutace zavedené do zdrojového kódu jsou navrženy tak, aby napodobovaly běžné chyby programování. Dobrý test jednotek obvykle detekuje programové mutace a automaticky selže.
Testování mutací se používá na mnoha různých platformách, včetně Java, C ++, C # a Ruby.
Techopedia vysvětluje testování mutace
Testování mutací je jednoduchá, ale důmyslná metoda používaná k ověření správnosti zdrojového kódu a procesu testování. Koncept byl poprvé vytvořen Richardem Liptonem v roce 1971 a od té doby došlo k nárůstu zájmu.
Pracovní mechanismus testování mutací je jednoduchý a přímočarý. Je vybrána část zdrojového kódu zahrnující všechny testy jednotek. Po ověření všech pozitivních testů na daný zdrojový kód je do programu zavedena mutace.
Stupeň mutace aplikovaný na daný kódový blok se může lišit. Běžná implementace testování mutací zahrnuje nahrazení logického operátoru jeho inverzí. Například místo "= =" se použije operátor "! =". V některých případech mutace zahrnuje přeskupení řádků za účelem změny pořadí provedení nebo dokonce odstranění několika řádků kódu. Komplexní úrovně testování mutací mohou vést k chybám kompilace.
Jakmile je program upraven, provede se souprava jednotkových testů proti mutovanému kódu. Mutovaný kód projde nebo selže testu jednotky v závislosti na kvalitě testování. Dobře napsaný test jednotky musí detekovat chyby mutovaného kódu, což má za následek selhání. Test jednotky, který nedokáže detekovat chyby kódu, může vyžadovat přepsání.
Testování mutací poskytuje následující výhody:
- Identifikace chyb programového kódu
- Efektivní vývoj testovacího případu
- Detekce mezer ve zkušebních datech
- Vylepšená kvalita softwarového programu
- Odstranění dvojznačnosti kódu
Nevýhody testování mutací zahrnují:
- Obtížná implementace složitých mutací
- Drahé a časově náročné
- Vyžaduje zkušené testery se znalostí programování