Performance testing webstránok

V tomto tutoriáli sa budeme venovať vytvoreniu plánu testovania výkonnosti webových aplikácií, pomocou ktorého môžeme vykonávať testovanie výkonnosti webových stránok pomocou nástroja JMeter. Dozvieš sa tiež o rôznych prvkoch plánu testovania potrebných na vytvorenie testovacieho skriptu spolu s ich použitím a konfiguráciou.
Obsah
- Predpoklady (prerekvizity) pre výkonnostné testy (performance tests)
- Kroky pri vytváraní skriptov testov výkonnosti
- Vytvorenie kostry testovacieho skriptu
- Vytváranie alebo zaznamenávanie požiadaviek HTTP
- Pridanie časovačov
- Pridanie poslucháčov
- Dry Run test
- Konfigurácia a naplánovanie záťažového testu
- Spustenie a analýza testu
- Záver
Predpoklady (prerekvizity) pre výkonnostné testy (performance tests)
Pri vytváraní plánu testovania výkonnosti webových aplikácií by ste mali vopred mať zvládnuté nasledujúce veci:
- Znalosť obchodných scenárov aplikácie.
- Inštancia aplikácie určená na testovanie výkonnosti s konfiguráciami a stavom podobným produkčnému.
- Zoznam scenárov vybraných na testovanie výkonnosti (pretože nie všetky scenáre sa musia testovať záťažou).
- Špičkové zaťaženie v produkcii alebo predpokladaná hodnota špičkového zaťaženia.
- Rozloženie používateľov v rôznych scenároch, keďže niektoré scenáre sa používajú častejšie ako iné. Preto je rôznym scenárom priradený rôzny počet používateľov.
- Hodnota času premýšľania alebo času čakania, ktorý sa má zahrnúť medzi niektoré operácie na simuláciu skutočných používateľov – čas premýšľania, čas písania, čas čítania a spracovania informácií atď.
- Metrika testu výkonnosti, ktorá sa má odvodiť z výsledkov testu, ako je čas odozvy, počet zobrazení za sekundu atď.
Kroky pri vytváraní skriptov testov výkonnosti
Na vytvorenie plánu testovania výkonnosti webových aplikácií je potrebné vykonať tieto kroky:
- Vytvorenie kostry testovacieho skriptu s nakonfigurovaným plánom testov, skupinami vlákien a logickými kontrolérmi.
- Vytvorenie alebo zaznamenanie požiadaviek HTTP pomocou servera HTTP Proxy.
- Pridanie časovačov na zavedenie času čakania alebo času premýšľania medzi požiadavkami.
- Pridanie poslucháčov na ukladanie a analýzu výsledkov testov.
- Vykonanie dry run testu s 1 alebo 2 používateľmi.
- Konfigurácia záťažového testu s požadovaným počtom používateľov a jeho spustenie.
- Spustenie a analýza výsledkov testu.
Teraz sa pozrime, ako môžeme podrobne vykonať každý z uvedených krokov.
Vytvorenie kostry testovacieho skriptu
Na základe počtu skupín používateľov potrebných na vykonávanie rôznych operácií pridáme do nášho plánu testu skupiny vlákien a logické kontroléry (logic controllers). Napríklad – ak máme dve skupiny používateľov vykonávajúcich operácie vyhľadávania a prihlásenia na webovej stránke.
Potom vytvoríme dve skupiny Thread Groups a pridáme rôzne Logic Controllers na simuláciu rôznych operácií vykonávaných používateľmi. Kroky, ktoré treba vykonať:
- Pridajte skupinu vlákien do plánu testovania a pomenujte ju UsersSearchingKeywords.
- Pridajte viacero kontrolérov transakcií ako potomkov tejto skupiny Thread Group a pomenujte ich podľa operácií, ktoré vykonávajú, napríklad – „Spustenie aplikácie“, „Vyhľadanie kľúčového slova a stlačenie klávesu enter“, „Zatvorenie aplikácie“.
- Pridajte ďalšiu skupinu vlákien a pomenujte ju UsersLogin.
- Do tejto Skupiny vlákien pridajte kontroléry transakcií ako – „Spustenie aplikácie“, „Kliknutie na odkaz na prihlásenie“, „Zadanie prihlasovacích údajov a kliknutie na tlačidlo Odoslať“.
- Pridajte konfiguráciu
Náš testovací plán bude vyzerať takto:

