Co je dynamické testování? Typy, techniky a příklady

⚡ Chytré shrnutí

Dynamické testování spouští aplikaci a sleduje, jak se běžící kód chová s reálnými vstupy, takže testeři mohou ověřit funkčnost, výkon a stabilitu, které žádné množství kontroly dokumentace nedokáže odhalit.

  • 🎯 Účel: Ověřujte skutečné chování za běhu, nikoli dokumenty, které ho popisují.
  • 🔀 Dvě větve: Bílá skříňka zkoumá kód, černá skříňka zkoumá chování.
  • 🧱 Čtyři úrovně: Jednotkové, integrační, systémové a akceptační testování – všechny spouštějí kód.
  • ⚙️ Nefunkční: Zde se provádějí kontroly výkonu, obnovy, kompatibility, zabezpečení a použitelnosti.
  • 🔄 Process: Strategie, návrh testů, nastavení prostředí, provedení a hlášení chyb.
  • ???? Kompromis: Hloubější detekce vad za méně času, prostředí a nákladů.

Typy, techniky a příklady dynamického testování

Co je dynamické testování?

Dynamické testování je metoda testování softwaru používaná k testování dynamického chování softwarového kódu. Hlavním účelem dynamického testování je zkoumat chování softwaru s dynamickými proměnnými – proměnnými, které nejsou konstantní – a najít slabá místa v běhovém prostředí softwaru. Pro otestování dynamického chování je nutné spustit kód.

Testování je ověření a validacea k dokončení testování jsou zapotřebí obě V. Ověření se provádí statickým testováním, které kontroluje požadavky, návrhovou dokumentaci a kód bez jejich spuštění. Validace se provádí dynamickým testováním, které spouští sestavení a porovnává, co aplikace skutečně dělá, s tím, co by měla dělat.

Níže uvedená tabulka je na první pohled odlišuje.

Vzhled Statické testování (ověřování) Dynamické testování (validace)
Code popraven Ne Ano
Typické činnosti Revprohlídky, prohlídky, inspekce, statické analýzy Provedení testovacích případů na všech úrovních testování
Odpověď na otázku Vytváříme produkt správně? Vytváříme ten správný produkt?
Byly nalezeny závady Nejednoznačné požadavky, porušení kódovacích standardů, mrtvý kód Špatný výstup, úniky paměti, chyby časování, selhání integrace
Začíná Jakmile existuje artefakt Jakmile existuje spustitelný soubor sestavení
Relativní náklady na opravu Nižší, protože vady jsou odhaleny dříve Vyšší, protože vady se objeví později

Příklad dynamického testování

Krátký příklad ukazuje, jak se dynamické testování chová v praxi.

Předpokládejme, že se testuje přihlašovací stránka. Má dvě pole, Uživatelské jméno a Heslo, a Uživatelské jméno je omezeno na alfanumerické znaky.

Když uživatel zadá uživatelské jméno jako „Guru99“, systém jej akceptuje. Když uživatel zadá „Guru99@123“, aplikace vyvolá chybovou zprávu. Tento výsledek ukazuje, že kód reaguje dynamicky na základě vstupu uživatele.

Dynamické testování tedy znamená práci se skutečným systémem, poskytování vstupních dat a porovnávání skutečného chování aplikace s očekávaným chováním – jinými slovy práci se systémem s cílem najít chyby.

Dynamické testování je tedy proces validace softwarové aplikace tak, jak by to udělal koncový uživatel v různých prostředích, aby vytvořil správný software.

Co dělá dynamické testování?

Hlavním cílem dynamických testů je zajistit, aby software fungoval správně během instalace i po ní a poskytoval stabilní aplikaci bez větších chyb. Žádný software není zcela bez chyb a testování může ukázat přítomnost vad, ale nikdy jejich absenci.

Dynamické testy také zajišťují konzistenci v celém softwaru, jak ukazuje tento příklad.

V bankovní aplikaci je několik obrazovek, například Moje účty, Převod finančních prostředků a Bill Platba. Všechny obsahují pole s částkou.

Předpokládejme, že v poli Moje účty je zobrazena částka 25 000, v poli Převod finančních prostředků je zobrazena částka 25 000 USD a Bill Na výplatní obrazovce se zobrazuje 25 000 dolarů. Částka je stejná, ale způsob jejího zobrazení není stejný, což způsobuje nekonzistenci softwaru.

