Co je destruktivní testování v softwaru?

⚡ Chytré shrnutí

Destruktivní testování záměrně tlačí softwarovou aplikaci do selhání a odhaluje přesné body, kde se robustnost narušuje v důsledku nesprávného použití, neplatných vstupů a nepředvídatelného chování, kam běžné funkční kontroly nikdy nedosáhnou.

  • ???? Základní myšlenka: Aplikace je záměrně vytvořena tak, aby selhávala, a tím se zajistily viditelné a měřitelné body selhání.
  • 🔎 Nejsou vyžadovány žádné požadavky: Předchozí znalost specifikace je volitelná, i když zdokonaluje testovací strategii.
  • 🇧🇷 Opačný pár: Nedestruktivní testování jde šťastnou cestou; destruktivní testování na něj útočí ze všech špatných úhlů.
  • 🧰 Přístupy: Analýza bodů selhání, vzájemné hodnocení testerů, obchodní hodnocení a průzkumné běhy s protokoly běhů.
  • 🧪 Znovu použité metody: Regrese, rozhraní, dělení ekvivalence, smyčky a akceptační testování – to vše slouží destruktivním cílům.
  • 📉 Poctivá omezení: Pokrytí je těžké zaručit, úsilí je vysoké a zjištění může být obtížné reprodukovat.

Co je destruktivní testování softwaru s metodami a technikami

Co je destruktivní testování?

Destruktivní testování je metoda testování softwaru používaná k nalezení bodů selhání v softwarovém programu. Při této technice je aplikace záměrně nastavena tak, aby selhala, aby bylo možné ověřit její robustnost a identifikovat body selhání. Na rozdíl od testovacích metod, které ověřují, co má aplikace dělat, destruktivní testování zkoumá nepředvídatelné chování uživatele uvnitř aplikace.

Znalost původních požadavků není pro destruktivní testování nutná. Některé znalosti však pomáhají při vývojiping dobrá testovací strategie.

Níže uvedená ilustrace zachycuje myšlenku – tester pracuje proti produktu, nikoli s ním.

Koncept destruktivního testování: aplikace záměrně tlačená do bodu selhání

Proč provádět destruktivní testování?

  • Pomáhá pochopit předvídatelné chování softwaru, když je software používán nesprávně.
  • Pomáhá kontrolovat robustnost softwarového produktu.
  • Odhaluje vzácné vady, které běžní uživatelé nikdy nespustí, ale objeví se později ve výrobě.

Destruktivní testování vs. nedestruktivní testování

Tyto dva přístupy se doplňují, nikoli soupeří. Nedestruktivní testování – nazývané také pozitivní testování nebo testování šťastné cesty – interaguje se softwarem správně a ponechává sestavu neporušenou. Destruktivní testování dělá opak: poskytuje neplatná data a nesprávné sekvence, dokud se něco nepokazí.

Vzhled Destruktivní testování Nedestruktivní testování
Úmysl Vynutit selhání aplikace Ověřte, zda aplikace funguje podle specifikace
Použitý vstup Neplatné, chybně formátované, mimo rozsah, mimo sekvenci Platná data v očekávaném rozsahu
Odpověď na otázku Kde a jak se to láme? Dělá to, co by mělo?
Znalost požadavků volitelný Základní
Typická cena Vyšší – průzkumné a otevřené Nižší – skriptované a opakovatelné
Výsledek Body selhání, limity rozsahu, chování při obnově Splňuje nebo nesplňuje specifikaci

Co se kontroluje při destruktivním testování?

Destruktivní testování se zaměřuje na obě strany hranice chování:

  • Správné chování softwaru
  • Nesprávné chování softwaru
  • Nesprávné použití
  • Nesprávná vstupní data
  • Správná výstupní data

Během celého cvičení musí být splněny dvě podmínky:

  • Software nikdy nezpracuje ani nepřijme neplatná vstupní data.
  • Bez ohledu na platnost nebo správnost vstupních dat by software měl vždy produkovat správná výstupní data.

Jak provést destruktivní testování?

Destruktivní testování zahrnuje mnoho činností, jako je návrh sady testovacích skriptů, jejich spuštění, hlášení chyb, uzavírání chyb a poskytování metrik úspěšnosti nebo neúspěchu zúčastněným stranám na konci iterace.

Existuje mnoho způsobů, jak jej spustit. Následuje několik příkladů.

  • Metoda analýzy bodu selhání: prohlídka systému, která vyhodnocuje, co by se mohlo v různých okamžicích pokazit. Pomoc od Obchodní analytik lze pro tuto strategii použít.
  • Vzájemné hodnocení testerů: dostat své testovací případy analyzováno nebo zkontrolováno kolegou testerem, který je s daným systémem nebo funkcí méně obeznámen.
  • Obchodní analýza testovacích případů: Koncoví uživatelé nebo odborníci často vymýšlejí platné scénáře, které testeři přehlížejí, protože se tester zaměřuje na uvedené požadavky.
  • Proveďte průzkumné testování pomocí testovacích protokolů: průzkumné testování s protokoly o provedení testů zaznamenává, co bylo testováno, umožňuje opakování testů a udržuje pokrytí testy pod kontrolou.
  • Použijte jiný zdroj: požádejte někoho jiného, ​​aby rozbil softwarový produkt a analyzoval nalezené scénáře.

