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
Prostředí pro ZT
9
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 Výpočet VU
Počet transakcí provedených 1 VU za 1 hodinu
Σ ThinkTime Pacingtime [s] [s]
190
19
1,57
115
77
131
3,82
51
Název transakce
Trvání jedné transakce [s]
ASJE AMOD Kontrolní součty
Reálný počet provedených transakcí za 1 hodinu
2280
38
30
29,83
944
15,7
500
500,6
530
530,43
Reálný počet provedených transakcí za 1 hodinu
150
Výpočet VU
Počet transakcí provedených 1 VU za 1 hodinu
Σ ThinkTime Pacingtime [s] [s]
Pacingtime [min]
Plánovaný počet provedených transakcí za 1 hodinu
148
88
5,68
108
634
10,57
500
499,7
399
12
2,08
288
1728
28,80
25
25,0
525
524,7
Název transakce
Trvání jedné transakce [s]
BMOD BSJE Kontrolní součty
Pacingtime [min]
Plánovaný počet provedených transakcí za 1 hodinu
100
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