Zátěžové testy aplikací
Obsah Zátěžové testy v životním cyklu vývoje software Kdy a proč provádět zátěžové testy Projekt zátěžového testu Fáze zátěžového testu Software pro zátěžové testy
Zátěžové testy v životním cyklu vývoje software Správa požadavků na testování Plánování testu Funkční a regresivní testování Požadavky na vývoj a změny Vývoj software Vývojové testy (UNIT) Analýza výsledků Analýza výsledků Akceptační řízení Nasazení do provozu Zátěžové testování zpoza firewallu Zátěžové testování před firewallem
Zátěžový test online manuální Zátěž on-line je vytvářena lidskými zdroji Testeři pracují dle dohodnutého postupu a v dohodnutém čase Síť Web server Application server Database server Testovaný systém Testeři simulující zátěž on-line
Manuální zátěžové testování Výhody není nutnost používat speciální testovací software není nutný vývoj programových skriptů k zatěžování relativně rychlá realizace Nevýhody použitelnost na malé systémy do počtu 20 uživatelů špatné řízení zátěže neopakovatelnost testů špatné sledování systému a sběr naměřených hodnot vyšší chybovost z hlediska lidského faktoru vyšší HW nároky (více PC)
Zátěžový test - online automatizovaný Analýza Grafy, tabulky, reporty LR Controller Speciální software Řeší omezení lidských zdrojů při zátěžovém testu: Nahradí testery virtuálními uživateli Spouští velké množství virtuálních uživatelů na několika málo počítačích Vuser host Web server Application server Database server Load Generátor Testovaný systém
Automatizované zátěžové testování Výhody použitelnost i na velké systémy s tisíci uživateli řízení zátěže z jednoho místa snadná opakovatelnost testů sledování systému pod zátěží, sběr naměřených hodnot Nevýhody nutnost použití specializovaného testovacího software časová náročnost přípravy zátěžových skriptů
Kdy a proč zavádět zátěžové testy Výkonnostní akceptace dodaného systému Vyladění systému a jeho jednotlivých komponent před reálným provozem Zjištění výkonnostních limitů systému Ověření chování systému při výpadku jednotlivých komponent systému Ověření použité platformy, technologie a infrastruktury systému
Doba trvání zátěžového testu 8 dní Analýza pro zátěžový test Podrobná specifikace rozsahu a cíle 10 dní 15 dní 4 dny Technické řešení (tech.test, prostředí, generátory) Výběr business transakcí transakční mix Popis vybraných business transakcí Stanovení počtu virtuálních uživatelů Specifikace testovacích dat Výběr monitorů a výkonnostní metriky Návrh scénářů ZT Organizace běhů ZT Kritéria pro ukončení ZT Analýza rizik Příprava zátěžového testu Příprava zátěžových skriptů Příprava testovacích dat Kontrola prostředí pro ZT Provedení zátěžového testu Ukončení všech cyklů Výchozí podmínky pro test Spuštění testu Vyhodnocení - Analýza výsledů Závěrečné vyhodnocení X cyklů ZT
Nároky na lidské kapacity v jednotlivých fázích projektu zátěžového testování dle rolí Analýza pro ZT Příprava ZT Provedení a vyhodnocení ZT Definice cíle ZT Analýza Nahrání skriptů Ladění skriptů Spuštění ZT Analýza výsledků Úprava systému Manažer projektu (Vedoucí zátěžového testu) Analytik vývojového týmu Analytik vývojového týmu Analytik vývojového týmu Analytik vývojového týmu Analytik vývojového týmu Analytik ZT Analytik ZT Analytik ZT Architekt systému Architekt systému Architekt systému Architekt systému Vývojář Administrátor Administrátor Specialista na HW, DB, síť... Specialista na HW, DB, síť... Specialista na ZT Specialista na ZT Specialista na ZT Specialista na ZT Specialista na ZT Specialista na ZT
Rozhodnutí o cíli a rozsahu zátěžového testu Jde o manažérské rozhodnutí před začátkem zátěžového testu, které vymezuje provedení zátěžového testu: Základní zaměření zátěžového testu (cíl) Rozsah zátěžového testu (vazby na okolní systémy, dávkové procesy na pozadí, provozní nebo testovací prostředí, možnost naplnění DB) časový a finanční aspekt Volba softwarového nástroje pro zátěžový test Hrubý časový rámec zátěžového testu Tým pro zátěžový test součinnost různých specialistů Stanovení kritérií pro ukončení ZT v závislosti na cíli ZT
Technické řešení zátěžového testu Technologický test ověřuje vhodnost zvoleného softwarového nástroje pro konkrétní zátěžový test Umístění generátorů zátěže: Zátěžový test uvnitř interní sítě (před firewallem) Zátěžový test mimo interní síť (zpoza firewallu) Simulace vazeb testovaného systému na okolní systémy: Plná součástí zátěžových skriptů jsou skripty simulující reakci spolupracujících systémů Částečná simulace jen do definovaného rozhraní Technické řešení generátorů zátěže PC, servery, prostup firewallem,... Technické řešení realizace zátěžového testu v provozním nebo testovacím prostředí
Výběr business transakcí transakční mix Vytvoření skupin transakcí testovaného systému a výběr vhodného představitele každé skupiny pro zátěžový test (požadavek na vyváženost transakčního mixu): Nejfrekventovanější transakce Transakce významně zatěžující systém Zastupitelnost funkčních modulů systému v zátěžovém testu Činnosti kritické pro chod firmy Transakce náročné z hlediska zpracování komplikované dotazy do DB, komunikace s okolními systémy, tisky atd.
Testovací data pro zátěžový test Přihlášení uživatelů do testované aplikace doména, jméno, heslo... jeden přístup do systému pro všechny uživatele nebo přístupy individuální (generované) Opakované použití testovacích dat testovací data destruktivní testovací data nedestruktivní Znehodnocení osobních údajů v datech (zákon 101/2000 Sb.) Naplnění databáze před začátkem zátěžového testu na definovaný % objem dat Časově náročné
Stanovení počtu virtuálních uživatelů Počet uživatelů, kteří mají technické nebo licenční podmínky pro přístup do systému Počet virtuálních uživatelů v průběhu průměrného dne a ve špičce Pro jednotlivé vybrané transakce se provede proporcionální výpočet počtu virtuálních uživatelů v zátěžovém testu Podle celkového nárůstu virtuálních uživatelů v jednotlivých cyklech zátěžového testu (variantách) se provede výpočet jejich nárůstu pro jednotlivé transakce Rozhodne se o způsobu jejich přihlašování (v jeden okamžik, ve stanoveném intervalu náhodně, atd.)
Výběr monitorů a výkonnostní metriky Dle cíle zátěžové testu jsou určeny sledované výkonové ukazatele (metriky), vybrány vhodné monitory, stanoveny výkonnostní metriky a typ výsledku zátěžového testu pro porovnání s limitem Typ metriky Popis Limit Výkonnost jednotlivých transakcí systému na uživatelském rozhraní uživatelská odezva. Vytížení paměti sleduje využívání operační paměti na definovaných serverech. Efektivita práce databáze sleduje způsob využití zdrojů databáze. Vytížení CPU sleduje využití CPU na definovaných serverech, obvykle probíhá monitorování prostředky operačního systému. Monitorování sítě sleduje zpoždění sítě mezi jednotlivými aktivními prvky sítě a průchodnost jednotlivých prvků sítě. Odezva vytipované transakce na uživatelském rozhraní. <8 s Velikost obsazené operační paměti <75% Rychlost vyřizování dotazů (délka provádění vytipovaných SQL dotazu) <1 s Vytížení procesoru <80% Zpoždění sítě <0,5 s
Typy výsledků zátěžového testu Transakce Min. /sec./ Ave /sec./ Max. /sec./ 50% /sec./ 90% /sec./ Prihlaseni 0.31 0.48 0.95 0.42 0.61 Nacteni_objednavek 4.23 5.28 10.49 6.02 8.12 Odeslani platebnich udaju 3.65 4.20 12.21 4.88 7.25 Zruseni_objednavek 4.57 5.83 9.07 5.64 7.21 Vyber letu 5.54 6.27 14.15 6.88 7.96 Vyber spolecnosti 4.43 5.60 11.23 6.59 8.10 Odhlaseni 0.32 0.41 0.82 0.46 0.63
Návrh scénáře zátěžového testu 1.vlna (VU) 2. vlna (VU) 3. vlna (VU) Měřená referenční zátěž Doběh Doba trvání této činnosti (min.) 10 10 10 60 10 1.skript 2.skript 3.skript CELKEM VU nárůst VU 74 74 72 VU načítaně 74 148 220 220 nárůst VU 32 32 34 VU načítaně 32 64 98 98 nárůst VU 27 28 27 VU načítaně 27 55 82 82 nárůst VU 248 78 78 VU načítaně 133 267 400 400 1. dávka na pozadí X 2. dávka na pozadí X
Návrh scénáře zátěžového testu - graf Měřená referenční zátěž
Návrh testovacích cyklů Navrhované cykly zátěžového testu vycházejí ze spouštění vybraných transakcí s postupným zvětšováním zátěže Cyklus 1 Transakce 20 % denní špičky Cyklus 4 Transakce - 140 % denní špičky Cyklus 2 Transakce 50 % denní špičky (běžný pracovní den) Cyklus 5 Transakce - 200 % denní špičky Cyklus 3 Transakce 100 % denní špičky Cyklus 6 Transakce - pokus o kolaps systému
Příprava zátěžového testu Příprava testovacího prostředí Nahrání a odladění zátěžových skriptů Příprava testovacích dat Vytvoření scénářů pro zátěžový test Zprovoznění generátorů zátěže Kontrola prostředí pro zátěžový test Zkušební běh zátěžového testu
Ošetření rizik vznikajících při zátěžovém testu Bezpečnost síťového provozu a běhu provozních aplikací, pokud je zátěžový test prováděn za plného provozu a v produkčním prostředí Riziko chybného přepočtu mezi výkonnostními parametry testovacího a produkčního prostředí, pokud není zátěžový test prováděn v produkčním prostředí Riziko objektivity výsledků zátěžového testu, pokud je chybný výběr transakcí pro simulaci (transakční mix), výběr a rozsah testovacích dat - může způsobit, že zátěžový test je nevyvážený a jeho výsledky neodpovídají budoucímu skutečnému běhu systému Opomenutí vlivu okolních systémů nebo jejich chybná simulace může způsobit zkreslení výsledků zátěžového testu
Provedení zátěžového testu Kontrola výchozích podmínek zátěžového testu Provedení běhu zátěžové testu Vyhodnocení běhu zátěžového testu Rozhodnutí o splnění/nesplnění kritérií pro ukončení ZT Rozhodnutí o úpravách HW a SW parametrů systému, případně o programových úpravách Rozhodnutí o variantě dalšího běhu zátěžového testu
Výsledky zátěžového testu
Výsledky zátěžového testu Výsledky ZT v sec - průměrné hodnoty Měřené transakce Limit v sec. 28.10.2006 1.11.2006 15.11.2006 20.11.2006 134 VU 400 VU 400 VU 1000VU login 5 1,5 8,7 3,4 4,4 GUI 207 5 1,1 3,6 2,1 4,8 zadani 1 pozadavku 15 10,3 16,2 13,3 18,5 prehled_stah_souboru 10 8,4 12,4 9,7 15,4 prehled_požadavku_2 15 30,1 36,4 14,1 18,1 stazeni_souboru 15 18,6 25,8 12,2 17,2 logout 5 1,4 1,6 1,6 2,8
Meeting pro vyhodnocení běhu ZT Prvotní analýza výsledků Příprava souboru dat a grafů sumarizace grafů, tvorba grafů závislostí Důraz na měřítko naměřených hodnot a typu použitých výsledků (min, max, průměr, 50 nebo 90 percentily) Vyhodnocení ZT podrobná analýza a diskuse nad výsledky ZT Návrh na úpravu testované aplikace nebo architektury programová úprava testované aplikace změna parametrů testované aplikace změna architektury např. přidání dalšího aplikačního serveru atd. Návrh dalšího běhu ZT, jaký cyklus s jakými daty atd.
Závěrečná zpráva ze zátěžového testu Závěrečná zpráva o zátěžovém testu se vytváří po splnění kritérií o ukončení ZT a má obvykle tyto části: cíl zátěžového testu a jeho rozsah specifikace prostředí, ve kterém zátěžový test probíhal seznam vybraných transakcí (transakční mix) navržené a realizované cykly zátěžového testu výsledky provedených běhů zátěžového testu porovnání dosažených výsledků s cílem zátěžového testu nalezené problémy a úzká místa systému doporučení dalšího postupu
Nástroje pro zátěžové testování Komerční produkty HP LoadRunner Compuware QALoad Segue SilkPerformer Rational Performance Tester RadView Webload. Freeware produkty Jmeter OpenSTA Microsoft Web Stress Tool OpenWebLoad http_load...
Porovnání komerčních a freeware produktů Komerční produkty monitoring vybraných parametrů během zátěže většinou lze testovat i jiné než webové aplikace (SAP, Siebel, Citrix...) přehledné grafické výstupy z jednotlivých testů technická podpora dodavatele koupě nebo nájem za poplatek kompletní dokumentace možno zakoupit školení vhodné pro akceptační testování Freeware produkty chybí možnost monitoringu během zátěže většinou lze testovat pouze webové aplikace (otevřená rozhraní) pouze jednoduché výstupy z jednotlivých testů bez technické podpory zdarma bez pořádné dokumentace pouze samostudium vhodné pro vývojové testování
Trendy ve zvyšování výkonnosti systému Návrh systému Databáze výsledků Zátěžový test Systém vyhodnocení Monitoring Doporučení na změnu architektury nebo nastavení parametrů systému