Konzistence se neomezuje pouze na funkčnost. Zahrnuje také standardy, jako je výkon, použitelnost a kompatibilita, a proto je dynamické testování tak důležité.

Typy dynamického testování

Dynamické testování se dělí do dvou kategorií.

  • Bílá Box Testování
  • Černá Box Testování

Níže uvedený diagram znázorňuje obě kategorie oproti úrovním testování, které se nacházejí pod nimi.

Dynamické testování rozdělené na bílou a černou skříňku s funkční a nefunkční úrovní

Každý typ a jeho zamýšlený účel jsou popsány níže.

Bílá Box Testování — metoda testování softwaru, při které je testerovi známa vnitřní struktura a design. Jejím hlavním cílem je ověřit, jak systém funguje na základě kódu. Provádějí ji převážně vývojáři nebo testeři „white box“, kteří mají znalosti programování.

Černá Box Testování — metoda testování, při které tester NENÍ známa vnitřní struktura, kód a návrh. Jejím hlavním cílem je ověřit funkčnost testovaného systému. Tento typ testování vyžaduje provedení kompletní sady testů, provádějí ho převážně testeři a nevyžaduje žádné znalosti programování.

Testování černé skříňky se opět dělí na dva typy.

  • Funkční testování
  • Nefunkční testování

Funkční testování

Funkční testování se provádí za účelem ověření, zda všechny vyvinuté funkce odpovídají funkčním specifikacím. Provádí se spuštěním funkčního testovací případy napsané týmem QA. V této fázi je systém testován poskytnutím vstupních dat, ověřením výstupních dat a porovnáním skutečných výsledků s očekávanými výsledky.

Existují různé úrovně funkčního testování, z nichž nejdůležitější jsou níže uvedené čtyři.

  • Testování jednotek — jednotka je malý, testovatelný kousek kódu. Jednotkové testování se provádí na jednotlivé jednotce softwaru a provádějí ho vývojáři.
  • Testování integrace — provádí se po jednotkovém testování kombinací jednotlivých testovatelných jednotek. Provádějí ho buď vývojáři, nebo testeři.
  • Testování systému — provádí se za účelem zajištění toho, aby systém fungoval podle požadavků. Obvykle se provádí testery, když je systém hotový, jakmile je sestavení uvolněno týmu QA.
  • Akceptační testování — provádí se za účelem ověření, zda systém splňuje obchodní požadavky a je připraven k použití nebo nasazení. Obvykle jej provádějí koncoví uživatelé.

Nefunkční testování

Nefunkční testování je testovací technika, která se nezaměřuje na funkční aspekty, ale místo toho se soustředí na nefunkční atributy systému, jako jsou úniky paměti, výkon nebo robustnost. Nefunkční testování se provádí na všech úrovních testování.

Existuje mnoho technik nefunkčního testování, z nichž nejdůležitějších je pět níže uvedených.

  • Testování výkonu — kontroluje, zda je doba odezvy systému normální, dle požadavků, při požadovaném zatížení sítě.
  • Testování zotavení — ověřuje, jak dobře se systém zotavuje z havárií a selhání hardwaru.
  • Testování kompatibility — ověřuje, jak se systém chová v různých prostředích.
  • Testování bezpečnosti — ověřuje robustnost aplikace a zajišťuje, aby k systému měli přístup pouze autorizovaní uživatelé a role.
  • Testování použitelnosti — ověřuje použitelnost systému koncovými uživateli a to, jak se s ním tito uživatelé cítí dobře.

Dynamické testovací techniky

Po stanovení typů je další otázkou, jak se dynamický testovací cyklus vlastně spouští.

Techniky dynamického testování v STLC se skládají z úkolů, jako je analýza požadavků na testy, plánování testů, návrh a implementace testovacích případů, nastavení testovacího prostředí, provedení testovacích případů, hlášení chyb a nakonec uzavření testu. Každý úkol v dynamickém testování závisí na dokončení předchozího úkolu v testovacím procesu.

V rámci STLC začíná skutečný proces dynamického testování návrhem testovacího případu. Níže uvedený diagram ukazuje sled aktivit, z nichž každá je popsána dále.

Tok dynamického testovacího procesu od návrhu testu přes jeho provedení až po hlášení chyb

Před zahájením procesu je nutné dohodnout strategii, která se bude při dynamickém testování dodržovat.

