Performance Testing – príručka pre výkonnostné testy softvéru

Performance Testing – príručka pre výkonnostné testy softvéru
10 MIN
20 jún 2023

Výkonnostné testovanie akejkoľvek aplikácie pomáha identifikovať obmedzenia (úzke miesta – bottlenecks) výkonu aplikácie. Výkonnostné testy sú nevyhnutné pre dosiahnutie optimálneho výkonu aplikácie a zabezpečenie jej stability a spoľahlivosti. Pri výkonnostnom testovaní nezisťujeme len čas odozvy aplikácie, ale aj niekoľko ďalších kvalitatívnych vlastností ako je stabilita, spoľahlivosť, robustnosť, škálovateľnosť, využitie zdrojov atď. V budúcnosti prinesieme tutoriál o výkonnostnom testovaní s nástrojom JMeter tu.

Obsah

Čo je výkonnostné testovanie (performance testing)?

Výkonnostné testy sú neoddeliteľnou súčasťou nefunkcionálneho testovania, pri ktorom sa posudzuje výkon aplikácie pri simulácii očakávaných alebo nadmerne očakávaných zaťažení. Jeho cieľom je zistiť, ako sa aplikácia správa v rôznych podmienkach zaťaženia a vyhodnotiť jej výkonnosť.

V podstate sa pri výkonnostnom testovaní snažíme simulovať reálnu záťaž pomocou nástrojov, ako je napríklad JMeter. Tieto nástroje nám pomáhajú vytvoriť virtuálnych používateľov, ktorí vykonávajú rôzne operácie v aplikácii, a tým simulujú akcie reálnych používateľov.

Performance testing – typy výkonnostných testov

Load testing (Testovanie zaťaženia)

Load testing je typ výkonnostného testovania, pri ktorom sa hodnotí výkon aplikácie pri očakávanom zaťažení. V rámci testov zaťaženia vyhodnocujeme rôzne výkonnostné parametre, ako je čas odozvy, zaťaženie servera a miera chýb pozorovaných počas vykonávania testov zaťaženia.

Stress testing (Testovanie pod stresom)

Stress testing je typ vykonnostného testovania, pri ktorom sa hodnotí výkon aplikácie pri zaťažení oveľa vyššom, než je očakávané alebo predpokladané zaťaženie. Tento prístup umožňuje určiť hranicu zaťaženia alebo bod, kedy aplikácia prestáva správne reagovať.

Endurance testing (Testovanie výdrže)

Endurance testing sa tiež nazýva „testovanie dlhodobej záťaže“ alebo „testovanie stability pod záťažou“ (Soak testing). Pri testovaní výdrže je testovaná aplikácia nepretržite zaťažená po dlhú dobu, napríklad 2 až 3 dni. Cieľom je identifikovať možné problémy spojené s výkonom, pamäťou, únikom zdrojov alebo inými chybami, ktoré môžu vzniknúť pri dlhodobom behu aplikácie preťaženej veľkým množstvom používateľov alebo dát.

Spike testing (Testovanie náhleho zaťaženia)

Spike testing spočíva vo vystavení aplikácie náhlemu prívalu virtuálnych používateľov. Tento prístup nám pomáha identifikovať, či sa aplikácia dokáže zotaviť z akýchkoľvek problémov po náhlom náraste počtu súbežných používateľov.

Volume testing (Testovanie objemu)

Pri testovaní objemu dát zavádzame do aplikácie veľké množstvo dát. To dosiahneme buď vložením rozsiahlej dátovej kolekcie do databázy, alebo nahraním veľkého súboru na spracovanie. Cieľom je overiť, ako aplikácia zvláda manipuláciu s veľkým objemom údajov a či jej výkon a stabilita nie sú negatívne ovplyvnené touto záťažou.

Performance testing
Vykonnostné testovanie

Ak sa chceš dozvedieť viac o jednotlivých typoch výkonnostného testovania s aplikovanými príkladmi, klikni na Typy výkonnostných testov.

Prečo sú potrebné výkonnostné testy?

Pomáhajú overiť spoľahlivosť aplikácie

Vykonávajú sa rôzne typy výkonnostných testov za účelom overenia, či je aplikácia spoľahlivá a poskytuje správny a konzistentný výstup. Testy výkonu, ako sú testy zaťaženia a testy výdrže pomáhajú vyhodnocovať správnu reakciu systému pri očakávanom zaťažení po určitú dobu (test zaťaženia) alebo počas dlhých časových úsekov (test výdrže).

