Úvod do performance testingu

Performance testing sa po slovensky označuje výrazom výkonnostné testovanie. Predstavíme ti performance testing basics – základy výkonnostného testovania, typy, nástroje a odporúčania pre lepší výkon tvojich aplikácií.

Prečo je výkonnostné testovanie také dôležité?

Zrejme už máš skúsenosť s tým, ako dve na pohľad podobné webové stránky alebo aplikácie môžu fungovať úplne odlišne. Kým jedna stránka sa načíta bleskovo, načítanie druhej si vyžaduje nekonečne dlhý čas. Jedna aplikácia beží hladko, zatiaľ čo druhá mrzne, má výpadky alebo je výrazne pomalšia. Tieto rozdiely sú najčastejšie príčinou rozdielnej výkonnosti softvéru.

Výkonnosť softvéru je akousi neviditeľnou silou digitálneho sveta, zodpovednou za to, aby tvoje obľúbené e-commerce stránky zvládali nápor počas veľkých predajných akcií ako Čierny piatok bez kolapsu. Testovanie výkonnosti je preto kľúčové pre zachovanie dlhodobej životaschopnosti a úspechu každého softvérového riešenia. V tomto článku sa bližšie pozrieme na dôvody, prečo je to tak dôležité.

Typy performance testingu

Najskôr hypotetický príklad. Povedzme, že vyvíjaš a prevádzkuješ webovú stránku pre online rezervácie leteniek. Tvojím cieľom je zabezpečiť, aby stránka fungovala spoľahlivo a rýchlo, aj keď sa na ňu naraz prihlási veľký počet používateľov, napríklad počas letnej dovolenky, keď je dopyt po letenkách vysoký.

Existuje niekoľko hlavných typov testovania výkonnosti, ktoré by ti pomôžu zabezpečiť, že tvoja webová stránka pre rezervácie leteniek bude schopná udržať spoľahlivosť a rýchlosť počas obdobia zvýšeného dopytu, ako je letná dovolenka, hlavne však dlhodobo.

Ilustrácia typov performance testingu

1. Záťažové testovanie (Load Testing)

Záťažové testovanie sa zameriava na overenie, ako dobre systém zvláda určitý počet používateľov alebo zaťaženie. To ti pomôže identifikovať hranice, pri ktorých tvoj softvér prestane dobre fungovať.

  • Tvojím cieľom pri testovaní záťaže bude overiť, ako tvoja webová stránka zvláda bežné denné zaťaženie počas väčšinovej časti roka, keď je dopyt po letenkách stabilný. Simulovať budeš rôzne typy používateľov, ktorí vyhľadávajú a rezervujú letenky.
  • Týmto spôsobom sa presvedčíš, že stránka udrží spoľahlivosť a rýchlosť pri typickom záťažovom profile.

2. Stresové testovanie (Stress Testing)

Stresové testovanie sa zameriava na testovanie softvéru za extrémnych podmienok, kedy je aplikácia vystavená nadmernému zaťaženiu alebo neočakávaným situáciám. Cieľom stresového testovania je zistiť, ako sa systém správa pri maximálnej záťaži a aké sú jeho limity a hranice tolerancie.

  • Stresové testovanie bude simulovať situácie, kedy na tvoju stránku naraz pristúpi veľký počet používateľov, napríklad počas letnej dovolenky, keď je dopyt po letenkách výrazne vyšší.
  • Cieľom tohto testovania bude identifikovať hranice a problémové oblasti, ako sú dlhé časy odozvy alebo nedostupnosť stránky v prípade nadmerného zaťaženia.

Load testing vs Stress testing

Ilustrácia rozdielu medzi load testingom a stress testingom

3. Testovanie výdrže (Endurance Testing)

Testovanie výdrže sa zameriava na zistenie, ako sa tvoja aplikácia správa pri dlhodobom zaťažení. Ide o to zistiť, či tvoja webová stránka dokáže udržať stabilnú výkonnosť počas dlhších období, napríklad cez celé letné prázdniny, kedy je dopyt po letenkách konzistentne vysoký.

  • Pri tomto type testovania môžeš simulovať stály tok používateľov na tvojej stránke po dobu niekoľkých dní alebo týždňov. Cieľom je zistiť, či nevznikajú problémy ako úniky pamäte, ktoré by mohli viesť k spomaleniu alebo zlyhaniu stránky po dlhodobom používaní.

 

Ilustrácia endurance testu

4. Testovanie špičky (Spike Testing)

Spike testing je určený na testovanie reakcie tvojho systému na neočakávané a náhle zvýšenie zaťaženia. Môže ísť napríklad o situácie, keď vypustíš veľkú propagačnú kampaň a na tvoju stránku sa naraz prihlási veľký počet používateľov.

  • V tomto teste budeš chcieť sledovať, ako rýchlo sa tvoj systém dokáže prispôsobiť náhlemu zvýšeniu dopytu a či dokáže udržať výkonnosť aj počas krátkodobých špičiek v počte používateľov.

Ilustrácia spike testu

5. Testovanie škálovateľnosti (Scalability Testing)

Testovanie škálovateľnosti sa zameriava na zistenie, ako dobre je tvoj systém schopný prispôsobiť sa rastúcemu množstvu požiadaviek. To zahŕňa schopnosť aplikácie zvládnuť zvýšenie počtu používateľov, transakcií, alebo dokonca zvýšenie dátových objemov.

  • V prípade tvojej webovej stránky by si mohol testovať, ako sa systém správa, keď postupne zvyšuješ počet súčasne pripojených používateľov alebo objem dát, ktoré musí aplikácia spracovať. Cieľom je zistiť, do akej miery je možné tvoj systém škálovať nahor bez poklesu výkonnosti.

6. Testovanie objemu (Volume Testing)

Pri testovaní objemu sa zameriavaš na to, ako tvoj systém zvláda veľké množstvo dát. Tento test nie je zameraný len na počet používateľov, ale skôr na množstvo dát generovaných v systéme, napríklad počet rezervácií, vyhľadávaní alebo transakcií.

  • V tomto scenári môžeš simulovať obrovské množstvo rezervácií leteniek a sledovať, ako tvoja stránka spracováva a ukladá tieto dáta. Cieľom je overiť, či tvoj systém môže efektívne spracovať a ukladať veľké množstvo dát bez vplyvu na výkon alebo spoľahlivosť.

Tieto rôzne typy testovania výkonnosti spolu tvoria súbor nástrojov a prístupov, ktoré ti umožnia dosiahnuť vyššiu úroveň spoľahlivosti a výkonnosti tvojej webovej stránky. V kontexte rezervácií leteniek je kľúčové zabezpečiť, že používatelia majú prístup k rýchlemu a spoľahlivému systému nielen v bežných situáciách, ale aj v tých náročnejších, ako je obdobie letnej dovolenky.

Základy performance testingu – kde začať?

●      Rozpoznanie požiadaviek

Skôr než sa pustíš do testovania, je kľúčové identifikovať požiadavky na výkonnosť. Ako rýchlo by mal tvoj softvér reagovať? Aký je maximálny počet používateľov, ktorí by mali byť schopní používať tvoju službu súčasne?

●      Výber správnych nástrojov

Na trhu je mnoho nástrojov na testovanie výkonnosti, od open-source až po komerčné. Skús zvážiť faktory ako rozpočet, potreby a schopnosti tvojho tímu pri výbere toho správneho nástroja.

●      Definovanie testovacích scenárov

Ktoré časti tvojho softvéru sú kritické a vyžadujú najviac pozornosti? Nájdi ich a zostav testovacie scenáre, ktoré tieto časti detailne preveria.

Ako na to?

●      Príprava prostredia

Aby bol tvoj test efektívny, musíš si pripraviť prostredie, ktoré čo najviac zodpovedá reálnemu využitiu tvojho softvéru. Nezabudni na konfiguráciu databáz, serverov a sietí.

●      Spustenie a monitorovanie testov

Keď máš všetko pripravené, spusti testy a monitoruj ich v reálnom čase. Pozoruj metriky ako čas odozvy, priepustnosť a chybovosť.

