Testování výkonu
Testování výkonu je proces testování softwaru používaný k testování rychlosti, doby odezvy, stability, spolehlivosti, škálovatelnosti a využití prostředků softwarové aplikace při konkrétní pracovní zátěži. Hlavním účelem testování výkonu je identifikovat a eliminovat úzká místa výkonu v softwarové aplikaci. Jedná se o podmnožinu výkonového inženýrství a je také známá jako „Perf Testing“.
Testování výkonu je zaměřeno na kontrolu softwarového programu
- Rychlost - Určuje, zda aplikace reaguje rychle
- Škálovatelnost - určuje maximální zatížení uživatele, které může softwarová aplikace zvládnout.
- Stabilita - Určuje, zda je aplikace stabilní při různém zatížení
V tomto výukovém programu se naučíte
- Co je testování výkonu?
- Proč testování výkonu?
- Druhy testování výkonu
- Běžné problémy s výkonem
- Proces testování výkonu
- Metriky testování výkonu: Monitorované parametry
- Příklad testovacích případů výkonu
- Nástroje pro testování výkonu
- FAQ
Proč testování výkonu?
Funkce a funkce podporované softwarovým systémem nejsou jediným problémem. Na výkonu softwarové aplikace, jako je její doba odezvy, spolehlivost, využití zdrojů a škálovatelnost, záleží. Cílem testování výkonu není najít chyby, ale odstranit úzká místa výkonu.
Testování výkonu se provádí s cílem poskytnout zúčastněným stranám informace o jejich aplikaci týkající se rychlosti, stability a škálovatelnosti. Ještě důležitější je, že Testování výkonu odhaluje, co je třeba zlepšit, než se produkt dostane na trh. Bez testování výkonu bude software pravděpodobně trpět problémy, jako jsou: pomalý běh, zatímco několik uživatelů jej používá současně, nekonzistence mezi různými operačními systémy a špatná použitelnost.
Testování výkonu určí, zda jejich software splňuje požadavky na rychlost, škálovatelnost a stabilitu při očekávaném zatížení. Aplikace odeslané na trh se špatnými metrikami výkonu v důsledku neexistujícího nebo špatného testování výkonu pravděpodobně získají špatnou pověst a nesplní očekávané prodejní cíle.
Rovněž by měly být testovány výkonnost kriticky důležitých aplikací, jako jsou programy vypouštění do vesmíru nebo záchranné lékařské vybavení, aby bylo zajištěno, že budou fungovat po dlouhou dobu bez odchylek.
Podle Dunn & Bradstreet 59% společností z žebříčku Fortune 500 zažívá každý týden odhadem 1,6 hodiny odstávky. Vzhledem k tomu, že průměrná společnost z žebříčku Fortune 500 s minimem 10 000 zaměstnanců platí 56 USD za hodinu, náklady na pracovní dobu v případě výpadku by pro takovou organizaci činily 896 000 USD týdně, což by znamenalo více než 46 milionů USD ročně.
Odhaduje se, že pouze 5minutový výpadek webu Google.com (19. srpna - 13) stojí vyhledávacího giganta až 545 000 dolarů.
Odhaduje se, že společnosti kvůli nedávnému výpadku webové služby Amazon ztratily tržby v hodnotě 1100 USD za sekundu.
Proto je testování výkonu důležité.
Druhy testování výkonu
- Testování zátěže - kontroluje schopnost aplikace fungovat při předpokládaném zatížení uživatele. Cílem je identifikovat úzká místa výkonu před spuštěním softwarové aplikace.
- Stresové testování - zahrnuje testování aplikace za extrémních pracovních zátěží, aby se zjistilo, jak zvládá vysoký provoz nebo zpracování dat. Cílem je určit bod zlomu aplikace.
- Vytrvalostní testování - provádí se, aby se zajistilo, že software zvládne očekávané zatížení po dlouhou dobu.
- Testování špiček - testuje reakci softwaru na náhlé velké výkyvy zátěže generované uživateli.
- Testování hlasitosti - v části Testování hlasitosti velké č. z. Data se naplní do databáze a sleduje se chování celého softwarového systému. Cílem je zkontrolovat výkon softwarové aplikace při různých objemech databáze.
- Testování škálovatelnosti - Cílem testování škálovatelnosti je určit účinnost softwarové aplikace při „škálování“, aby se podpořilo zvýšení zátěže uživatelů. Pomáhá plánovat rozšíření kapacity vašeho softwarového systému.
Běžné problémy s výkonem
Většina problémů s výkonem se točí kolem rychlosti, doby odezvy, doby načítání a špatné škálovatelnosti. Rychlost je často jedním z nejdůležitějších atributů aplikace. Pomalu běžící aplikace přijde o potenciální uživatele. Testování výkonu se provádí, aby se zajistilo, že aplikace běží dostatečně rychle, aby udržela pozornost a zájem uživatele. Podívejte se na následující seznam běžných problémů s výkonem a všimněte si, jak je rychlost u mnoha z nich běžným faktorem:
- Dlouhá doba načítání - Doba načítání je obvykle počáteční čas, který trvá spuštění aplikace. To by mělo být obecně omezeno na minimum. Zatímco některé aplikace nelze načíst za minutu, doba načítání by měla být pokud možno udržována na několik sekund.
- Špatná doba odezvy - doba odezvy je doba, která trvá od okamžiku, kdy uživatel zadá data do aplikace, dokud aplikace nevydá odpověď na tento vstup. Obecně by to mělo být velmi rychlé. Opět platí, že pokud uživatel musí čekat příliš dlouho, ztrácí zájem.
- Špatná škálovatelnost - Softwarový produkt trpí špatnou škálovatelností, když nedokáže zpracovat očekávaný počet uživatelů nebo pokud není vhodný pro dostatečně široký okruh uživatelů. Testování zátěže by mělo být provedeno, aby bylo jisté, že aplikace zvládne očekávaný počet uživatelů.
- Úzká místa - Úzká místa jsou překážky v systému, které snižují celkový výkon systému. Úzké místo je, když chyby kódování nebo problémy s hardwarem způsobí snížení propustnosti při určitých zatíženích. Úzké místo je často způsobeno jednou vadnou částí kódu. Klíčem k vyřešení problému se zúžením je najít část kódu, která způsobuje zpomalení, a pokusit se ji tam opravit. Úzké místo je obvykle opraveno buď opravou špatně běžících procesů, nebo přidáním dalšího hardwaru. Některé běžné překážky výkonu jsou
- Využití CPU
- Využití paměti
- Využití sítě
- Omezení operačního systému
- Využití disku
Proces testování výkonu
Metodika přijatá pro testování výkonu se může značně lišit, ale cíl pro testy výkonu zůstává stejný. Může pomoci prokázat, že váš softwarový systém splňuje určitá předdefinovaná výkonnostní kritéria. Nebo může pomoci porovnat výkon dvou softwarových systémů. Může také pomoci identifikovat části vašeho softwarového systému, které snižují jeho výkon.
Níže je uveden obecný proces provádění testování výkonu
- Určete své testovací prostředí - Poznejte své fyzické testovací prostředí, produkční prostředí a jaké testovací nástroje jsou k dispozici. Než zahájíte proces testování, pochopte podrobnosti o hardwaru, softwaru a síťových konfiguracích použitých během testování. Pomůže testerům vytvářet efektivnější testy. Pomůže také identifikovat možné výzvy, s nimiž se mohou testeři během postupů testování výkonu setkat.
- Určete kritéria přijatelnosti výkonu - to zahrnuje cíle a omezení propustnosti, doby odezvy a přidělení prostředků. Kromě těchto cílů a omezení je také nutné určit kritéria úspěšnosti projektu. Testeři by měli být oprávněni stanovit výkonnostní kritéria a cíle, protože specifikace projektu často neobsahují dostatečně širokou škálu výkonnostních měřítek. Někdy nemusí být vůbec žádný. Pokud je to možné, je nalezení podobné aplikace k porovnání dobrý způsob, jak stanovit výkonnostní cíle.
- Plánování a testování výkonu - Určete, jak se bude mezi koncovými uživateli pravděpodobně lišit využití, a určete klíčové scénáře pro testování všech možných případů použití. Je nutné simulovat různé koncové uživatele, plánovat data testu výkonu a nastínit, jaké metriky budou shromážděny.
- Konfigurace testovacího prostředí - Připravte testovací prostředí před provedením. Uspořádejte také nástroje a další zdroje.
- Implementujte návrh testu - Vytvořte testy výkonu podle svého návrhu testu.
- Spusťte testy - Proveďte a sledujte testy.
- Analyzovat, ladit a znovu testovat - konsolidovat, analyzovat a sdílet výsledky testů. Poté dolaďte a znovu otestujte, zda došlo ke zlepšení nebo snížení výkonu. Vzhledem k tomu, že vylepšení se při každém opětovném testování obecně zmenšují, zastavte se, když je problémové místo způsobeno CPU. Pak můžete zvážit možnost zvýšení výkonu procesoru.
Metriky testování výkonu: Monitorované parametry
Mezi základní parametry sledované během testování výkonu patří:
- Využití procesoru - množství času, které procesor stráví prováděním nečinných vláken.
- Využití paměti - množství fyzické paměti dostupné procesům v počítači.
- Čas disku - doba, po kterou je disk zaneprázdněn prováděním požadavku na čtení nebo zápis.
- Šířka pásma - zobrazuje bity za sekundu používané síťovým rozhraním.
- Soukromé bajty - počet bajtů přidělených procesu, které nelze sdílet mezi jinými procesy. Používají se k měření úniků paměti a využití.
- Committed memory - množství použité virtuální paměti.
- Paměťové stránky / sekundu - počet stránek zapsaných nebo čtených z disku za účelem vyřešení chybné stránky. Poruchy tvrdé stránky jsou, když je kód, který není z aktuální pracovní sady, vyvolán odjinud a získán z disku.
- Poruchy stránky / sekundu - celková rychlost zpracování chybových stránek procesorem. K tomu znovu dochází, když proces vyžaduje kód mimo svou pracovní sadu.
- Přerušení CPU za sekundu - je průměr. počet hardwarových přerušení, která procesor každou sekundu přijímá a zpracovává.
- Délka fronty disku - je průměr. Ne. požadavků na čtení a zápis ve frontě na vybraný disk během ukázkového intervalu.
- Délka síťové výstupní fronty - délka fronty výstupních paketů v paketech. Cokoli více než dvě znamená, že je třeba zastavit zpoždění a problémová místa.
- Síťové bajty celkem za sekundu - rychlost, kterou jsou bajty odesílány a přijímány na rozhraní, včetně rámovacích znaků.
- Doba odezvy - doba od okamžiku, kdy uživatel zadá požadavek, do přijetí prvního znaku odpovědi.
- Propustnost - rychlost počítače nebo sítě přijímá požadavky za sekundu.
- Množství sdružování připojení - počet požadavků uživatelů, kterým jsou splněna sdružená připojení. Čím více požadavků splní připojení ve fondu, tím lepší bude výkon.
- Maximum active sessions - maximální počet relací, které mohou být aktivní najednou.
- Poměry zásahů - To má co do činění s počtem příkazů SQL, které jsou zpracovávány daty v mezipaměti, místo drahých I / O operací. Toto je dobré místo pro zahájení řešení problémů s úzkým profilem.
- Hity za sekundu - počet zásahů na webovém serveru během každé sekundy zátěžového testu.
- Vrátit segment - množství dat, které lze vrátit zpět v kterémkoli okamžiku.
- Zámky databází - zamykání tabulek a databází je třeba sledovat a pečlivě vyladit.
- Nejlepší čekání - jsou sledováni, aby se zjistilo, jaké čekací doby lze zkrátit při řešení toho, jak rychle se data načítají z paměti
- Počty vláken - Stav aplikací lze měřit podle počtu. spuštěných a aktuálně aktivních vláken.
- Odpadky - Souvisí to s vrácením nevyužité paměti zpět do systému. Sběr odpadu je třeba sledovat z hlediska efektivity.
Příklad testovacích případů výkonu
- Ověřte si, že doba odezvy není delší než 4 sekundy, když 1000 uživatelů přistupuje na web současně.
- Pokud je síťové připojení pomalé, ověřte, že doba odezvy aplikace při načítání je v přijatelném rozsahu
- Než dojde k chybě, zkontrolujte maximální počet uživatelů, které aplikace dokáže zpracovat.
- Zkontrolujte čas spuštění databáze, když je současně čteno / zapisováno 500 záznamů.
- Zkontrolujte využití CPU a paměti aplikace a databázového serveru za podmínek špičkového zatížení
- Ověřte dobu odezvy aplikace za podmínek nízké, normální, střední a vysoké zátěže.
Během samotného provádění testu výkonu jsou vágní výrazy jako přijatelný rozsah, velké zatížení atd. Nahrazeny konkrétními čísly. Inženýři výkonu nastavují tato čísla podle obchodních požadavků a technického prostředí aplikace.
Nástroje pro testování výkonu
Na trhu existuje široká škála nástrojů pro testování výkonu. Nástroj, který pro testování vyberete, bude záviset na mnoha faktorech, jako jsou typy podporovaných protokolů, náklady na licenci, hardwarové požadavky, podpora platforem atd. Níže je uveden seznam populárně používaných testovacích nástrojů.
- LoadNinja - přináší revoluci ve způsobu načítání testu. Tento cloudový nástroj pro testování zátěže umožňuje týmům zaznamenávat a okamžitě přehrávat komplexní zátěžové testy bez složité dynamické korelace a spouštět tyto zátěžové testy v reálných prohlížečích v měřítku. Týmy jsou schopny zvýšit pokrytí testů. & snížit dobu testování zátěže o více než 60%.
- NeoLoad - je platforma pro testování výkonu určená pro DevOps, která se bez problémů integruje do vašeho stávajícího kanálu Continuous Delivery. S NeoLoad týmy testují 10krát rychleji než s tradičními nástroji, aby splnily novou úroveň požadavků v celém životním cyklu agilního vývoje softwaru - od testů komponent až po úplné zátěžové testy celého systému.
- HP LoadRunner - je dnes nejpopulárnějším nástrojem pro testování výkonu na trhu. Tento nástroj je schopen simulovat stovky tisíc uživatelů a vystavovat aplikace skutečné zátěži, aby určil jejich chování při očekávané zátěži. Loadrunner obsahuje virtuální generátor uživatelů, který simuluje akce živých lidských uživatelů.
- Jmeter - jeden z předních nástrojů používaných k testování zátěže webových a aplikačních serverů.
FAQ
Které aplikace bychom měli testovat?
Testování výkonu se vždy provádí pouze pro systémy založené na klient-server. To znamená, že jakákoli aplikace, která není architekturou typu klient-server, nesmí vyžadovat testování výkonu.
Například Microsoft Calculator není založen na klient-server ani nespouští více uživatelů; proto není kandidátem na testování výkonu.
Jaký je rozdíl mezi Performance Testing & Performance Engineering
Je důležité porozumět rozdílu mezi testováním výkonu a výkonovým inženýrstvím. Níže je uvedeno porozumění:
Testování výkonu je obor zabývající se testováním a vykazováním aktuálního výkonu softwarové aplikace podle různých parametrů.
Výkonové inženýrství je proces, při kterém je software testován a vyladěn s cílem dosáhnout požadovaného výkonu. Tento proces si klade za cíl optimalizovat nejdůležitější vlastnost výkonu aplikace, tj. Uživatelský komfort.
Historicky byly testování a ladění zřetelně oddělené a často konkurenční říše. V posledních několika letech však několik kapes testerů a vývojářů nezávisle spolupracovalo na vytváření tuningových týmů. Protože se tyto týmy setkaly s významným úspěchem, pojetí testování výkonu propojení s laděním výkonu se uchytilo a nyní tomu říkáme výkonnostní inženýrství.
Závěr
V softwarovém inženýrství je před uvedením jakéhokoli softwarového produktu na trh nutné testování výkonu. Zajišťuje spokojenost zákazníků a chrání investici před selháním produktu. Náklady na testování výkonu jsou obvykle více než vyrovnány zlepšením spokojenosti, loajality a udržení zákazníků.