Upozorňujeme, že sme tu použili kontrolér transakcie, pretože v rámci tohto kontroléra môžeme mať viacero požiadaviek HTTP a po vykonaní testu získame celkový čas odozvy celej transakcie, čo je žiaduce. V závislosti od scenárov môžeme pridať aj rôzne logické kontroléry, napríklad kontrolér cyklov, náhodný kontrolér atď.
Vytváranie alebo zaznamenávanie požiadaviek HTTP
Keď vykonávame operáciu, napríklad kliknutie na tlačidlo, na server sa odošle niekoľko požiadaviek HTTP. Pri skriptovaní musíme vytvoriť všetky tieto požiadavky, aby sme mohli určiť čas potrebný na spracovanie požiadaviek.
Jedným zo spôsobov, ako to urobiť, je pridať rôzne požiadavky HTTP a nakonfigurovať ich s hodnotami, ako sú – adresa URL, port, typ požiadavky (Get, Put, Post, Delete atď.), telo požiadavky, hlavička požiadavky atď. To však môže byť veľmi ťažkopádne, pokiaľ nepotrebujeme testovať veľmi obmedzené požiadavky alebo nepotrebujeme testovať konkrétnu požiadavku HTTP.
Na efektívne vykonanie tohto úkonu nám JMeter poskytuje nástroj HTTP(s) Test Script Recorder, pomocou ktorého môžeme zaznamenávať skripty v JMeter priamo vykonávaním operácií v prehliadači.
Keď spustíme nahrávanie skriptov, môžeme vybrať kontrolér transakcie, napríklad „Launch application“ (Spustenie aplikácie), z cieľového kontroléra HTTP(s) Test Script Recorder a vykonávať operácie, ako je spustenie webovej aplikácie v nakonfigurovanom prehliadači, pričom rôzne požiadavky HTTP sa pridajú do vybraného kontroléra.

Pridanie časovačov
Medzi dva kontroléry transakcií môžeme pridať časovače, aby sme zaviedli čas na premýšľanie, napríklad medzi kontroléry „Spustenie aplikácie“ a „Vyhľadávanie kľúčového slova“ môžeme zaviesť časovač s hodnotou časového limitu 3 sekundy, aby sme simulovali čas, ktorý používateľ potrebuje na spracovanie odpovede a zadanie kľúčového slova na vyhľadávanie.
Pridanie poslucháčov
Na ukladanie a analýzu výsledkov testov môžeme použiť rôzne typy poslucháčov, ktoré sme si naštudovali v našom tutoriáli – Poslucháči v JMeter.
Dry Run test
Pred vykonaním testu so skutočným počtom používateľov musíme test spustiť nasucho s veľmi malým počtom používateľov, aby sme overili správnosť skriptu.
Konfigurácia a naplánovanie záťažového testu
Po overení skriptov nakonfigurujeme záťažový test s požadovaným počtom používateľov a naplánujeme záťažový test.
Spustenie a analýza testu
Po dokončení celého vytvorenia a konfigurácie testovacieho skriptu spustíme test kliknutím na ikonu prehrávania alebo stlačením klávesovej skratky Ctrl+r na klávesnici. Počas vykonávania testu budeme paralelne monitorovať server. Po skončení testu môžeme uložiť a analyzovať výsledky testu.
Záver
Teraz sme videli základný plán testov pre webovú aplikáciu, napriek tomu je potrebné postarať sa o niekoľko vecí:
- Počas testovania by sme nemali tvrdo zadávať hodnoty, ako sú – vyhľadávacie výrazy a prihlasovacie údaje používateľa atď. Na tento účel musíme testovacie skripty parametrizovať.
- Vytváranie dynamických skriptov a manipulácia s premennými relácie je ďalšia vec, ktorú je potrebné pri skriptovaní zohľadniť. Na riešenie týchto problémov máme koncept korelácie.