●      Analýza a interpretácia Výsledkov

Keď sú testy ukončené, je čas ich podrobne analyzovať. Identifikuj problémy a zisti, ktoré časti tvojho kódu potrebujú vylepšenie.

Performance testing best practices

Stanov si jasné ciele

Jasne si stanov svoje ciele a účely testovania výkonnosti. Zisti, čo chceš dosiahnuť, či už ide o zlepšenie časov odozvy, zvládnutie viacerých súčasných používateľov alebo identifikáciu bottleneckov.

Začni skoro

Zahrň testovanie výkonnosti do svojho vývojového cyklu od začiatku, nie až dodatočne. Pomôže ti to pri identifikovaní a oprave problémov včas, čím ušetríš čas a zdroje.

Realistické testovacie prostredie

Uisti sa, že tvoje testovacie prostredie čo najviac pripomína produkčné prostredie, vrátane hardvéru, softvéru a konfigurácie siete.

Identifikuj kritické scenáre

Priorizuj kritické scenáre a transakcie používateľov, ktoré majú najväčší vplyv na výkon tvojej aplikácie. Zameraj sa na to, čo je pre tvojich používateľov najdôležitejšie.

Modeluj záťaž

Vytvor realistické modely záťaže, ktoré simulujú očakávané správanie používateľov a vzory prevádzky. Pomôže ti to simulovať podmienky v reálnom svete a poskytnúť zmysluplné výsledky.

Použi správne dáta

Použi dáta podobné produkčným dátam pre testovanie, aby si zabezpečil realistické scenáre. Maskuj citlivé dáta, ak je to potrebné, aby si splnil požiadavky na ochranu osobných údajov.

Monitoruj a meraj

Použi monitorovacie nástroje na kontinuálne zbieranie údajov o výkonnosti počas testov. Analyzuj metriky ako časy odozvy, priepustnosť a percento chýb na identifikáciu problémov.

Nástroje pre testovanie výkonnosti (performance testing tools)

Tu sú niektoré nástroje pre testovanie výkonnosti, ktoré môžeš použiť:

  1. Apache JMeter: Bezplatný open-source nástroj, ktorý umožňuje vytvárať a vykonávať testy pre rôzne druhy aplikácií, vrátane webových stránok, webových služieb, databáz a ďalších.
  2. LoadRunner: Komerčný nástroj od spoločnosti Micro Focus, ktorý je špecializovaný na testovanie výkonnosti a zvládne rôzne záťažové scenáre.
  3. Gatling: Open-source nástroj navrhnutý pre vytváranie a vykonávanie testov na webových aplikáciách. Je písaný v jazyku Scala.
  4. Locust: Ďalší open-source nástroj, ktorý je určený na vytváranie záťažových testov pomocou jednoduchého Python skriptovania.
  5. BlazeMeter: Komerčný nástroj, ktorý umožňuje vytvárať, vykonávať a analyzovať testy výkonnosti v cloudovom prostredí. Má silné integračné možnosti s rôznymi nástrojmi a rámčekmi.
  6. WebLOAD: Ďalší komerčný nástroj na testovanie výkonnosti, ktorý sa špecializuje na zaťažovacie testy a skúmať výkonnosť webových aplikácií.

Záver

Testovanie výkonnosti nie je len odškrtávacie cvičenie, je to kritická súčasť vývoja softvéru, ktorá ti môže ušetriť mnoho budúcich problémov. Pamätaj, že investícia do kvalitného testovania výkonnosti je investíciou do dlhodobej spokojnosti tvojich používateľov a tvojho biznisu.

Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.

O autorovi

Katarína Kučáková

Software Test Engineer

Moja cesta k testovaniu softvéru sa začala v roku 2019 až po štúdiu ekonómie a pracovných skúsenostiach v iných odvetviach. To mi pomohlo vnímať IT svet v rôznych súvislostiach. Ten totiž ponúka neustále nové výzvy, pre ktoré rada hľadám riešenia. Obľubujem oddych pri čítaní, turistiku alebo lyžovanie. LinkedIn

Daj nám o sebe vedieť