Příklad destruktivního testování

Vezměte si přihlašovací a profilovou obrazovku bankovní aplikace. Destruktivní přístup by fungoval v případech, jako jsou tyto:

  • Vložte řetězec o délce 5 000 znaků do pole omezeného na 50 znaků a ověřte, zda jej pole odmítá, místo aby jej tiše zkrátilo.
  • Zadejte písmena, symboly a záporné hodnoty do číselného pole pro částku.
  • Přerušte očekávanou sekvenci – otevřete stránku s potvrzením platby přímo bez dokončení předchozího kroku.
  • Opakovaně a rychle po sobě stiskněte tlačítko Odeslat, abyste zjistili, zda se nevytvořily duplicitní záznamy.
  • Odpojte síť uprostřed transakce a zkontrolujte, zda se aplikace bez problémů obnoví, nebo zanechá jen částečný záznam.

Každý případ má definované očekávání: jasná ověřovací zpráva, žádné poškození dat a žádné neošetřené výjimky. Cokoli jiného je bod selhání, který stojí za to označit za vadu.

Metody destruktivního testování

V softwarovém inženýrství se k dosažení cílů destruktivního testování používají následující metody:

Destruktivní testovací techniky

Níže uvedené techniky lze použít s úpravami:

Související techniky, které stojí za to přidat, když je cílem robustnost, jsou negativní testování, stresové testování, testování obnovy a testování fuzzu.

Výhody a nevýhody destruktivního testování

Kompromis je třeba jasně uvést před plánovaným uvedením techniky na trh.

Výhody

  • Revidentifikuje body selhání, kterých testování řízené specifikacemi nikdy nedosáhne.
  • Stanovuje skutečné limity dosahu, takže produkt lze v nich s jistotou provozovat.
  • Odhaluje vzácné vady, které se objevují ve výrobě dlouho po uvedení na trh.
  • Kontroluje trvanlivost, obnovitelnost a ošetření chyb při zneužití.

Nevýhody

  • Otevřená povaha, takže krytí nelze snadno zaručit ani měřit.
  • Časově náročné a závislé na zkušenostech a kreativitě testera.
  • Bez pečlivého zaznamenávání použitých kroků může být obtížné reprodukovat zjištění.
  • Špatně kontrolované běhy mohou poškodit sdílená testovací data, proto je nutné izolované prostředí.

Nejčastější dotazy

Překrývají se, ale liší se rozsahem. Negativní testování kontroluje definované neplatné vstupy oproti očekávanému zpracování chyb. Destruktivní testování je širší a otevřené a hledá jakoukoli podmínku, která způsobí selhání aplikace.

Obvykle zkušení inženýři QA, podporovaní kolegy, kteří s modulem nejsou obeznámeni, a firemními uživateli. Na vnějším pohledu záleží, protože lidé, kteří danou funkci vytvořili, ji obvykle testují tak, jak byla navržena.

Poté, co je funkční sada stabilní, selhání poukazují spíše na robustnost než na nedokončené funkce. Mnoho týmů to plánuje během systémového testování a opakuje to před hlavními vydáními v životní cyklus testování.

Modely generují chybně tvarované datové zátěže, hraniční hodnoty a neobvyklé akční sekvence v množství, kterému žádný tester nedokáže odolat, a poté seřazují ty, které anomálie způsobily. Strojové učení na základě dat o minulých závadách také předpovídá, které moduly si zaslouží nejpřísnější zacházení.

GitHub Copilot rychle navrhuje vstupní generátory, okrajové případy a postupy pro demontáž. Tester stále rozhoduje, které režimy selhání jsou důležité a zda se pozorované chování považuje za přijatelný výsledek.

Přesný použitý vstup nebo sekvence, pozorované selhání, protokoly a snímky obrazovky, prostředí a závažnost dopadu. Metriky úspěšnosti nebo neúspěchu iterace se předávají zúčastněným stranám spolu s záznamy o závadách.

Nikdy by se neměl dotýkat produkčního prostředí. Spouštějte ho v izolovaném prostředí s obnovitelnými daty, protože úmyslně neplatné vstupy a vynucené pády mohou zanechat částečné záznamy, jejichž čištění je nákladné.

Během relace si veďte průběžný protokol, do kterého zaznamenáváte každou akci a vstup v daném pořadí. Přehrajte protokol z čistého stavu a poté jej zkraťte na nejkratší sekvenci, která stále spouští selhání.

Shrňte tento příspěvek takto: