- Čo je testovanie zaťaženia?
- Architektúra záťažového testu
- Prečo testovanie zaťaženia?
- Životné prostredie
- Prístup
- Osvedčené postupy
- Záver
Kompletný sprievodca testovaním záťaže pre začiatočníkov:
V tomto tutoriáli sa dozvieme, prečo vykonávame testovanie záťaže, čo sa ním dosiahne, architektúru, aký prístup treba dodržať, aby sme úspešne vykonali testovanie záťaže, ako nastaviť prostredie na testovanie záťaže, osvedčené postupy a najlepšie nástroje na testovanie záťaže dostupné na trhu.
Počuli sme o funkčnom aj nefunkčnom testovaní. V rámci nefunkčného testovania máme rôzne typy testovania, ako napríklad testovanie výkonnosti, testovanie bezpečnosti, testovanie používateľského rozhrania atď.
Testovanie zaťaženia je teda nefunkčný typ testovania, ktorý je podmnožinou testovania výkonnosti.
Keď teda hovoríme, že testujeme aplikáciu na výkon, čo všetko tu testujeme? Testujeme aplikáciu na zaťaženie, objem, kapacitu, stres atď.
Čo je testovanie zaťaženia?
Testovanie záťaže je podmnožinou testovania výkonnosti, pri ktorom testujeme odozvu systému v rôznych podmienkach záťaže simuláciou súčasného prístupu viacerých používateľov k aplikácii. Pri tomto testovaní sa zvyčajne meria rýchlosť a kapacita aplikácie.
Preto vždy, keď meníme záťaž, sledujeme správanie systému za rôznych podmienok.
Príklad : Predpokladajme, že požiadavka nášho klienta na prihlasovaciu stránku je 2-5 sekúnd a týchto 2-5 sekúnd by malo byť konzistentných po celý čas, kým sa nezaťaží 5000 používateľov. Čo by sme teda mali sledovať? Je to len schopnosť systému zvládať záťaž alebo je to len požiadavka na čas odozvy?
Odpoveď je oboje. Chceme systém, ktorý zvládne záťaž 5000 používateľov s časom odozvy 2-5 sekúnd pre všetkých súbežných používateľov.
Čo teda znamená súbežný používateľ a virtuálny používateľ?
Súbežní používatelia sú tí, ktorí sa prihlásia do aplikácie a zároveň vykonávajú súbor činností spoločne a zároveň sa z aplikácie odhlasujú. Na druhej strane virtuálni používatelia len naskakujú a vyskakujú zo systému bez ohľadu na činnosti ostatných používateľov.
Architektúra záťažového testu
Na nasledujúcom diagrame vidíme, ako rôzni používatelia pristupujú k aplikácii. Každý používateľ tu zadáva požiadavku cez internet, ktorá neskôr prechádza cez firewall.
Po firewalle máme Load balancer, ktorý rozdeľuje záťaž na niektorý z webových serverov a potom ju odovzdáva aplikačnému serveru a neskôr databázovému serveru, kde načíta potrebné informácie na základe požiadavky používateľa.
Testovanie záťaže je možné vykonať manuálne, ako aj pomocou nástroja. Manuálne testovanie záťaže sa však neodporúča, pretože aplikáciu netestujeme na menšiu záťaž.
Príklad : Predpokladajme, že chceme otestovať online nákupnú aplikáciu, aby sme zistili čas odozvy aplikácie pre každé kliknutie používateľa, t. j. Krok1 -Spustenie adresy URL, čas odozvy, Prihlásenie do aplikácie a zaznamenanie času odozvy a tak ďalej, ako je výber produktu, pridanie do košíka, platba a odhlásenie. Všetky tieto kroky sa musia vykonať pre 10 používateľov.
Takže keď teraz potrebujeme otestovať zaťaženie aplikácie pre 10 používateľov, môžeme to dosiahnuť ručným zaťažením 10 fyzickými používateľmi z rôznych počítačov namiesto použitia nástroja. V tomto scenári je vhodné zvoliť ručné testovanie zaťaženia namiesto investovania do nástroja a nastavovania prostredia pre nástroj.
Ak si predstavíme, že potrebujeme otestovať záťaž pre 1500 používateľov, potom musíme záťažový test automatizovať pomocou niektorého z dostupných nástrojov na základe technológií, v ktorých je aplikácia vytvorená, a tiež na základe rozpočtu, ktorý máme na projekt.
Ak máme rozpočet, môžeme si vybrať komerčné nástroje ako Load runner, ale ak nemáme veľký rozpočet, môžeme si vybrať open source nástroje ako JMeter atď.
Bez ohľadu na to, či ide o komerčný nástroj alebo nástroj s otvoreným zdrojovým kódom, pred finalizáciou nástroja je potrebné poskytnúť klientovi podrobné informácie. Zvyčajne sa pripravuje skúšobný koncept, v ktorom vygenerujeme vzorový skript s použitím nástroja a ukážeme vzorové správy klientovi na schválenie nástroja pred jeho finalizáciou.
Pri automatizovanom testovaní záťaže nahrádzame používateľov pomocou automatizačného nástroja, ktorý napodobňuje činnosť používateľa v reálnom čase. Automatizáciou záťaže môžeme ušetriť zdroje aj čas.
Nižšie je uvedený diagram, ktorý znázorňuje spôsob výmeny používateľov pomocou nástroja.
Prečo testovanie zaťaženia?
Predpokladajme, že existuje webová stránka s online nakupovaním, ktorá počas bežných pracovných dní funguje celkom dobre, t. j. používatelia sú schopní prihlásiť sa do aplikácie, prechádzať rôzne kategórie produktov, vyberať produkty, pridávať položky do košíka, odhlasovať sa a odhlásiť sa v prijateľnom rozsahu a nedochádza k žiadnym chybám na stránke ani k veľkým časom odozvy.
Medzitým príde deň špičky, t. j. povedzme deň vďakyvzdania, a do systému sa prihlásia tisíce používateľov, systém zrazu spadne a používatelia majú veľmi pomalú odozvu, niektorí sa ani nemohli prihlásiť na stránku, niekoľkým sa nepodarilo pridať do košíka a niektorým sa nepodarilo odhlásenie.
Preto v tento veľký deň musela spoločnosť čeliť obrovským stratám, pretože stratila veľa zákazníkov a tiež veľa obchodov. To všetko sa stalo len preto, že nepredpokladali zaťaženie používateľov v dňoch špičky, aj keď by predpovedali, že na webovej stránke spoločnosti nebol vykonaný žiadny test zaťaženia, preto nevedia, aké zaťaženie bude aplikácia schopná zvládnuť v dňoch špičky.
Preto je na zvládnutie takýchto situácií a na prekonanie obrovských príjmov vhodné vykonať záťažový test pre takýto typ aplikácií.
- Testovanie záťaže pomáha budovať silné a spoľahlivé systémy.
- Úzke miesto v systéme sa identifikuje v dostatočnom predstihu pred spustením aplikácie do prevádzky.
- Pomáha identifikovať kapacitu aplikácie.
Čo sa dosiahne počas záťažového testu?
Pomocou správneho testu zaťaženia môžeme presne zistiť nasledujúce skutočnosti:
- Počet používateľov, ktorý je systém schopný spracovať alebo na ktorý je schopný sa škálovať.
- Čas odozvy každej transakcie.
- Ako sa správajú jednotlivé komponenty celého systému pri zaťažení, t. j. komponenty aplikačného servera, komponenty webového servera, komponenty databázy atď.
- Aká konfigurácia servera je najlepšia na zvládnutie záťaže?
- Či existujúci hardvér postačuje, alebo je potrebný ďalší hardvér.
- Identifikujú sa úzke miesta, ako je využitie CPU, využitie pamäte, oneskorenie siete atď.
Životné prostredie
Na vykonávanie testov potrebujeme špecializované prostredie na testovanie záťaže. Pretože väčšinou bude prostredie na testovanie záťaže rovnaké ako produkčné prostredie a aj údaje dostupné v prostredí na testovanie záťaže budú rovnaké ako produkčné, hoci to nie sú rovnaké údaje.
Bude existovať viacero testovacích prostredí, ako napríklad prostredie SIT, prostredie QA atď., tieto prostredia nie sú rovnaké ako produkčné, pretože na rozdiel od záťažového testovania nepotrebujú toľko serverov ani toľko testovacích údajov na vykonanie funkčného testovania alebo integračného testovania.
Príklad:
V produkčnom prostredí máme 3 aplikačné servery, 2 webové servery a 2 databázové servery. V prostredí QA máme len 1 aplikačný server, 1 webový server a 1 databázový server. Preto ak vykonáme test zaťaženia v prostredí QA, ktoré sa nerovná produkčnému, potom naše testy nie sú platné a sú tiež nesprávne, a preto nemôžeme vychádzať z týchto výsledkov.
Preto sa vždy snažte mať vyhradené prostredie na testovanie záťaže, ktoré je podobné produkčnému prostrediu.
Niekedy máme aj aplikácie tretích strán, ktoré náš systém zavolá, preto v takýchto prípadoch môžeme použiť záložky, pretože nemôžeme vždy spolupracovať s dodávateľmi tretích strán pri obnovovaní údajov alebo iných problémoch či podpore.
Pokúste sa vytvoriť snímku prostredia, keď je pripravené, aby ste ho mohli použiť vždy, keď budete chcieť prostredie obnoviť, čo by pomohlo pri riadení času. Na trhu sú k dispozícii niektoré nástroje na vytvorenie prostredia, ako napríklad Puppet, Docker atď.
Prístup
Pred začatím záťažového testu musíme zistiť, či už bol v systéme vykonaný nejaký záťažový test alebo nie. Ak už bolo predtým vykonané nejaké záťažové testovanie, potom musíme vedieť, aký bol čas odozvy, zozbierané metriky klienta a servera, aká bola kapacita zaťaženia používateľa atď.
Taktiež potrebujeme informácie o tom, aká je súčasná schopnosť aplikácie pracovať. Ak ide o novú aplikáciu, potrebujeme pochopiť požiadavky, aká je cieľová záťaž, aký je očakávaný čas odozvy a či je to naozaj dosiahnuteľné alebo nie.
Ak ide o existujúcu aplikáciu, môžete získať požiadavky na zaťaženie a vzory prístupu používateľov zo serverových protokolov. Ak však ide o novú aplikáciu, musíte sa obrátiť na obchodný tím, aby ste získali všetky informácie.
Keď máme požiadavky, musíme určiť, ako budeme vykonávať záťažový test. Bude sa vykonávať manuálne alebo pomocou nástrojov? Manuálne vykonávanie záťažového testu si vyžaduje veľa zdrojov a je tiež veľmi nákladné. Opakovanie testu, znova a znova, bude tiež náročné.
Preto na prekonanie tohto problému môžeme použiť buď nástroje s otvoreným zdrojovým kódom, alebo komerčné nástroje. Nástroje s otvoreným zdrojovým kódom sú k dispozícii zadarmo, tieto nástroje nemusia mať všetky funkcie ako iné komerčné nástroje, ale ak má projekt obmedzený rozpočet, môžeme sa rozhodnúť pre nástroje s otvoreným zdrojovým kódom.
Zatiaľ čo komerčné nástroje majú veľa funkcií, podporujú mnoho protokolov a sú užívateľsky veľmi prívetivé.
Náš prístup k záťažovému testu bude nasledovný:
#1) Identifikujte kritériá prijateľnosti záťažového testu
Napríklad :
- Čas odozvy prihlasovacej stránky by nemal byť dlhší ako 5 sekúnd ani pri maximálnom zaťažení.
- Využitie CPU by nemalo byť vyššie ako 80 %.
- Priepustnosť systému by mala byť 100 transakcií za sekundu.
#2) Identifikujte obchodné scenáre, ktoré je potrebné otestovať.
Netestujte všetky toky, snažte sa pochopiť hlavné obchodné toky, ktoré sa očakávajú v produkčnom prostredí. Ak ide o existujúcu aplikáciu, môžeme jeho informácie získať zo serverových logov produkčného prostredia.
Ak ide o novovytvorenú aplikáciu, musíme spolupracovať s obchodnými tímami, aby sme pochopili vzorce toku, používanie aplikácie atď. Niekedy projektový tím uskutoční workshopy, aby poskytol prehľad alebo podrobnosti o jednotlivých komponentoch aplikácie.
Musíme sa zúčastniť seminára o aplikácii a zaznamenať všetky potrebné informácie na vykonanie záťažového testu.
#3) Modelovanie pracovného zaťaženia
Keď máme k dispozícii podrobnosti o obchodných tokoch, vzorcoch prístupu používateľov a počte používateľov, musíme navrhnúť pracovnú záťaž takým spôsobom, aby napodobňovala skutočnú navigáciu používateľov v produkcii alebo takú, aká sa očakáva v budúcnosti, keď bude aplikácia v produkcii.
Kľúčovými bodmi, na ktoré treba pamätať pri návrhu modelu pracovného zaťaženia, je zistiť, koľko času bude trvať dokončenie konkrétneho obchodného toku. Tu musíme priradiť čas myslenia takým spôsobom, aby sa používateľ pohyboval po aplikácii reálnejším spôsobom.
Vzor pracovného zaťaženia bude zvyčajne s Ramp up, Ramp down a ustáleným stavom. Systém by sme mali zaťažovať pomaly, a preto sa používa Ramp up a Ramp down. Ustálený stav bude zvyčajne jednohodinový test zaťaženia s Ramp up 15 min a Ramp down 15 min.
Uveďme si príklad modelu pracovného zaťaženia:
Prehľad aplikácie - Predpokladajme online nakupovanie, kde sa používatelia prihlásia do aplikácie a majú k dispozícii širokú škálu šiat na nakupovanie a môžu sa pohybovať medzi jednotlivými produktmi.
Ak chcú zobraziť podrobnosti o každom produkte, musia naň kliknúť. Ak sa im páči cena a značka produktu, môžu ho pridať do košíka a kúpiť si ho odbavením a platbou.
Nižšie je uvedený zoznam scenárov:
- Prehľadávať - Používateľ tu spustí aplikáciu, prihlási sa do aplikácie, prezerá si rôzne kategórie a odhlási sa z aplikácie.
- Prehľadávať, Zobraziť produkt, Pridať do košíka - Tu sa používateľ prihlási do aplikácie, prezerá si rôzne kategórie, zobrazí podrobnosti o produkte, pridá produkt do košíka a odhlási sa.
- Prehľadávanie, zobrazenie produktu, pridanie do košíka a kontrola - V tomto scenári sa používateľ prihlási do aplikácie, prezerá si rôzne kategórie, zobrazí podrobnosti o produkte, pridá produkt do košíka, vykoná check-out a odhlási sa.
- Prehľadávanie, Zobrazenie produktu, Pridanie do košíka Odhlásenie a Platba - Tu sa používateľ prihlási do aplikácie, prezerá si rôzne kategórie, zobrazí podrobnosti o produkte, pridá produkt do košíka, vykoná check-out, vykoná platbu a odhlási sa.
S.č. | Obchodný tok | Počet transakcií | Virtuálne zaťaženie používateľa | Čas odozvy (s) | % Povolená miera zlyhania | Transakcie za hodinu |
---|---|---|---|---|---|---|
1 | Prehľadávať | 17 | 1600 | 3 | Menej ako 2 % | 96000 |
2 | Prehľadávať, Zobraziť produkt, Pridať do košíka | 17 | 200 | 3 | Menej ako 2 % | 12000 |
3 | Prehľadávanie, zobrazenie produktu, pridanie do košíka a kontrola | 18 | 120 | 3 | Menej ako 2 % | 7200 |
4 | Prehľadávanie, Zobrazenie produktu, Pridanie do košíka Odhlásenie a Platba | 20 | 80 | 3 | Menej ako 2 % | 4800 |
Uvedené hodnoty boli odvodené na základe nasledujúcich výpočtov:
- Transakcie za hodinu = počet používateľov*Transakcie vykonané jedným používateľom za jednu hodinu.
- Počet používateľov = 1600.
- Celkový počet transakcií v scenári prehľadávania = 17.
- Čas odozvy pre každú transakciu = 3.
- Celkový čas jedného používateľa na vykonanie 17 transakcií = 17*3 = 51 zaokrúhlený na 60 sekúnd (1 min).
- Transakcie za hodinu = 1600*60 = 96000 transakcií.
#4) Navrhnite záťažové testy - Test zaťaženia by mal byť navrhnutý s údajmi, ktoré sme doteraz zozbierali, t. j. obchodné toky, počet používateľov, vzory používateľov, metriky, ktoré sa majú zbierať a analyzovať. Okrem toho by testy mali byť navrhnuté oveľa realistickejšie.
#5) Vykonajte test zaťaženia - Pred vykonaním záťažového testu sa uistite, že aplikácia je spustená. Prostredie záťažového testu je pripravené. Aplikácia je funkčne otestovaná a je stabilná.
Skontrolujte konfiguračné nastavenia prostredia Load test. Malo by byť rovnaké ako produkčné prostredie. Uistite sa, že sú k dispozícii všetky testovacie údaje. Uistite sa, že ste pridali potrebné počítadlá na monitorovanie výkonu systému počas vykonávania testu.
Vždy začnite s nízkou záťažou a postupne záťaž zvyšujte. Nikdy nezačínajte s plnou záťažou a neporušujte systém.
#6) Analyzujte výsledky testu zaťaženia - Pripravte si základný test, ktorý vždy porovnáte s ostatnými testovacími spusteniami. Zhromaždite metriky a protokoly servera po spustení testu, aby ste našli úzke miesta.
Niektoré projekty používajú nástroje na monitorovanie výkonu aplikácií na monitorovanie systému počas testovacieho behu, tieto nástroje APM pomáhajú ľahšie identifikovať hlavnú príčinu a ušetriť veľa času. Tieto nástroje veľmi ľahko nájdu hlavnú príčinu úzkeho miesta, pretože majú široký záber na určenie miesta problému.
Medzi nástroje APM na trhu patria DynaTrace, Wily Introscope, App Dynamics atď.
#7) Podávanie správ - Po dokončení testovania zhromaždite všetky metriky a pošlite príslušnému tímu súhrnnú správu o testovaní so svojimi pripomienkami a odporúčaniami.
Osvedčené postupy
Zoznam nástrojov na testovanie výkonnosti dostupných na trhu na vykonávanie výhradného testovania zaťaženia.
Záver
V tomto učebnom texte sme sa dozvedeli, akú dôležitú úlohu zohráva testovanie zaťaženia pri testovaní výkonnosti aplikácie, ako pomáha pochopiť efektívnosť a schopnosť aplikácie atď.
Dozvedeli sme sa tiež, ako pomáha predpovedať, či je v aplikácii potrebný ďalší hardvér, softvér alebo ladenie.
Šťastné čítanie!!