Blog

Miroslav Renda

Miroslav Renda

Senior Test Manager

Sedm typů testování výkonnosti

Vzdělávání Přístupy k testování Testování výkonnosti

Objevte sedm nejdůležitějších typů testování výkonnosti! V nejnovějším článku zjistíte, proč je testování výkonnosti nezbytné a s jakými typy testů výkonnosti se na projektech nejčastěji setkáváme. Navíc se dozvíte, jaké jsou jejich klíčové benefity a jaké nástroje se vám budou k testování hodit.

Testování výkonnosti vyhodnocuje kvalitu systému měřením toho, jak dobře si vede ve srovnání s definovaným výkonnostními požadavky (non-functional requirements). Když říkáme „systém“, máme na mysli jakoukoli kombinaci HW a SW komponent. Tento typ testování se zaměřuje na klíčové metriky, jako jsou rychlost zpracování, rychlosti přenosu dat, využití sítě, počet uživatelů, které systém zvládne najednou obsloužit, využití paměti a celkovou efektivitu. Hlavním cílem je posoudit požadavky na výkonnost systému, nikoli hledat defekty ve funkčnosti systému. 

Testování výkonnosti je klíčovým krokem v procesu vývoje IT systémů. Poté, co je systém navržen a vyvinut, musí splňovat určitá kritéria výkonnosti. Testování výkonnosti tedy napomáhá tomu, že systém je připraven pro komerční nasazení a má očekávanou úroveň kvality. 

Testování výkonnosti je nezbytné, protože poskytuje cenné informace o škálovatelnosti, spolehlivosti a odolnosti aplikace. Nicméně vytvoření účinné strategie může být náročné, protože zahrnuje různé specializované typy testů, které je třeba aplikovat specifickým způsobem.  

V našich testovacích projektech kombinujeme následující typy testů výkonnosti:

  1. Zátěžové testování (load testing)
  2. Stresové testování (stress testing)
  3. Testování dlouhodobého zatížení (soak testing)
  4. Testování špičkového zatížení (spike testing)
  5. Testování škálovatelnosti (scalability testing)
  6. Testování objemu dat (volume testing)
  7. Testování souběžnosti (concurrency testing)


Zátěžové testování (load testing)

Zátěžové testování hodnotí výkonnost systému při specifikované typické zátěži systému, aby bylo zajištěno, že systém zvládne reálné požadavky bez pádu nebo zpomalení. Tento typ testování je klíčový pro webové stránky, webové aplikace a další softwarové aplikace.

Příklad

Testování nového e-commerce systému probíhá po dobu 5 minut, přičemž jsou simulovány 3 typické scénáře užití současně. Scénář A provádí 50 souběžných virtuálních uživatelů (VUs), scénář B provádí 120 VUs a scénář C provádí 80 VUs. Počty souběžných virtuálních uživatelů jsou výsledkem analýzy typického provozu, který aktuální systém zvládá.

Sedm typů testování výkonnosti

Klíčové výhody

  • Zlepšuje přehled o výkonnosti a škálovatelnosti.
  • Snižuje rizika výpadků a ztráty dat.
  • Šetří čas i peníze.


Stresové testování (stress testing)

Stresové testování hodnotí schopnost systému zvládnout extrémní podmínky. Na rozdíl od zátěžového testování, které hodnotí výkonnost systému při typické zátěži, stresové testování simuluje zatížení systému nad rámec běžných provozních podmínek, aby bylo zjištěno, jak reaguje v kritických situacích.

Příklad

Podoba generované zátěže je podobná jako v příkladu pro zátěžové testování. Pouze počet souběžných virtuálních uživatelů může být násobně vyšší ve srovnání s hodnotami použitými při zátěžovém testování.

Klíčové výhody

  • Identifikuje slabiny v systému.
  • Zvyšuje spolehlivost za extrémních podmínek.
  • Pomáhá zajistit shodu s předpisy.


Testování dlouhodobého zatížení (soak testing)

Tento typ testu hodnotí výkonnost systému při dlouhodobém, nepřetržitém provozu, aby byly odhaleny problémy, které by se nemusely objevit během kratších stresových nebo zátěžových testů.

Příklad

I zde je základní průběh generované zátěže podobný jako při zátěžovém testu, přičemž počet virtuálních uživatelů použitých pro jednotlivé scénáře je např. jedna desetina těch, které byly použity pro zátěžový test. Doba trvání testu ale bude prodloužena na 48 hodin.

Klíčové výhody

  • Identifikuje problémy s výkonností, které mohou nastat během provozu.
  • Podporuje dlouhodobou stabilitu systému.
  • Minimalizuje riziko degradace výkonu.


Testování špičkového zatížení (spike testing)

Tento typ testu hodnotí schopnost systému zvládat náhlé a významné nárůsty zátěže v provozu. Zaměřuje se na zjištění reakce systému na náhlé zátěžové špičky, například když se webová stránka stane virální nebo aplikace náhle zaznamená velký příliv uživatelských interakcí z jiných příčin.

Příklad

Základní vzorec zátěže může být podobný jako při zátěžovém testu. Po 2 minutách generování základního průběhu zátěže se počet virtuálních uživatelů pro scénář B náhle ztrojnásobí s krokem 10 nových VU za sekundu. Po dosažení cílového počtu VU bude tento počet udržován po dobu 20 sekund a poté se vrátí zpět k normální zátěži po zbytek testu.

Sedm typů testování výkonnosti

Klíčové výhody

  • Identifikuje problémy při náhlých špičkách v provozu.
  • Pomáhá předcházet selhání systému.
  • Zlepšuje spolehlivost a dostupnost systému.