Testovací strategie by se měla zaměřit především na dostupné zdroje a časový rámec. Na základě těchto dvou faktorů je nutné zdokumentovat cíl testování, rozsah testování, fáze nebo cykly testování, typ prostředí, předpoklady nebo výzvy, kterým lze čelit, a rizika.

Jakmile je strategie definována a schválena managementem, začíná samotný proces návrhu testovacího případu.

Návrh a implementace testů

V této fázi tým identifikuje následující.

  • Vlastnosti k testování
  • Zkušební podmínky odvozené z těchto vlastností
  • Položky pokrytí odvozené z testovacích podmínek
  • Testovací případy odvozené z položek pokrytí

Černá skříňka techniky návrhu testů jako je ekvivalenční dělení, analýza okrajových hodnot, testování rozhodovacích tabulek a testování přechodu stavů jsou to, co promění testovací podmínku v konkrétní sadu spustitelných případů.

Nastavení testovacího prostředí

Jedno testovací prostředí by mělo být vždy podobné produkčnímu prostředí. V této fázi se instaluje sestavení a spravují se a konfigurují testovací počítače.

Provedení testu

Během této fáze se testovací případy skutečně provádějí, buď ručně, nebo pomocí automatizacea skutečné výsledky se zaznamenávají oproti očekávaným výsledkům.

Zpráva o chybě zachycena

Na základě provedení, pokud se očekávané a skutečné výsledky neshodují, musí být testovací případ označen jako Neúspěšný a chyba musí být zaznamenána v správa vad proces.

Výhody dynamického testování

  • Dynamické testování odhaluje vady, které jsou považovány za příliš obtížné nebo složité k odhalení a které statická analýza vůbec nedokáže pokrýt.
  • Software je prováděn od začátku do konce, což zvyšuje kvalitu produktu i projektu.
  • Dynamické testování je základním prostředkem pro detekci bezpečnostních hrozeb v běžícím systému.
  • Chyby související pouze s během, jako jsou úniky paměti, problémy s časováním a selhání integrace, se objevují zde a nikde jinde.

Nevýhody dynamického testování

  • Dynamické testování je časově náročné, protože spuštění aplikace nebo kódu vyžaduje velké množství zdrojů.
  • Zvyšuje to náklady na projekt, protože nezačíná v rané fázi životního cyklu softwaru a problémy opravené v pozdějších fázích jsou dražší.
  • Provozní prostředí podobné produkčnímu a realistická testovací data jsou nezbytnými předpoklady a obojí vyžaduje úsilí k vytvoření a údržbě.

Nejčastější dotazy

Vývojáři mají na starosti „bílou skříňku“ a provádějí kontroly jednotek a komponent. QA testeři mají na starosti „černou skříňku“, od testování systému dále. Koncoví uživatelé uzavírají cyklus akceptačním testováním.

Modely čtou požadavky a existující případy a poté navrhují hraniční hodnoty, neplatné vstupy a stavové sekvence, které lidský backlog obvykle přeskakuje. Tester stále před spuštěním potvrzuje každý očekávaný výsledek.

Ano. Scaffolding assertů, objekty stránek a nastavení fixtur jsou repetitivní kód, který asistent zvládá dobře. Rozhodování o tom, co představuje správné chování, zůstává lidským úsudkem zakořeněným v požadavcích.

Jednotkové rámce, jako například JUnit, TestNG a pytest, plus běžce uživatelského rozhraní a API, jako například Selenium, Cypress a PostmanNačtěte nástroje, jako například JMeter zakrýt nefunkční stránku automatizace.

Výkazy o práci v bílé skříňce, pokrytí větví a cest z instrumentovaných běhů. Požadavky na zprávy o práci v černé skříňce a pokrytí testovacích podmínek. Ani jedno z těchto čísel samo o sobě nedokazuje, že je sestavení dostatečně otestováno.

Ne. Dynamické testování popisuje spuštění kódu, ať už jej řídí kdokoli nebo cokoli. Skriptovaný manuál run i sada automatizovaných regresních testů jsou dynamické testy.

Ano. Dynamické testování bezpečnosti aplikací zkoumá běžící aplikaci zvenčí, přesně jako černá skříňka. bezpečnostní testování dělá to a hlásí zranitelnosti, které se objevují pouze za běhu.

Je to páteř jednoho. Jednotky a sady API brání každému commitu, zatímco delší regrese a běhy pro sledování výkonu se provádějí každou noc s nasazeným sestavením.

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