Zátěžové testování SW aplikací Miroslav Růžovský Softec CZ, spol. s.r.o.
Zátěžové testování SW? Zátěžové testování (Load Testing) je proces tvorby požadavků na systém a měření jeho odezvy (rychlosti). Typické zátěžové testování spočívá ve vytvoření situace, kdy určitý počet uživatelů pracuje se systémem a v měření jeho rychlosti v závislosti na počtu uživatelů. Cílem zátěžového testování není kontrolovat správnost systému, ale zjistit zda systém bude dostatečně rychlý i při větším počtu připojených uživatelů. Zároveň je prováděna optimalizace systému a opakované testy ověřují její úspěšnost. Zátěžové testování se obvykle provádí s 1,5 násobkem SWL (Safe Working Load) což je bezpečný počet uživatelů, kdy systém obvykle pracuje bez problémů či větších časových prodlev. 2
Proč provádět ZT? Zátěžové testy (ZT) nám dají odpověď na důležité otázky: jak se systém bude chovat při generované zátěži, jak bude systém reagovat na proměnlivou zátěž, jestli existují úzká místa v aplikaci a infrastruktuře, kdy dojde k narušení QoS (Quality of Services), jaká je výkonová a kapacitní mez systému, jak bude probíhat havárie systému po přetížení, jak se projevily provedené změny v systému, infrastruktuře. 3
Základní typy ZT Capacity testing: zaměření na maximální využití aplikace z pohledu využití zdrojů, pohled na aplikaci jako na business funkci. Performance testing:, zaměření na jednotlivé funkce, předvídáme odezvy funkcí, známe výkonové charakteristiky infrastruktury. 4
Přínosy ZT potvrzení připravenosti aplikace a infrastruktury pro provoz, ověření výkonu HW, odhalení úzkých hrdel aplikace, infrastruktury, upřesnění dalšího směru vývoje aplikace, nalezení výkonnostní hranice systému, úspora nákladů: posilování HW, při řešení výkonnostních problémů v produkci. 5
Rizika ZT Náklady na provedení ZT (čas, nástroje, HW), nesprávná interpretace výsledků ZT, nesprávně stanovené cíle, nesprávné nastavení priorit, reality a poměrů scénářů (mix), správný nástroj, potřebné monitory. 6
Předpoklady pro provedení ZT - prostředí Ideální stav: kopie produkce 1:1, kopie produkčních dat (anonymizovaných), koordinovaný přístup do testovacího prostředí, návratnost prostředí do původního stavu. Realita: přibližná kopie produkčního prostředí, data typu co nám zbylo po testování, nekoordinovaný přístup do testovacího prostředí. Nutnost: testování na produkčním prostředí při nejmenším vytížení ostatními uživateli. 7
Testovaná aplikace - schéma 8
9 Prostředí pro ZT
Předpoklady pro provedení ZT - příprava Přesně stanovené cíle: Ověřit hranici výkonu serveru X, odladit nedostatky na serveru X, ověřit chování aplikace pod zátěží, ověřit chování aplikace při přetížení. použijeme data generovaná aplikací, máme k dispozici srovnání produkčního a testovacího prostředí, stanovené priority uživatelských scénářů: Zaměřit se na scénáře, které jsou nejvíce používané nebo vyžadují nejvíce zdrojů (tarifní algoritmy, ukládání dat ) ověřená funkčnost aplikace (např. ze ST). 10
Předpoklady pro provedení ZT - příprava Je potřeba provést minimálně dva testy: stejné prostředí, stejná data, stejné podmínky (vytížení HW, infrastruktury), stejný způsob vyhodnocení výsledků, stanovená kritéria. 11
Použité transakce pro ZT Název transakce Trvání jedné transakce [s] Výpočet VU Počet transakcí provedených 1VU za 1 hodinu Σ ThinkTime [s] Pacingtime [s] Pacingtime [min] Plánovaný počet provedených transakcí za 1 hodinu ASJE 190 19 1,57 115 2280 38 30 29,83 AMOD 77 131 3,82 51 944 15,7 500 500,6 Kontrolní součty 150 Reálný počet provedených transakcí za 1 hodinu 530 530,43 Název transakce Trvání jedné transakce [s] Výpočet VU Počet transakcí provedených 1VU za 1 hodinu Σ ThinkTime [s] Pacingtime [s] Pacingtime [min] Plánovaný počet provedených transakcí za 1 hodinu Reálný počet provedených transakcí za 1 hodinu BMOD 148 88 5,68 108 634 10,57 500 499,7 BSJE 399 12 2,08 288 1728 28,80 25 25,0 Kontrolní součty 100 525 524,7 12
Vytížení zdrojů serveru X 1. běh ZT 13
Doby odezev měřených transakcí 1.kolo 14
Změny na základě výsledků ZT Provedené změny na serveru X : snížení podrobnosti vytvářených DB logů, snížení četnosti tvorby DB logů, opravení statistik nad DB, upravení indexování DB, upravený algoritmus dotazů pro instanci DB. 15
Vytížení zdrojů serveru X 2. běh ZT 16
Doby odezev měřených transakcí 2.kolo 17
Porovnání běhů ZT Snížení průměrné zátěže CPU: 1. server ze 44% na 39% 2. server ze 70% na 5,5% 3. server ze 25,6% na 21,7% Snížení nároků na alokovanou paměť: Průměrně u všech serverů o 5 17% Snížení zatížení infrastruktury řádově v jednotkách % 18
Porovnání běhů ZT Snížení doby odezvy u stěžejních transakcí v jednotkách až desítkách vteřin 19
Vyhodnocení - cíle Splněné cíle ověření: chování aplikace při zátěži, chování serveru X při plánované zátěži. výkonové hranice serveru X, stabilitu infrastruktury, stabilitu integrovaných částí. 20
Vyhodnocení - přínosy Zlepšení: snížení požadavků na systémové zdroje u prováděných operací na serveru X a Y, zvýšení pružnosti aplikace, mnohonásobně rychlejší odezvy mezi jednotlivými systémy. 21
Otázky? 22