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.
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.
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.
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ě.


