Testování mutací neboli mutace programů je technika testování bílých skříněk, která pomáhá společnostem vyvíjet řadu nových softwarových kontrol a zároveň auditovat stávající procesy projektu. Jedná se o relativně nový přístup, který zajišťuje, že vývojáři i testeři pracují na vysoké úrovni.
Aplikace je tak úspěšná nebo tak dobrá, jak dobré jsou její vlastní postupy zajištění kvality – to znamená, že je nezbytné, aby organizace využívaly více než jeden typ testovacích technik.
Poznatky o testování mutací by mohly pomoci testovacím týmům zvýšit jejich dovednosti a obecný repertoár – což by jim umožnilo zvýšit spolehlivost těchto kontrol. Testování mutací je složitý a citlivý proces, proto je nezbytné, aby testeři důkladně prozkoumali výhody, problémy a programy třetích stran, které mohou zaručit úspěšnou implementaci.
V tomto článku se podíváme na testování mutací a na to, jak zlepšuje zajištění kvality, a na další klíčové aspekty pro týmy testující software.
Co je testování mutací v testování softwaru?
V kontextu softwaru se mutačním testováním rozumí, že tým pro zajištění kvality záměrně zavádí chyby – neboli „mutace“ – do kódu aplikace, aby zjistil, jak na ně tým reaguje. Cílem je vytvořit chybu a zajistit, aby testovací sada dokázala identifikovat každou změnu aplikace.
Při úpravě kódu programu může tester mutací přepnout výraz true/false, odstranit příkaz nebo jednoduše změnit hodnotu. Tyto chyby se mohou projevit různými způsoby při dalších kontrolách softwaru; všechny jsou snadno odhalitelné kvalifikovaným a zkušeným testovacím týmem.
Samotné mutace jsou často velmi malé, což umožňuje testerovi, který kód mutuje, sledovat, jak tým tyto změny objevuje. Významné změny by byly zřejmé i při zběžném pohledu – takže drobné chyby jsou obvykle nejlepším způsobem, jak se ujistit, že společnost používá spolehlivé testovací postupy.
Tato technika se konkrétně zabývá efektivitou testovacích případů týmu, tedy dokumentů obsahujících informace o testech. Tým může k provádění těchto kontrol používat také automatizační software třetích stran a v takovém případě se testování mutací zaměřuje na to, jak dobře tato platforma dokáže odhalit chyby v kódu programu.
1. Kdy je třeba provést testování mutací?
Protože cílem testování mutací je ověřit a zlepšit stávající kontroly kvality, je pro týmy nezbytné provádět je již v rané fázi testování. To znamená, že pokud testovací sada není schopna identifikovat a „zabít“ mutanty, je dostatek času na provedení rozsáhlých změn v testovacích postupech organizace.
Vzhledem k tomu, že se jedná o velmi univerzální metodu, je testování mutací použitelné prakticky pro jakýkoli typ softwaru včetně webových, mobilních a desktopových programů. Nejlépe to funguje ve fázi testování jednotek, které zkoumá nejmenší součásti aplikace.
2. Kdy nepotřebujete provádět testování mutací
Stále existují scénáře, kdy mutace a obecné testování bílého pole nejsou pro program vhodné; to může mít různé důvody.
Například pokud je cílem testerů pouze kontrola pomocí black-box testování – v takovém případě by se místo toho zaměřili na front-end pro danou relaci nebo dokonce na celkovou fázi testování.
Některé společnosti považují white-box testování za zdlouhavé a časově náročné, což může vést k tomu, že tento proces vynechají. Silné, dobře zkontrolované testovací případy mohou také obejít potřebu testování mutací, protože to ukazuje na pečlivost týmu a jeho závazek k přesným testovacím postupům.
3. Kdo se podílí na analýze mutací?
V analýze mutací je zahrnuta řada různých rolí, včetně:
– Testery mutací
Mutují kód zaváděním různých drobných chyb, aby se ujistili, že proces testování funguje podle očekávání. Tito testeři jsou obvykle již existujícími členy týmu pro zajištění kvality.
– Testování aplikací
Pravidelně kontrolují, zda v kódu nejsou nějaké problémy, a zjištěné mutace identifikují a opravují. Provádějí white-box testování, aby našli chyby v kódování – ale používají i další techniky.
– Vývojáři aplikací
Navrhují funkce programu a píší počáteční kód. Opravují také všechny problémy, které testeři naleznou, a zajišťují tak stabilní stav softwaru pro vydání.
– Projektoví manažeři
Nabízejí pokyny k aplikaci a mohou pracovat společně s testery mutací, aby zjistili účinnost svých vlastních týmů. Zajišťují přísné standardy ve všech fázích vývoje.
Co testujeme pomocí testů mutací?
Testování mutací se zaměřuje spíše na testování procesů než na aplikaci. Za tímto účelem zkoumá následující skutečnosti:
1. Testovací případy
Testovací případy jsou dokumenty, které obsahují podrobné informace o každém testu, včetně výsledků, které testeři očekávají od každé jednotlivé kontroly. Konzistentní a přesné testovací případy poskytují členům týmu QA představu o stavu aplikace a o tom, jak její výkon odpovídá očekáváním firmy.
Informace v těchto testovacích případech mohou určit schopnost testera odhalit určité vady – včetně těch, které vyvolává testování mutací.
2. Zkušební normy
Mutační testy podrobně zkoumají stávající testovací postupy, aby se zajistilo, že členové týmu dokáží identifikovat i drobné problémy, které by mohly ovlivnit vnímání softwaru uživateli.
Pečlivost a kompetence testerů mohou být dokonce hlavními faktory, které firma při těchto kontrolách posuzuje. Bez důkladné pozornosti věnované detailům v každé fázi mohou testeři přehlédnout závažné mutace, které se v programu vyskytují.
3. Jednotlivé jednotky kódu
Mutační testy jsou běžné v části vývoje, která se týká testování jednotek. Ta se zaměřuje na jednotlivé komponenty, aby bylo možné udržet důraz na každý test, což výrazně optimalizuje celý proces tím, že testeři pracují pouze s relevantními řádky kódu.
Vzhledem k tomu, že mutační testy jsou často na počátku fáze zajišťování kvality a mohou být předstupněm testování v plném rozsahu, může tento přístup zvýšit rychlost, aniž by byla ohrožena přesnost.
4. Aktualizace programu
Aktualizace softwaru obvykle zahrnují opětovné spuštění testovacího procesu, aby se zajistilo, že se neobjeví žádné nové chyby a že se znovu neobjeví předchozí chyby.
Klíčovou součástí je opakování mutačních testů, které pomáhá prosazovat konzistentní standardy testování po velkých změnách softwaru.
Testovací tým může považovat důkladné kontroly po aktualizaci za zbytečné, ale mutace kódu může zajistit, že pochopí důležitost testování v každé fázi vývoje.
5. Software pro automatizaci
Společnosti také provádějí testování mutací, aby zkontrolovaly své automatické testovací sady a ujistily se, že jsou schopny zaznamenat mimo jiné i mutovaný kód.
Pokud testovací aplikace třetí strany dokáže identifikovat externí změny programu a případně je i opravit, znamená to, že organizace může softwaru důvěřovat při automatizaci testů.
Je nezbytné, aby firmy ověřovaly svůj přístup k automatizaci; to dává každému testerovi jistotu.
6. Strategie automatizace
Způsob, jakým společnost začlení automatizaci do svých procesů, je stejně důležitý jako používaný software; může se například rozhodnout zavést hyperautomatizaci. Díky tomu se společnost může inteligentně rozhodnout, které mutační a softwarové testy automatizovat.
Bez silné strategie automatizace, která by zohledňovala obrovskou rozmanitost kódu aplikace, mohou být některé testy s automatizací nekompatibilní, což omezuje možnosti platformy.
7. Aplikace
Testování mutací se sice zaměřuje více na testovací tým než na aplikaci, ale i tak může poukázat na důležité informace o tomto programu.
Například testování mutací ukazuje, jak software reaguje na změny v kódu, včetně toho, zda tyto problémy signalizuje způsobem, který tým očekává.
Tento přístup není technikou testování softwaru, ale přesto může nabídnout zajímavé údaje o jeho vnitřních operacích.
Životní cyklus testů mutací
Obvyklý životní cyklus testování mutací je následující:
1. Analýza požadavků
Prvním krokem životního cyklu testování mutací je zjistit, co přesně vyžaduje ověření a které části kódu aplikace by tyto testy nejvíce prospěly.
Tým může hovořit s vývojáři a vedoucími pracovníky, aby zjistil jejich obavy a začal je řešit.
2. Plánování testů
Poté začnou testeři vyvíjet přesné kontroly, které hodlají implementovat – v tomto případě mutace, které poskytnou nejlepší přehled.
V této fázi se určuje celková strategie testování mutací a způsob, jakým bude tým efektivně realizovat zamýšlené mutace kódu.
3. Vývoj testovacích případů
Testování mutací zahrnuje samostatnou dokumentaci k testům, včetně informací o mutovaném kódu a způsobu, jakým mají testeři problém odstranit.
Dobré vedení záznamů zajišťuje, že všechny testy probíhají podle plánu, a může týmu pomoci udržet si závazek dodržovat vysoké standardy testování.
4. Nastavení testovacího prostředí
Testeři se ujistí, že je aplikace připravena na změny – a že mají postup, jak tyto problémy řešit, pokud je ostatní členové týmu nejsou schopni odhalit.
V rámci tohoto procesu si testeři mutací vytvoří testovací server a použijí jej jako plátno pro své mutace.
5. Provedení testu
Po dokončení příprav testeři změní kód v několika součástech aplikace a pak čekají, až si problémů všimnou ostatní testeři a opraví je.
Jak testeři mutací, tak testeři aplikací musí tuto činnost důkladně dokumentovat, aby se ujistili, že jejich záznamy jsou spolehlivé.
6. Uzavření testovacího cyklu
Po dokončení testování testeři mutací překontrolují, zda všechny provedené změny byly opraveny buď testery aplikace, nebo jimi samotnými.
Poté uzavřou testovací cyklus, analyzují výsledky a diskutují o tom, jak testeři reagovali na různé chyby a jak je dokázali opravit.
7. Opakování testu
Po uzavření testovacího cyklu by mohlo být nutné jej po budoucích aktualizacích softwaru znovu aktivovat.
Každá změna aplikace nějakým způsobem mění její funkčnost, což vede k novým možnostem, které musí tým zohlednit, aby zajistil dostatečně pečlivý proces testování.
Výhody testování mutací
Provádění mutačních testů má mnoho výhod, včetně:
1. Ověřuje proces testování
Hlavním přínosem testování mutací je schopnost ukázat, jak testeři společnosti přistupují k softwaru – a jejich schopnost rozpoznat problémy s kódováním. Tím je také zajištěno, že testovací případy týmu jsou dostatečně komplexní a pokrývají všechny potřebné testy.
Testy mutací prověřují celkový postup testování organizace, aby bylo zaručeno, že funguje podle očekávání.
2. Zajišťuje silnou automatizaci
Testování mutací pomáhá týmu zkontrolovat, zda je jeho platforma pro automatizaci testů třetí strany schopna adekvátně identifikovat chyby v kódu a správně je řešit.
Pokud je tento software nedokáže detekovat ani po nezbytné kalibraci, možná by stálo za to vyměnit platformu za jinou, která těmito testy snadno projde.
3. Dobré pokrytí
Každý proces testování softwaru musí být schopen široce pokrýt celou aplikaci, aby se každému aspektu dostalo potřebné pozornosti.
Testy mutací mohou měnit jakoukoli část kódu programu; dobrá implementace umožňuje, aby tyto testy zahrnovaly všechny hlavní funkce. To testery naučí hledat problémy v celé aplikaci.
4. Zkoumá zdrojový kód
Vzhledem k tomu, že testování mutací zahrnuje práci s kódem a případné přímé změny, mohla by tato metoda také upozornit na neoptimalizované skripty přítomné v aplikaci.
Testeři softwaru mohou program autorizovat a provádět běžnou sérii testů pouze v případě, že je kód softwaru odpovídající; tyto kontroly umožňují testerům upozornit na možné budoucí problémy.
5. Vede k lepšímu softwaru
Testování mutací pomáhá zajistit, aby procesy testování aplikace odpovídaly požadavkům programu.
Pokud analýza mutací odhalí, že tým pro zajištění kvality nedodržuje správné postupy nebo že testovací případy jsou nedostatečné, mohou testeři pracovat na jejich zlepšení. Bez této náležité péče může organizace vydat vadný výrobek, aniž by si to uvědomila.
6. Účinné pro různé jazyky
Bez ohledu na jazyk, který testovací tým pro svou aplikaci používá, jsou k dispozici softwarové možnosti, které mohou nabídnout kvalitní analýzu mutací.
Zahrnuje řadu funkcí kvality života, které jsou specifické pro daný jazyk, a zjednodušuje kontroly pro větší spolehlivost. Přístup na míru pro různé jazyky zvyšuje kvalitu každého jednotlivého testu.
7. Vysoce dostupné nástroje
Mnohé z nejlepších platforem pro mutaci jsou zcela open source, což znamená, že nabízejí více možností přizpůsobení a rozsáhlou škálu funkcí zdarma nebo za výrazně nižší cenu.
Díky menšímu počtu překážek ve srovnání s mnoha jinými formami testování je mutace kódu pro podniky užitečným a pohodlným způsobem, jak vyhodnotit nebo dokonce zlepšit svůj přístup k zajištění kvality.
Výzvy testování mutací
Tento proces s sebou přináší také řadu problémů, jako např.:
1. Vyžaduje znalosti programování
Aby mohli testeři tyto kontroly provádět, musí mít komplexní znalosti programu a kódu, což méně zkušeným testerům ztěžuje jejich přínos.
Podnik může testovat software pouze způsobem, který odpovídá stávajícím dovednostem testerů, konkrétně jejich schopnosti upravit aplikaci a vytvořit opravitelnou chybu v kódování.
2. Nevhodné pro testování černé skříňky
Testování černé skříňky zahrnuje především prohlížení přední části aplikace bez kontroly jejího vnitřního fungování a kódu – to je fakticky neslučitelné s testováním mutací.
V důsledku toho jsou tyto kontroly užitečné pouze pro některé testy ve srovnání s jinými metodami, z nichž mnohé mohou nabídnout mnohem větší pokrytí celé fáze testování.
3. Navrhování mutačních testů je časově náročné
Mutace kódu může být zdlouhavý proces, protože tým musí najít jednotlivé komponenty, které by stálo za to zmutovat. Samotné rozhodování o tom, které mutace zavést, může zabrat hodně času; to může být problematické, když ostatní typy testování fakticky čekají na tyto kontroly, aby se plně ověřil přístup společnosti k testování.
4. Může vyžadovat mnoho mutací kódu
Podobně složité projekty přirozeně vyžadují větší počet mutantů, aby byl zajištěn komplexní přístup k testování. To prodlužuje fázi mutace a může znamenat mnoho ručních změn v kódu aplikace.
Bez kvalitního softwaru pro automatizaci testování s možností mutace programů by to pro testery mohlo být obtížné úspěšně realizovat.
5. Testeři si nemusí všimnout chyb
Největší obavou, kterou testeři mutací a projektoví manažeři při zavádění těchto kontrol často mají, je možnost, že si testeři softwaru (manuální nebo automatizovaní) problémů jednoduše nevšimnou.
To může vyžadovat kompletní přepracování testovacích postupů firmy – i když to může testerům poskytnout důležité informace o jejich standardech zajištění kvality.
6. Může být náročný na paměť
Testování mutací obecně vyžaduje vysoký výpočetní výkon, i když to může záviset na aplikaci, kterou testeři používají.
Pokud má organizace omezený počet strojů nebo tato zařízení mají nízké specifikace, mohly by mít problémy se spuštěním příliš mnoha souběžných mutací. To ovlivňuje počet kontrol, které mohou provést před ukončením fáze testování.
7. Zprávy mohou být informačně bohaté
Ačkoli to závisí hlavně na rozhraní nástroje pro testování mutací v týmu, zprávy, které generují, mohou být obtížně analyzovatelné.
To znamená, že jejich ruční třídění a vyhledávání správných výsledků testů zabere čas; některé programy umožňují uživatelům přizpůsobit vlastní proces vykazování; to se liší podle jednotlivých aplikací.
Charakteristiky testů mutací
Hlavními charakteristikami účinných mutačních testů jsou:
1. Komplexní
Tyto kontroly pokrývají všechny hlavní aspekty softwaru; společnosti s dostatečnými zdroji mohou dokonce navrhnout mutační test pro každý běžný testovací případ.
Přesný počet závisí na možnostech a preferencích organizace, ale efektivní mutační testy pokrývají širokou škálu kódovaných funkcí.
2. Strategické
Programové mutace by měly mít podobně jasnou a dobře naplánovanou strukturu, která usnadňuje dosažení celkových cílů organizace v oblasti testování.
Chyby, které vytvářejí, se například mohou blížit reálným selháním testů, což umožňuje testerům předvídat tyto problémy, pokud se přirozeně vyskytnou, což výrazně zlepšuje proces testování ve firmě.
3. Konstruktivní
Účelem testování mutací je odhalit nedostatky v testování – ukázat, jak by tým mohl zlepšit své kontroly a opravit drobné chyby, jakmile se objeví.
Testeři mutací musí upřednostňovat „neplatné“ mutace, které ovlivňují funkčnost softwaru, což umožňuje jasnější zlepšení testování v rámci celého projektu.
4. Preemptivní
Tyto kontroly slouží k ověření celkové strategie týmu; to znamená, že testování mutací funguje lépe v raných fázích vývoje.
Pokud si testeři všimnou nějakých významných nedostatků v přístupu k zajištění kvality, získají tak potřebný čas na změnu svých testovacích případů, aby se ujistili, že jsou adekvátní.
5. Konzistentní
Testování mutací v různých iteracích aplikace by mělo přinést konzistentní výsledky a zároveň přidat více kontrol, aby bylo možné zohlednit změny softwaru.
Následné kontroly musí být prováděny se stejným důrazem na detail, aby byla zachována jejich účinnost – bez této přesnosti mohou být testy mutací méně přesné.
6. Subtilní
Cílem mutačních testů je prověřit schopnost týmu pro zajištění kvality identifikovat chyby v kódu prostřednictvím jeho testů a platforem třetích stran.
To znamená, že testy by neměly být okamžitě zřejmé každému, kdo software kontroluje; cílem je prozkoumat, jak testeři reagují na drobné problémy v kódu.
7. Spolupráce
Stejně jako každé testování softwaru je i mutace kódu proces, který běžně vyžaduje týmovou spolupráci a komunikaci, aby byl úspěšný. Udržování atmosféry spolupráce pomáhá vyhnout se informačním silám, které mohou vést k nedorozuměním – to také zaručuje, že se každý tester soustředí na své úkoly.
Typy testů mutací
Existují tři hlavní typy mutačních testů:
1. Mutace hodnot
Hodnotové mutace přímo mění hodnoty v kódu, mění jedno číslo nebo písmeno na jiné způsobem, který ovlivňuje funkčnost aplikace.
Tester může například změnit přesné parametry programu, například čísla, na která reaguje. Testery mutací se mohou zaměřit zejména na konstantní hodnoty softwaru, protože ty zůstávají během běžného provozu vždy stejné.
2. Rozhodovací mutace
Rozhodovací mutace modifikují aritmetické a logické operátory a efektivně mění způsob, jakým aplikace reaguje na konkrétní situace.
Například záměna operátoru větší než (>) za operátor menší než (<) samozřejmě ovlivní výstup programu. Testeři mohou také zaměnit „nebo“ za „a“ nebo naopak, čímž zásadně změní tento software a způsob, jakým interpretuje informace, které mu poskytují ostatní testeři a případní uživatelé.
3. Mutace výroků
Mutace příkazů mění skutečné příkazy kódu a upravují pravidla, podle kterých se aplikace rozhoduje. Testeři mohou měnit obsah těchto řádků, duplikovat je, nebo je dokonce odstranit, aby ověřili, jaký vliv má zmutovaný program na funkčnost softwaru.
Tyto mutace mění stavební kameny programu a mohou odstranit celé funkce nebo jinak zabránit jejich fungování.
Vyjasnění některých nejasností
– Testování mutací vs. regresní testování
Mutace i regresní testování jsou užitečné přístupy k testování softwaru – porozumění každé z těchto technik může zlepšit celkové zajištění kvality ve společnosti.
1. Co je regresní testování?
Při regresním testování testeři zkoumají software mezi různými iteracemi, aby se ujistili, že funguje i přes změny v kódu.
Bez těchto kontrol mohou i drobné změny vést k závažným problémům, které mohou způsobit opětovné objevení předchozích chyb. To obvykle vyžaduje automatizaci kvůli složité povaze opakovaného testování každé komponenty; mnoho společností se z tohoto důvodu vzdává regresních testů.
Zkoušející mohou tyto kontroly provádět na jednotlivých jednotkách, jednotlivých součástech nebo na celém výrobku – přesný rozsah požadovaných testů závisí především na projektu a jeho rozsahu.
2. Jaký je rozdíl mezi mutačními a regresními testy?
Regresní testování se primárně zaměřuje na kontrolu programu a jeho funkčnosti, zatímco mutace kódu sleduje, jak testeři reagují na problémy.
První z nich se také většinou provádí po několika iteracích programu, zatímco kontrola mutací může probíhat v kterékoli fázi vývoje – obvykle však v raných částech testovací fáze.
Jak regresní, tak mutační testy se mohou zabývat jednotlivými kódovacími jednotkami a tím, jak mohou drobné změny vést k významným problémům, na jejichž odstranění musí testeři zapracovat.
3. Závěr: Testování mutací vs. automatizované testování
Automatizace je často klíčovou součástí mutačního testování vzhledem k rozsahu kontrol a jednotek – proto je někdy nezbytná pro úspěšný a komplexní proces testování.
Společnosti běžně používají mutace kódu k prověření své automatizační platformy třetí strany a toho, jak dobře identifikuje problematické skripty.
Kombinace důkladného katalogu kontrol mutací s automatizovaným softwarem může výrazně zvýšit pokrytí firmy a zajistit lepší výsledky.
Ačkoli se jedná o dva samostatné testovací postupy, nemusí si vzájemně odporovat. Například integrace robotické automatizace procesů může posílit strategii testování mutací ve společnosti.
Co potřebujete k zahájení testování mutací v softwarovém inženýrství?
Obvyklé požadavky na komplexní testování mutací zahrnují:
1. Jasná strategie testování
Testovací tým musí stanovit strategii testování mutací, včetně toho, které komponenty a jednotky je třeba prověřit.
Například některé aspekty kódu mohou být pro úspěch a funkčnost aplikace nedílnou součástí; testeři by se měli ujistit, že existuje dostatek mutací, které to umožňují.
Důležitým faktorem je také harmonogram testování mutací ve společnosti, který zajistí, že testeři budou mít dostatek času na prozkoumání kódu.
2. Žádný nárůst rozsahu
I při důkladné strategii, která stanoví přístup společnosti k testování mutací, je možné, že počet testů bude výrazně vyšší, než je nutné.
Efektivita je při tomto postupu prvořadá, zejména proto, že na tým mohou čekat další fáze testování, než nalezne a zlikviduje mutace. Než testeři začnou měnit kód, musí jasně definovat svůj rozsah; tím se zajistí, že vše bude zvládnutelné v praktickém časovém rámci.
3. Důkladná dokumentace
Každý proces testování těží z kompletní dokumentace – často ve formě testovacích případů, které podrobně popisují jednotlivé kontroly a všechny relevantní mutace.
To ilustruje aktuální pokrok týmu v testech, což je užitečné zejména pro manažery a vedoucí pracovníky. Dokumentace každé mutace kódu také pomáhá testerům vést přehledné záznamy o provedených změnách.
Pokud má tým zajišťující kvalitu při testování potíže s nalezením těchto mutací, slouží tyto dokumenty jako klíč k odpovědi.
4. Kvalifikovaní testeři
Testeři, kteří kód mutují, musí mít dobré znalosti o softwaru – včetně mnoha způsobů, jak jej mohou mutovat nebo dokonce rozbít.
Testeři mutací zhruba vědí, jaký dopad budou mít jejich změny na aplikaci a jak by mohli ostatní členové týmu pro zajištění kvality identifikovat mutovaný kód.
To obecně vyžaduje dobrou úroveň znalostí programování. Aby byla analýza mutací účinná, měli by mít testeři softwaru také dobře vyvinuté dovednosti a zkušenosti s testováním.
5. Software pro automatizaci
Před testováním mutací může být nezbytný automatizační software třetí strany vzhledem k množství kontrol, které tento proces často vyžaduje. To platí zejména pro složité aplikace s větším množstvím kódu a funkcí, které musí tým pro zajištění kvality prověřit.
Společnosti mohou tyto kontroly provádět speciálně za účelem testování reakcí automatizačního softwaru na chyby v kódování. To může být základní součástí zkušebního procesu firmy, který rozhoduje o tom, které programy jsou nejužitečnější.
Proces testování mutací
Obvyklé kroky, které testeři při analýze mutací obvykle provádějí, jsou následující:
1. Příprava testů
Příprava je prvním krokem každého procesu testování. To zahrnuje vyjednávání o přesných kontrolách, které je třeba provést, a získání potřebného souhlasu – například od vedení společnosti a zúčastněných stran.
Tito testeři musí tyto kontroly vypracovat tak, aby se přizpůsobili časovému plánu projektu a zároveň pokryli všechny hlavní komponenty. Plánování týmu může rozhodnout o účinnosti jeho mutací kódu.
2. Zavedení mutantů a závad
Po dokončení příprav začne testovací tým měnit kód a mutovat jej podle svého plánu tak, aby se v něm objevily konkrétní chyby. Tyto chyby by měly být relativně drobné, protože tak testeři mohou posoudit schopnost zbytku týmu identifikovat problémy s kódováním.
Drobné závady mohou organizaci také pomoci zkontrolovat citlivost automatizačního softwaru třetí strany.
3. Použití testovacích případů
Testovací případy musí zohlednit všechny možné body selhání aplikace – to může vyžadovat přepsání, pokud je mutantní program schopen fungovat bez chyb.
Testovací případy programu představují celou šíři kontrol, které testeři provádějí; každý z nich by měl testerům pomoci odhalit všechny skryté mutace a být nedílnou součástí použitelnosti aplikace.
4. Porovnání výsledků
Po přidání mutovaných chyb do programu a použití testovacích případů týmu musí tým porovnat výsledky původního a mutovaného programu.
Doufáme, že při každé úspěšné kontrole v originále bude chyba i v mutované aplikaci. To dokazuje schopnosti testerů i nástrojů, které používají.
5. Působit na různé výstupy
Pokud se výstupy mezi původním a mutovaným programem liší podle očekávání testerů, znamená to, že testovací případ může úspěšně zničit mutanta tím, že prokáže jeho přítomnost.
Testeři pak mohou postupovat s důvěrou ve svou metodiku a schopnost identifikovat problémy s kódováním. U těchto konkrétních testů není nutné provádět žádné změny v testovacích případech.
6. V případě potřeby vyměňte pouzdra
Některé mutace kódu mohou vést ke stejným závěrům v různých programech, což naznačuje, že testovací případy nejsou schopny úspěšně upozornit na všechny možné chyby v aplikaci.
V těchto případech zůstává mutant „naživu“ a může nadále ovlivňovat software způsobem, který testeři nemají k dispozici – to vede k vytvoření lepších testovacích případů.
Jak vytvářet mutantní programy
Mutantní programy jsou ve skutečnosti identické s původními programy, až na jednu drobnou změnu, která může ovlivnit funkčnost aplikace malým, ale znatelným způsobem.
Komplexní a podrobné testovací případy pomáhají testerům nebo softwarovému balíku přesně určit tyto změny a z nich vyplývající chyby. Každý případ, který společnost kontroluje, vyžaduje původní i zmutovaný program, který ukazuje účinky každé změny izolovaně.
Programy obvykle replikují reálné chyby, například překlepy v kódování. Pro testery je také důležité vyhnout se „mrtvě narozeným“ mutantům, které brání spuštění aplikace – to je pro testery příliš zřejmé.
Co změnit ve zmutovaném programu?
Stejně jako u mnoha jiných proměnných testování softwaru závisí přesné změny, které testeři provedou, na aplikaci a jejím kódu.
Většinu mutačních testů tvoří tři kategorie: operandy, výrazy a příkazy. Změnou kteréhokoli z nich lze vytvořit efektivní mutantní program – ukazuje se, jak různé hodnoty nebo pravidla ovlivňují samotnou logiku, kterou program používá.
Tyto kategorie se vztahují ke třem hlavním typům mutací, které testeři zkoumají; jedná se o rozhodovací, hodnotové a výrokové mutace. Změny by měly být drobné a nesmí zcela zabránit provedení testu.
Osvědčené postupy pro testování mutací
Při provádění testování mutací v kontextu testování softwaru je vhodné dodržovat určité postupy, které zajistí dobré výsledky, jako například:
1. Maximalizujte mutační skóre
Skóre mutace programu je procento mutantů, které tým nebo aplikace dokáže úspěšně identifikovat nebo „zabít“.
Pokud je například v jednom kole testování mutací 40 mutantů a testeři jich najdou 36, je výsledek testování mutací 90 % – cílem týmu je vždy zajistit výsledek 100 %.
2. Náhodný výběr mutantů
Může sice pomoci určit priority určitých komponent a důkladněji je otestovat, ale je také užitečné, aby testeři náhodně vybírali mutanty, které přidají – zejména v napjatém termínu.
Pokud tyto kontroly reprezentují všechny významné typy mutací, může tým pro zajištění kvality ověřit svou celkovou strategii testování softwaru.
3. Udržujte změny v malém rozsahu
Mutace kódu by měly představovat drobné odchylky od původního programu, protože to ilustruje, s jakou pravděpodobností tester odhalí určité chyby; drobné problémy s kódováním také ukazují, jak citlivý je jeho software.
Je důležité, aby testeři mutací našli rovnováhu, která umožní, aby tyto drobné změny stále vedly k viditelným chybám.
4. Jedna mutace na program
Testování mutací se zabývá jednotlivými testovacími případy izolovaně a kontroluje, jak jsou komplexní. Abyste tomu napomohli, měl by každý mutovaný program obsahovat pouze jednu změnu oproti původnímu.
Programy s více mutacemi nemusí být možné efektivně spárovat s testovacími případy; mutace si mohou vzájemně odporovat.
5. Pečlivě zvažte software pro automatizaci
Společnosti často používají mutaci kódu, aby ověřily, že tým používá automatizační software, a ujistily se, že je schopen identifikovat chyby stejně efektivně jako lidský tester.
To znamená, že výběr správné automatizační platformy může být důležitým faktorem, stejně jako možnost integrace robotické automatizace procesů.
6. Používejte vývoj řízený testy
Vývoj řízený testy (TDD) označuje specifickou techniku, která zohledňuje požadavky na testování v každé fázi vývoje.
To pomáhá zajistit, aby testovací případy byly plně kompatibilní se softwarem – umožňují snadno projít mutačními testy a vytvořit lepší program, který se synchronizuje s procesy zajištění kvality.
Typy výstupů z testu mutací
Existuje několik výstupů, které mutační testy generují, včetně:
1. Mutantní program
Mutantní programy jsou přirozeným výstupem těchto kontrol; testeři je vytvářejí tak, aby odrážely jejich aktuální testovací případy a problémy, které pomáhají odhalit. Programy se obvykle od svého původního protějšku odchylují pouze v jednom drobném, ale významném směru, aby byla zajištěna větší spolehlivost.
2. Živý nebo mrtvý mutant
Po testech je mutace buď „zabita“, nebo zůstane „živá“ – to jednoduše znamená, zda tester (nebo jeho software) úspěšně identifikuje problém s kódováním, nebo ne.
Pokud mutant zůstane naživu, je možné, že testovací případy budou potřebovat vážné změny.
3. Testovací případ mutace
Tým pro zajištění kvality používá samostatné testovací případy specifické pro mutace, které zaznamenávají informace o svých mutovaných programech.
To pomáhá zajistit, aby měl tým k dispozici komplexní záznamy o každé kontrole; tyto dokumenty obsahují podrobnosti o mutacích a jejich účincích na program.
4. Skóre mutací
Konečným cílem každého testu mutací je dosáhnout 100% skóre mutací, přičemž testovací postupy společnosti úspěšně lokalizují a usmrtí každého mutanta. Cokoli menšího než tato hodnota naznačuje, že jejich testovací případy a obecné procesy vyžadují zlepšení, aby bylo možné identifikovat problematický kód.
Příklady testování mutací
Zde jsou tři příklady testování mutací:
1. Příklad mutace hodnot
Mutace hodnot zahrnují změnu konstanty nebo parametru, která může potenciálně změnit limity programu. Software automatického pokladního automatu může například použít hmotnost potraviny k určení její ceny.
Testeři by mohli zmutovat kód tohoto programu a změnit parametry hmotnosti, čímž by se potraviny staly mnohem dražšími za každou unci nebo libru. Tester nebo testovací platforma by měli být schopni identifikovat účinky různých hodnot na tento program.
Protože tato chyba mění jednu z hlavních funkcí softwaru, měly by si testovací případy této chyby všimnout a upozornit na ni tým.
2. Příklad rozhodovací mutace
Rozhodovací mutace zahrnují změnu aritmetického nebo logického operátoru, obrácení nebo jinou změnu způsobu, jakým tato aplikace reaguje na vstup uživatele. Vrátíme-li se k příkladu samoobslužných pokladen, mohou tyto stroje označit položku s neočekávaně vysokou hmotností, případně v důsledku chyby uživatele.
Kód stroje by to mohl provést pomocí rozhodnutí „if (a>b)“ – přičemž „b“ by odráželo očekávanou váhu a „a“ by odpovídalo skutečné váze. Tým může tuto funkci změnit na „if (a≤b)“, čímž se změní reakce pokladny; ta by položku označila i při očekávané hmotnosti.
3. Příklad mutace výroků
Mutace příkazů zahrnují změnu pravidla nebo výstupu – může jít i o úplné odstranění příkazů z aplikace. Tyto mutace mohou být nápadnější než jiné, v závislosti na četnosti výskytu konkrétního výroku; je důležité, aby testeři vybírali výrok s rozmyslem.
Například samoobslužný pokladní automat může zobrazit varování, pokud se uživatel pokusí zakoupit zboží s věkovým omezením. Bez odpovídajícího příkazu může dojít k pádu stroje nebo k tomu, že si zákazník koupí jakoukoli položku.
Tím, že testeři změní výrok a upozorní na něj tým, mohou ověřit, zda jejich přístup tyto problémy zohledňuje.
Typy chyb a nedostatků zjištěných pomocí testování mutací
Mutační testy odhalují problémy především v samotném procesu testování. S ohledem na tuto skutečnost uvádíme řadu problémů, které mohou tyto kontroly pomoci odhalit:
1. Nejasné testovací případy
Pokud analýza mutací odhalí nízké skóre mutací (nebo dokonce jakékoli skóre pod 100 %), znamená to, že testovací případy týmu nejsou schopny zohlednit všechny možné chyby, které mohou aplikaci ovlivnit.
Nemusí být dostatečně konkrétní nebo široké, aby odpovídaly požadavkům týmu. Tyto dokumenty by měly zahrnovat všechny možnosti, se kterými se tým může setkat při testování softwaru, aby byla zajištěna jeho spolehlivost.
2. Nevyškolený testovací tým
Testy mutací mohou také ilustrovat schopnosti týmu, včetně toho, jak dobře osobně identifikuje mutace a jiné chyby. Pokud se jim nepodaří najít mutanty napříč programy navzdory jasným a podrobným testovacím případům, je to potenciálně způsobeno tím, že testeři tyto případy nepoužili správně.
Mutantní programy mohou vykazovat problémy v průběhu celého procesu testování – může se jednat i o nekvalifikované nebo nevyškolené testery.
3. Nevhodný testovací software
Pokud společnost použije tyto kontroly ke kontrole své vlastní testovací platformy, může zjistit, že software nedokáže přesně identifikovat nebo zlikvidovat mutantní kód.
Firma může reagovat zkoumáním jiných možností, dokud nenajde tu, která je kompatibilní s jejími testovacími případy. Pokud automatizační software nenajde problematický kód, bude mít pravděpodobně problém identifikovat další problémy, které ovlivňují software.
4. Neoptimalizovaný kód
Testování mutací může odhalit problémy, které jsou v softwaru již přítomny. Testeři se například mohou pokusit o mutaci kódu, ale sami odhalí kritické chyby.
To slouží jako další důležitá perspektiva programu, která ukazuje, že mutace kódu přináší výhody i mimo proces testování. Čím více testerů tento kód prozkoumá, tím více problémů může tým odhalit a opravit v průběhu testování.
Společné metriky testu mutací
Mezi hlavní metriky, které testy mutací používají, patří:
1. Zabití mutanti
Jedná se o počet mutací, které testeři nebo software dokázali identifikovat a označit jejich existenci, aby zaměstnanci mohli najít takovéto drobné chyby.
Množství mutantů, které testeři zabijí, závisí na síle jejich testovacích případů.
2. Živí mutanti
Živé mutanty jsou ty, které se testerům nebo softwaru nepodaří identifikovat – ukazují na případné mezery ve strategii týmu pro zajištění kvality. Pokud k tomu dojde, měli by testeři překalibrovat svůj postup a testovací případy tak, aby tyto mutanty zohledňovaly, a při dalších kontrolách je vyřadit.
3. Platné mutanty
Tato metrika určuje množství mutací, které byl program schopen úspěšně zahrnout, aniž by chyba běhu zmařila test a jeho účinnost.
Platné mutace jsou takové, které může tester a automatizační software prověřit; to je způsobeno tím, že mutace jsou relativně malé.
4. Neplatní mutanti
Významné mutace by mohly ovlivnit aplikaci natolik, že by testování bylo nepraktické nebo dokonce nemožné – proto pomáhá sledovat, kolik „neplatných“ mutací se v mutovaném programu vyskytuje.
Jejich identifikace umožňuje testerům je upravit nebo dokonce odstranit a zajistit, aby kontroly zahrnovaly pouze platné mutace.
5. Celkový počet mutantů
Počet mutací bez ohledu na jejich platnost je další metrikou, kterou testeři sledují; umožňuje jim to sledovat mutace a zaznamenávat jejich stav.
Vzhledem k tomu, že každá mutace obvykle zahrnuje samostatný test, slouží celkový součet také jako počet celkových mutací kódu.
6. Skóre mutací
Nejužitečnější metrikou pro analýzu mutací je obvykle skóre mutací, což je vlastně procento platných mutací, které byl tester nebo automatizační sada schopna odhalit.
Cokoli, co je méně než 100% detekce, může být známkou nesprávných testovacích postupů.
7 chyb a nástrah při implementaci mutantních testů
Testování mutací je složitý proces, který musí společnosti provádět s rozvahou, aby se vyhnuly závažným problémům nebo chybám. Zde je sedm nástrah, kterým by se testeři měli při provádění testů mutací vyhnout:
1. Nesprávné škálování mutací
Při mutační analýze je důležitým faktorem měřítko, protože tento proces slouží k tomu, aby testeři identifikovali drobné chyby v aplikaci. Pokud je mutace pro testery příliš zřejmá, nemusí to být účinný způsob, jak ověřit jejich schopnost všimnout si problémů se softwarem nebo jim čelit.
2. Neplatné nebo živé mutace
I při správném rozsahu má mnoho mutací pouze omezenou účinnost – například pokud nevedou k závadě nebo vedou k problému, který zastaví fungování aplikace.
Testeři by měli mít na paměti, jak může jakákoli změna kódování ovlivnit celý software.
3. Nekompatibilní testovací případy
Testovací případy a mutace musí být dokonale spárovány, aby bylo zajištěno konzistentní a harmonické testování. Při rozhodování o tom, které mutace přidat, nebo dokonce při navrhování počátečních testovacích případů může tým pro zajištění kvality pracovat na tom, aby bylo zaručeno, že tyto mutace do sebe zapadají a celkově vedou k plynulejšímu testování.
4. Termíny a časové rozvrhy
Fáze testování jsou různě dlouhé, ale vždy by se měly řídit interními termíny společnosti. Firmy, které si řádně nenaplánují testy mutací, nemusí být schopny dokončit proces včas.
Než se projekt dostane do fáze testování, musí tým zajistit, aby byl plán testování dostatečně komplexní.
5. Nedostatečné pokrytí testů
Podniky se mohou rozhodnout zavést mutace svých kodexů náhodně – přesto je důležité, aby pokrývaly širokou škálu otázek.
Aby měli testeři i software jistotu, že odhalí všechny typy mutací, měly by kontroly zahrnovat minimálně několik hodnotových, rozhodovacích a příkazových mutací.
6. Použití mutantů k testování softwaru
Ačkoli testování mutací nabízí nový pohled na aplikaci, týmy musí tuto metodu používat pouze ke kontrole vlastního procesu testování. Společnost musí přesně pochopit možnosti a omezení testování mutací; tato technika může uspět pouze spolu s dalšími kontrolami softwaru.
7. Příliš mnoho mutantů
Je nanejvýš důležité, aby společnosti zajistily široké pokrytí testů, ale mohou při tom implementovat příliš mnoho mutantů. Každý mutační program vyžaduje značný výpočetní výkon, což omezuje počet programů, které může organizace provádět současně.
Příliš mnoho mutací může také ztížit dodržování termínů testování.
Kontrolní seznam, tipy a triky pro testování mutací
Existuje řada dalších tipů, které by mohly pomoci každému týmu zlepšit úspěšnost procesu testování mutací, jako například:
1. Zkontrolujte kompatibilitu programovacího jazyka
Bezplatné i placené nástroje pro testování mutací se obvykle specializují na jeden kódovací jazyk – proto je důležité, aby si testeři vybrali nástroj, který je kompatibilní s aplikací a platformou pro testování softwaru.
Testovací tým by měl prozkoumat mnoho možností, aby se ujistil, že používá program, který vyhovuje jeho rozpočtu i preferovanému kódovacímu jazyku.
2. Moudře rozdělte testy
Různí členové testovacího týmu se pravděpodobně budou zabývat různými aspekty aplikace, což obvykle odpovídá jejich silným a slabým stránkám a celkovým zkušenostem.
Když tým přiděluje mutační testy každému testerovi, měl by na to pamatovat, aby si udělal představu o jeho zdatnosti; to ukazuje, jak dobře bude pravděpodobně probíhat další testování.
3. Pečlivě vybírejte závady
Pokud se v nedávné iteraci softwaru vyskytla chyba týkající se nějaké hodnoty nebo příkazu, mohlo by pomoci ji zopakovat a prozkoumat, jak tým nebo program reaguje.
To pomáhá zaručit dlouhou životnost aplikace a ukazuje schopnost týmu všimnout si předchozích chyb, pokud se opakují – to je klíčová součást regresního testování.
4. Maximalizace výpočetního výkonu
Vzhledem k tomu, že kontroly mutací mohou vyžadovat velký výpočetní výkon, pomáhá to maximálně využít hardware společnosti.
Například pokud mají některé stroje silnější specifikace, mohlo by být užitečné spustit mutanty na těchto zařízeních. Díky tomu se firma vyhne výrazným zpožděním, ke kterým by mohly vést pomalejší stroje.
5. Neodmítejte živé mutace
I v případě přísného harmonogramu by měli testeři pracovat na úpravách a rozšiřování testovacích případů, aby se vypořádali s případnými mutacemi, které proces přežijí.
I když se tyto chyby nemusí zdát významné, pokud je software nebo tester neodhalí, přesto představují selhání testovacích případů při identifikaci všech problémů s kódováním.
6. Prozkoumání nového automatizačního softwaru
Pokud jsou testovací případy týmu dostatečně podrobné, ale jejich automatizovaná testovací sada je nedokáže úspěšně použít k identifikaci jednotlivých mutací, může být pro ně výhodné použít jiný software.
K dispozici je mnoho bezplatných i placených platforem a společnosti by měly prověřit všechny možnosti, aby se ujistily, že mají software, který nejlépe vyhovuje jejich dlouhodobým testovacím případům.
7. Synchronizujte každý proces testování
Spolupráce je klíčovou součástí každé strategie testování – pomáhá zajistit, aby jednotlivé procesy do sebe snadno zapadaly podle záměrů týmu.
Testovací tým by například mohl vypracovat své testovací případy s ohledem na mutaci, aby zajistil vyšší úroveň kompatibility a usnadnil tak testerům ověřování jejich strategie.
8. Používejte jednotkové testování
Testování jednotek umožňuje týmu zajišťujícímu kvalitu kontrolovat jednotlivé části kódu izolovaně, což výrazně zjednodušuje testy a usnadňuje týmům identifikaci problémů.
Tato kombinace může být užitečná zejména v případě, že se testeři obávají termínů, protože jim dává příležitost zjednodušit kontroly a zlepšit celkové pokrytí – což vede k mnohem silnějším softwarovým testům.
9. Napište podrobné testovací případy
Testovací případy mutací by měly obsahovat adekvátní informace o mutantech a jejich vlivu na program a také o tom, jak testovací tým nebo platforma tyto chyby lokalizovaly.
Poskytnutím co nejvíce podrobností může tester osobně ověřit testovací případ a ujistit se, že tým přesně ví, jak zajistit hladký průběh testování.
5 nejlepších nástrojů pro testování mutací
K dispozici je široká škála nástrojů, které mohou společnostem pomoci s jejich požadavky na testování mutací. Jak už to u aplikací pro testování softwaru bývá, ceny a funkce se u jednotlivých platforem liší, a proto je důležité, aby si organizace vybraly tu, která nejlépe vyhovuje jejich potřebám.
Některé z těchto programů mohou nabízet bezplatné protějšky nebo být zcela open source; za větší pohodlí je však obvykle nutné platit.
S ohledem na to vám představujeme pět nejlepších nástrojů pro testování mutací.
1. Stryker
Společnost Stryker se specializuje na mutaci JavaScriptu a výrazně tento proces zjednodušuje, čímž zaručuje, že nedojde k falešně pozitivním výsledkům, a snižuje celkové úsilí, které by jinak testeři museli vynaložit na všechny kontroly mutací.
Platforma Stryker inteligentně vyhodnocuje software a na základě shromážděných informací určuje řetězce nebo segmenty kódu, které by bylo vhodné mutovat. Tato aplikace je vybavena přehledným textovým reportérem, který zobrazuje souhrnné informace o mutantovi, včetně toho, zda ho Stryker dokázal zabít.
2. PITest
PITest je velmi oblíbený po celém světě díky své schopnosti měnit byte-kód Javy a provádět tisíce mutací za sekundu. Tato aplikace využívá data o pokrytí testovacích případů k okamžitému zjištění, které testy by mohly zabít mutanta.
Provádí pouze testy, o kterých ví, že budou relevantní, čímž omezuje výpočetní výkon, který tento postup obvykle spotřebovává. PITest je také kompatibilní s většinou forem zásuvného modulu Surefire pro testování jednotek, ale může mít potíže s efektivní správou závislostí pořadí testů.
3. Pojistit++
Insure++ má mnoho testovacích funkcí, včetně mutační analýzy, která umožňuje platformě odhalit nejednoznačnosti v programu. Od běžného testování mutací se Insure++ vzdává generování chybných mutantů a místo toho vytváří funkčně ekvivalentní mutace, které odpovídají zdrojovému kódu projektu.
Tím se zabrání implicitním předpokladům, které mohou neúmyslně omezit proces testování a nemusí odrážet reálné testovací prostředí. Jak už název napovídá, platforma je kompatibilní především s programy v jazyce C++ a všechny její funkce jsou přizpůsobeny tomuto jazyku.
4. Jumble
Tato aplikace se specializuje na framework JUnit JavaScript s komplexními vizuálními indikátory toho, jak kód reaguje na mutační analýzu. Jumble je platforma s otevřeným zdrojovým kódem a pracuje v rámci bajtového kódu aplikací v jazyce Java, čímž snižuje čas každého testovacího cyklu.
Podobné aplikace, které používají výhradně zdrojový kód programu, mohou někdy tyto kontroly provádět déle kvůli procesu překompilování.
Jumble také využívá heuristiku k další optimalizaci testování mutací, což zjednodušuje následné testy.
5. MutPy
MutPy podporuje mutační testy pro aplikace v jazyce Python a nabízí plnou podporu mutací vysokého řádu i komplexní analýzu pokrytí. Rozhraní tohoto programu se snadno používá ve výstupní fázi, která uživatelům přehledně zobrazuje všechny podstatné detaily mutačních testů týmu.
MutPy nabízí testerům mnoho možností na míru, které jim umožňují přizpůsobit tento software svým požadavkům. Platforma používá abstraktní syntaktické stromy, které poskytují jasnou strukturu zdrojového kódu aplikace, což testerům poskytuje větší důvěru v jejich mutace.
Závěr
Mutaci kódu lze použít téměř v každém procesu testování softwaru a nabízí řadu jasných výhod pro společnosti, které tuto techniku zavedou – zejména v dřívější fázi zajištění kvality.
Žádná metodika není bez problémů; to znamená, že je nutné, aby organizace moudře zvážily výhody mutační analýzy a zároveň se ujistily, že odpovídá jejich obvyklému časovému plánu vývoje softwaru.
Tyto mutace dávají testovacím týmům možnost prověřit vlastní přístup a určit jeho účinnost při vyhledávání a odstraňování chyb ve zdrojovém kódu. Tato technika je obzvláště kompatibilní s automatizačními postupy a umožňuje firmám ověřit software, kterému důvěřují při provádění kontrol.
Testování mutací nabízí komplexní způsob, jak mohou týmy zajišťující kvalitu lépe porozumět svým vlastním procesům a softwaru, včetně problémů, které by jinak neodhalili.
Proto je důležité, aby testovací týmy tuto techniku důkladně prozkoumaly a posoudily, zda odpovídá potřebám organizace – včetně toho, zda je zvolený mutační nástroj plně kompatibilní s jejich programovacím jazykem. Software pro automatizované testování ZAPTEST se může pochlubit mnoha funkcemi, které mu umožňují projít mutačními testy, takže týmy mají plnou důvěru v jeho schopnosti.
Verze Free i Enterprise nabízejí vysoce kvalitní testovací proces, který se snadno přizpůsobí změnám kódu.
Často kladené dotazy a zdroje
1. Nejlepší kurzy testování mutací
Online kurzy mohou pomoci začínajícím testerům naučit se základy mutace kódu nebo posílit již existující dovednosti zkušených pracovníků v oblasti zajištění kvality. Obecné lekce testování softwaru mohou testerům přinést také mnoho výhod. Mezi nejlepší online kurzy pro testery mutací patří:
– Publikace ‚Mutation Testing in Java with PITest‘ společnosti PluralSight se zabývá konkrétně tím, jak změnit kód Javy a jak by tento přístup mohl být přínosem pro praktické procesy testování softwaru.
– Udemy ‚The Complete 2023 Software Testing Bootcamp‘ je mimořádně aktuální kurz, který ilustruje všechny klíčové součásti testování softwaru, včetně testování white-box.
– Alisonina kniha ‚Software Testing – Condition Coverage and Mutation Testing Strategies‘ je zdarma a podrobně zkoumá, jak rozumně implementovat testování mutací.
– Kniha ‚Základy testování jednotek‘ od společnosti PluralSight se zabývá výhodami a vlastnostmi testování jednotek a pomáhá studentům pochopit přesný postup psaní silných testů jednotek.
– Dalším bezplatným kurzem je „Úvod do testování jednotek“ na Udemy, který poskytuje jasný přehled o testování jednotek i o důležitosti strategií vývoje řízeného testy.
2. Jakých je 5 nejčastějších otázek při pohovoru na téma testování mutací?
Firmy mohou uchazečům během pohovoru položit řadu otázek, aby si ověřily jejich zkušenosti nebo porozumění testování mutací a jeho základním principům. Společnost si tak může být jistá, že najme kvalifikovaného testera, který dokáže snadno přistupovat k různým scénářům souvisejícím s mutacemi.
Přesné otázky se mohou lišit, ale mohou zahrnovat i dotazy na jejich vlastní názory nebo příklady jejich dovedností v oblasti mutace kódu.
Pět nejčastějších otázek při pohovoru o testování mutací:
– S jakými nástroji pro testování mutací máte předchozí zkušenosti, pokud nějaké máte? Jaké byly hlavní funkce tohoto softwaru?
– Jak byste při provádění mutace kódu zajistili zdravou rovnováhu mezi rychlostí a hloubkou testování?
– V jakých situacích by mutační analýza nebyla možná? Jak byste kontrolovali postup testování v těchto scénářích?
– Pokud se mutaci hodnoty podaří přežít testovací proces, jak byste postupovali, aby se to neopakovalo?
– Jaké informace byste uvedli v testovacím případu mutace, abyste zaručili, že vaši kolegové budou mít k dispozici potřebná data?
3. Nejlepší výukové programy na YouTube o testování mutací
Na YouTube jsou k dispozici bezplatné výukové programy, webové semináře a další videa, která testerům pomohou lépe porozumět testování mutací. Mezi nejužitečnější videa a seriály na toto téma patří:
– Software Testing ‚Mutation Testing for Programs‘, která poskytuje praktické příklady toho, jak mutace kódu pomáhá programům, spolu s návodem, jak psát důkladné testovací případy.
– Testování mutací společnosti Devoxx: V tomto článku se zabýváme tím, jak analýza mutací zlepšuje celkové postupy testování pro všechny druhy softwarových projektů.
– Konference NDC „Zabijte všechny mutanty! Intro to Mutation Testing“, která zkoumá, jak mohou testovací sady těžit z mutace kódu a chyb, které pomáhá vytvářet.
– GOTO Conferences ‚Mutation Testing in Python‘, která se konkrétně zabývá tím, jak lze v aplikacích založených na Pythonu použít mutační analýzu k dosažení konkrétních cílů testování.
– Diega Pacheca ‚Java Mutation Testing With PITest‘, který podobně ilustruje, jak software v JavaScriptu používá mutaci kódu – se zaměřením na mutační program PITest.
4. Jak udržovat testy mutací?
Kombinace analýzy mutací s regresním testováním a dalšími dlouhodobými strategiemi umožňuje společnostem zajistit vysoký standard zajištění kvality i po vydání.
Následné aktualizace mohou vést ke změnám kódu, které vyžadují další kontroly. Testování mutací ukazuje, že automatizační software a testeři jsou konzistentní v různých verzích téhož softwaru, což znovu potvrzuje jejich konkrétní přístup.
Nové funkce vyžadují nové testovací případy, zejména pokud tyto funkce interagují s již existujícími funkcemi.
Kromě toho umožňuje použití testováním řízeného vývoje členům týmu plánovat životnost softwaru a testovat kompatibilitu v rámci vlastního vývojového cyklu.