Pomáhajú identifikovať obmedzenia výkonu

Testy výkonu pomáhajú identifikovať obmedzenia výkonu aplikácie, ktoré spomaľujú systém. Tieto komponenty môžu neskôr byť optimalizované pre dosiahnutie vyššieho výkonu a celkového zlepšenia systému.

Pomáhajú hodnotiť škálovateľnosť aplikácie

Spustením testov výkonu s rôznym počtom súbežných používateľov môžeme overiť, či je aplikácia schopná škálovať sa na vyšší počet používateľov. Tak vieme identifikovať dostatočnú infraštruktúru / požiadavky na server pre systém.

Pomáhajú overiť robustnosť aplikácie

S testovaním zaťaženia môžeme overiť robustnosť aplikácie pri vyššom zaťažení, ako sa očakáva. Účelom je určiť horný limit alebo bod zlomu, pri ktorom aplikácia zareaguje správne na súbežných používateľov a nezlyhá.

Proces testovania výkonu

Plánovanie a exekúcia výkonnostných testov vyžaduje rôzne sady aktivít, ktoré sú spoločné pre každý výkonnostný test bez ohľadu na použitý nástroj. Nasleduje postup pre plánovanie a exekúciu testu zaťaženia krok za krokom.

1. Scenáre testu výkonu

Najprv vyberáme testovacie scenáre, ktoré majú byť podrobené výkonnostnému testovaniu. Zvyčajne namiesto výberu všetkých funkcionálnych testovacích scenárov aplikácie si vyberáme len tie scenáre, ktoré majú veľký objem dát alebo scenáre, ktoré bude vykonávať relatívne veľké množstvo používateľov. Príkladom testovacieho scenára môže byť:

  • spustenie aplikácie,
  • čas čakania,
  • zadaj platné prihlasovacie údaje a klikni na tlačidlo „Prihlásiť sa“,
  • čas čakania,
  • vykonanie určitej aktivity na úvodnej stránke.
  • čas čakania,
  • kliknutie na tlačidlo „Odhlásiť sa“.

Čas čakania označuje dobu, ktorú používateľ strávi pri prezeraní webovej stránky po načítaní, čas potrebný na vyplnenie formulárov, ako sú prihlasovacie formuláre, formuláre na registráciu používateľa, zadávanie údajov do vyhľadávacích polí atď. Tento čas je premenný v závislosti od vykonávaného úkonu, napríklad čas na vyplnenie veľkého formulára môže byť viac ako 10 sekúnd, zatiaľ čo čas na vyplnenie prihlasovacích údajov môže byť len 2 až 3 sekundy.

2. Rozdelenie používateľov

Po identifikácii scenárov nasleduje rozdelenie používateľov. Tu priradíme používateľov k rôznym scenárom. Napríklad pri výkonnostnom testovaní e-mailovej aplikácie môžeme rozdeliť používateľov do nasledujúcich scenárov:

  • Scenár čítania neprečítaného e-mailu – 50 % používateľov
  • Scenár písania e-mailu – 30 % používateľov
  • Scenár odstránenia e-mailu – 18 % používateľov
  • Scenár registrácie používateľa – 2 % používateľov

3. Skriptovanie

Skriptovanie sa vykonáva pomocou nástroja na záťažové testovanie ako je Load Runner, JMeter, Silk Performer, atď. Tieto nástroje simulujú akcie vykonávané používateľmi. Skriptujeme identifikované scenáre a priradíme používateľov podľa ich rozdelenia.

4. Procedúra “Dry Run”

Predtým, než skutočne začneme so záťažovým testom s preddefinovaným počtom používateľov, vykonáme procedúru „Dry Run“ aplikácie, pri ktorej priradíme 1 alebo 2 používateľov ku každému scenáru a skontrolujeme, či všetko funguje správne.

5. Spustenie testu a analýza výsledkov

Po „Dry Run“ spustení a uistení sa, že skripty fungujú správne, začneme s vlastným záťažovým testom. Záťažový test môže byť nastavený na vykonávanie po určitý čas alebo počet iterácií. Napríklad záťažový test môže byť naplánovaný na ‚n‘ minút alebo ‚m‘ iterácií na používateľa.