Testování škálovatelnosti (scalability testing)

Testování škálovatelnosti hodnotí schopnost systému zvládat narůstající pracovní zátěž, ať už jde o zvýšení počtu uživatelů nebo objemu transakcí. Tento typ testování je zásadní pro ověření hranice zátěže, do jaké je systém schopen plnit definované výkonnostní parametry.

Příklad

Základní vzor zátěže může být podobný jako při zátěžovém testu. Test začne s jednou desetinou současných virtuálních uživatelů definovaných pro zátěžový test. Po 40 sekundách testu se počet virtuálních uživatelů zvýší o jednu desetinu. Toto postupné zvyšování bude pokračovat až do n-násobku typické zátěže.

Sedm typů testování výkonnosti

Klíčové výhody

  • Podporuje růst prostřednictvím zlepšené škálovatelnosti.
  • Zlepšuje uživatelskou zkušenost.
  • Snižuje provozní náklady.


Testování objemu dat (volume testing)

Tento typ testování hodnotí schopnost systému zvládat velké objemy dat. Je zásadní při testování databází a dalších systémů náročných na data, aby bylo zajištěno, že budou schopné zpracovat velký objem dat.

Příklad

Systém je navržen pro dávkové zpracování vstupních CSV souborů. Během testování objemu dat zkoušíme chování systému s různými velikostmi CSV souborů a různým počtem současně probíhajících transakcí (pokud je to relevantní). Během testu hodnotíme funkcionální chování systému (správnost zpracování dat) a měříme dobu zpracování.

Klíčové výhody

  • Odhaluje problémy při zpracování velkých objemů dat.
  • Podporuje škálovatelnost a budoucí růst.
  • Snižuje riziko ztráty dat.


Testování souběžnosti (concurrency testing)

Testování souběžnosti hodnotí schopnost systému zvládat více operací nebo transakcí současně. Je klíčové pro pochopení, jak si systém vede, když s ním současně interaguje více uživatelů, zejména když transakce „soutěží“ o stejné zdroje. Toto testování zajišťuje, že systém dokáže efektivně zpracovávat souběžné operace bez degradace výkonu, poškození dat nebo selhání.

Příklad

Systém je navržen tak, aby zvládal více uživatelů zadávajících objednávky současně. Během testování souběžnosti simulujeme různé scénáře, kdy více uživatelů současně provádí transakce, jako je přidávání položek do košíku, dokončení plateb a kontrola stavu objednávek. Hodnotíme chování systému za těchto podmínek, se zaměřením na přesnost transakcí, integritu dat a dobu odezvy, abychom zajistili, že systém bude spolehlivě fungovat bez chyb nebo zpomalení.

Klíčové výhody

  • Zlepšuje schopnosti zotavení po havárii.
  • Snižuje riziko ztráty dat.
  • Zvyšuje spolehlivost systému.


Nástroje pro testování výkonnosti

V současné době existuje na trhu hned několik kvalitních nástrojů, které vám mohou pomoci vyhodnotit výkonnost a škálovatelnost aplikací. Představme alespoň některé z nejčastěji používaných nástrojů.

Apache JMeter

Apache JMeter je open-source nástroj, který se primárně používá pro měření výkonnosti webových aplikací, serverů a sítí. Podporuje různé protokoly jako HTTP, HTTPS, FTP a další, což z něj činí všestranný nástroj pro různé testovací scénáře.

Sedm typů testování výkonnosti

LoadRunner

LoadRunner, vyvinutý společností Micro Focus, je propracovaný komerční nástroj pro testování výkonnosti. Podporuje širokou škálu protokolů a dokáže simulovat tisíce virtuálních uživatelů pro testování škálovatelnosti a výkonnosti.

Sedm typů testování výkonnosti

K6

K6 je open-source nástroj, navržený pro moderní webové aplikace, API a mikroslužby. Je skriptovatelný v JavaScriptu, což vývojářům usnadňuje psaní testovacích scénářů.

Sedm typů testování výkonnosti

Locust  

Nástroj Locust je open-source nástroj, který umožňuje definovat chování uživatelů pomocí Python kódu, což jej činí velmi flexibilním a snadno použitelným. 

Sedm typů testování výkonnosti

Gatling  

Gatling je open-source nástroj navržený pro testování výkonnosti webových aplikací. Je zvláště známý pro své efektivní skriptovací schopnosti ve Scale.

Sedm typů testování výkonnosti

Závěr

Testování výkonnosti je klíčovým krokem při vývoji systému, potvrzujícím jeho kvalitu a zajišťujícím, že splňuje definované výkonnostní požadavky. Toto testování zahrnuje různé typy, jako je zátěžové, stresové testování, dále testování dlouhodobého a špičkového zatížení, testování škálovatelnostni a objemové testování. Každé z nich se zaměřuje na posouzení různých aspektů výkonnosti. Tyto testy pomáhají identifikovat potenciální problémy, což organizacím umožňuje zlepšit výkonnost, zvýšit uživatelský zážitek a zajistit, že systém zvládne nároky reálného světa. 

Sledujte naše další články, ve kterých se budeme podrobněji věnovat jednotlivým typům výkonnostního testování a nabídneme vám vhledy a rady, jak efektivně optimalizovat a zlepšit výkonnost Vašich systémů.

Nenechejte si ujít nejnovější informace.

Vyplňte nám vaši e-mailovou adresu a dostávejte pravidelnou nálož informací ohledně nadcházejících školení, akcí a testingového know-how.

Odesláním tohoto formuláře souhlasíte se zpracováním osobních údajů dle GDPR a se zasíláním marketingových e-mailů.