Po vykonaní záťažového testu sa analyzujú jeho výsledky. Niektoré open-source nástroje nemusia mať veľmi dobrú zabudovanú interpretáciu výsledkov testu. V takých prípadoch môže byť potrebné použiť pluginy alebo ďalšie nástroje na zahrnutie pokročilejšej alebo graficky intuitívnejšej interpretácie.

Ako vybrať nástroj pre výkonnostné testy softvéru?

Existuje mnoho nástrojov dostupných pre výkonnostné testovanie aplikácií, ako je JMeter, LoadRunner, Gatling, Apache Bench atď. Pri výbere nástroja je potrebné zvážiť nasledujúce faktory:

  • Typ aplikácie: Niektoré nástroje sú viac vhodné pre webové aplikácie, zatiaľ čo iné sú vhodnejšie pre API alebo mobilné aplikácie.
  • Funkcie a možnosti: Skúmaj funkcie a možnosti nástroja a zhodnoť, či spĺňa tvoje potreby testovania výkonnosti aplikácie.
  • Použiteľnosť a učenie sa: Zváž, ako ľahko je nástroj použiteľný a či vyžaduje veľa času na učenie sa.
  • Podpora a komunita: Skontroluj, či nástroj má aktívnu podporu a dostupnú komunitu, kde môžeš získať pomoc a tipy pre používanie.

Je dôležité tiež mať na pamäti, že výkonnostné testovanie nie je jednorazová činnosť. Je to proces, ktorý by sa mal vykonávať pravidelne a integrovať do vývojového cyklu aplikácie. Týmto spôsobom môžeš zabezpečiť, že tvoja aplikácia bude spoľahlivá, škálovateľná a robustná v čo najrôznejších podmienkach zaťaženia.

Nástroje na výkonnostné testovanie softvéru

Teraz sa pozrime na niektoré z najpoužívanejších nástrojov na výkonnostné testovanie.

  • Apache JMeter – JMeter je jeden z najpoužívanejších nástrojov na výkonnostné testovanie. Pretože je bezplatný a open-source, používa sa od začínajúcich firiem po veľké podniky. Jediná nevýhoda spočíva v tom, že má o niečo strmšiu krivku učenia oproti iným nástrojom. Odkaz na stiahnutie: Apache JMeter download.
  • LoadRunner – LoadRunner je nástroj na výkonnostné testovanie vyvinutý spoločnosťou Micro Focus. Je to platený nástroj, ale existuje aj bezplatná komunitná verzia, ktorá podporuje až 50 virtuálnych používateľov pre testovanie zaťaženia. Odkaz na stiahnutie: Loadrunner download.
  • WebLOAD – WebLOAD je nástroj na výkonnostné testovanie od spoločnosti RadView. Je opäť plateným nástrojom a podobne ako LoadRunner ponúka bezplatnú edíciu s 50 virtuálnymi používateľmi pre testovanie zaťaženia. Odkaz na stiahnutie: Webload download.
  • LoadNinja – LoadRunner je jedným z platených nástrojov na výkonnostné testovanie. Na rozdiel od väčšiny ostatných platených a bezplatných nástrojov je veľmi jednoduchý a rýchly, pretože nevyžaduje zložité skriptovanie, namiesto toho pracuje s reálnymi prehliadačmi v cloude. Odkaz na stiahnutie: LoadNinja download.
  • Locust – Locust je bezplatným a open-source nástrojom na výkonostné testovanie, ktorý vyžaduje skriptovanie v jazyku Python. Podporuje vykonávanie výkonnostných testov na viacerých distribuovaných zariadeniach. Odkaz na stiahnutie: Locust download.
  • NeoLoad – NeoLoad je plateným nástrojom pre výkonnostné testovanie. Výrazne znižuje čas a zložitosť skriptovania pomocou svojich funkcií drag&drop a record&playback. Okrem toho podporuje aj Selenium skripty, čo je výhodné, ak používaš Selenium na automatizáciu testov. Odkaz na stiahnutie: NeoLoad download.

Pre viac informácií o týchto nástrojoch spolu s podrobným hodnotením, si pozri náš článok s názvom Nástroje na výkonnostné testy. Týmto sme ukončili náš tutoriál o výkonnostnom testovaní. Odporúčam ti pozrieť našu sériu tutoriálov o nástroji JMeter, ktorá ťa bezplatne prevedie krok za krokom v učení sa najpopulárnejšieho nástroja na výkonnostné testovanie – Apache JMeter.