Výukový program testování výkonu

⚡ Chytré shrnutí

Testování výkonu je proces testování softwaru, který hodnotí rychlost aplikace, dobu odezvy, stabilitu, škálovatelnost a využití zdrojů při specifických pracovních zátěžích. Identifikuje a eliminuje úzká hrdla před nasazením a zajišťuje tak spolehlivost v reálných podmínkách.

  • (Tj. Definujte rozsah včas: Před návrhem jakýchkoli výkonnostních testů identifikujte testovací prostředí, kritéria přijetí a klíčové scénáře.
  • 🔄 Pokrývá všechny typy testů: Pro vyhodnocení různých režimů selhání použijte testy zatížení, napětí, odolnosti, špičkových hodnot, objemu a škálovatelnosti.
  • 📊 Sledování kritických metrik: Tracvyužití procesoru k, spotřeba paměti, doba odezvy, propustnost a chybovost během každého spuštění testu.
  • ⚠️ Systematicky diagnostikujte úzká hrdla: Prozkoumejte využití CPU, paměti, sítě a disku, abyste izolovali hlavní příčinu snížení výkonu.
  • 🔁 Iterujte a znovu otestujte: Analyzujte výsledky, laděte konfigurace a znovu testujte, dokud výkon nesplňuje předem definovaná kritéria akceptace.
  • 🤖 Využijte analýzu řízenou umělou inteligencí: Využívejte umělou inteligenci pro prediktivní detekci anomálií, automatickou analýzu hlavních příčin a inteligentní alokaci zdrojů během testování.

Výukový program testování výkonu

Co je 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í zdrojů softwarové aplikace při určité zátěži. Hlavním účelem testování výkonu je identifikovat a odstranit úzká místa výkonu v softwarové aplikaci. Je to podmnožina výkonnostního inženýrství a je také známá jako "Testování výkonu".

Testování výkonu se zaměřuje na kontrolu:

  • Rychlost – Určuje, zda aplikace reaguje rychle
  • Škálovatelnost – Určuje maximální uživatelskou zátěž, kterou softwarová aplikace zvládne
  • Stabilita – Určuje, zda je aplikace stabilní při různém zatížení

Proč je testování výkonu důležité?

Funkce a funkcionalita podporované softwarovým systémem nejsou jediným problémem. Výkon softwarové aplikace, jako je její doba odezvy, spolehlivost, využití zdrojů a škálovatelnost, je důležitý. Cílem testování výkonu není najít chyby, ale odstranit úzká místa ve výkonu.

Testování výkonu se provádí proto, aby zúčastněné strany získaly informace o své aplikaci, pokud jde o rychlost, stabilitu a škálovatelnost. A co je důležitější, testování výkonu odhaluje, co je třeba vylepšit před uvedením produktu na trh. Bez testování výkonu bude software pravděpodobně trpět problémy, jako je pomalý běh při současném používání několika uživateli, nekonzistence mezi různými operačními systémy a špatná použitelnost.

Proč je testování výkonu důležité

Testování výkonu určuje, zda software splňuje požadavky na rychlost, škálovatelnost a stabilitu při očekávaném zatížení. Aplikace uvedené na trh se špatnými metrikami výkonu kvůli neexistujícímu nebo špatnému testování výkonu si pravděpodobně získají špatnou pověst a nesplní očekávané prodejní cíle.

Takže, kritické aplikace jako jsou vesmírné startovací programy nebo záchranná lékařská zařízení by měla být testována, aby bylo zajištěno, že budou fungovat po dlouhou dobu bez odchylek.

Podle Dunn & Bradstreet zažívá 59 % společností z Fortune 500 odhadem 1.6 hodiny prostojů každý týden. Vzhledem k tomu, že průměrná společnost z Fortune 500 s minimálně 10,000 56 zaměstnanci platí 896,000 USD za hodinu, pracovní část nákladů na prostoje pro takovou organizaci by činila 46 XNUMX USD týdně, což by znamenalo více než XNUMX milionů USD ročně.

Jen a 5minutový výpadek webu Google.com (19-Aug-13) bude podle odhadů stát vyhledávacího giganta tolik jako $ 545,000.

Odhaduje se, že firmy ztratily tržby v hodnotě 1100 XNUMX $ za sekundu kvůli nedávné Amazon Výpadek webové služby.

Testování výkonu je proto důležité. Abychom vám s tímto procesem pomohli, podívejte se na tento seznam nástroje pro testování výkonu.

Typy výkonnostních testů

V testování softwaru existuje primárně šest typů testování výkonu, které jsou vysvětleny níže.

  • Zátěžové testy - kontroluje schopnost aplikace fungovat při očekávaném zatížení uživatele. Cílem je identifikovat úzká hrdla výkonu před spuštěním softwarové aplikace.
  • Stresové testování - zahrnuje testování aplikace při extrémní zátěži, abyste viděli, jak zvládá vysoký provoz nebo zpracování dat. Cílem je identifikovat bod zlomu aplikace.
  • Testování odolnosti - Dělá se to proto, aby se zajistilo, že software zvládne očekávanou zátěž po dlouhou dobu. Pomáhá to odhalit problémy, jako jsou úniky paměti a vyčerpání zdrojů, které se objevují pouze během trvalého provozu.
  • Špičkový test - testuje reakci softwaru na náhlé velké výkyvy v zátěži generované uživateli. Na rozdíl od zátěžového testování se špičkové testování zaměřuje konkrétně na to, jak systém zvládá prudké, krátkodobé výkyvy v zátěži a jak se z nich zotavuje.
  • Objemové testování – zahrnuje naplnění databáze velkým objemem dat a sledování chování celého softwarového systému. Cílem je ověřit výkon softwarové aplikace při různých objemech databáze.
  • Testování škálovatelnosti – určuje efektivitu softwarové aplikace při „škálování“ pro podporu rostoucí uživatelské zátěže. Pomáhá plánovat navyšování 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 ztratí potenciální uživatele. Testování výkonu zajišťuje, že aplikace běží dostatečně rychle, aby udržela pozornost a zájem uživatele. Následují běžné problémy s výkonem, kde je rychlost opakujícím se faktorem:

  • Dlouhá doba načítání – Doba načítání je obvykle doba, kterou aplikace potřebuje ke spuštění. Ta by se obecně měla minimalizovat. I když některé aplikace nelze načíst za méně než minutu, měla by se pokud možno udržet pod několika sekund.
  • Špatná doba odezvy - Doba odezvy je doba, která uplyne od okamžiku, kdy uživatel zadá data do aplikace, do okamžiku, kdy aplikace na tento vstup odpoví. Obecně by měla být velmi rychlá. Pokud musí uživatel čekat příliš dlouho, ztratí zájem.
  • Špatná škálovatelnost - Softwarový produkt trpí špatnou škálovatelností, když nezvládne očekávaný počet uživatelů nebo když nepojme dostatečně široký okruh uživatelů. Testování zatížení by mělo být zajištěno, že aplikace zvládne předpokládaný počet uživatelů.
  • Překážky – Úzká hrdla jsou překážky v systému, které snižují celkový výkon systému. K úzkým hrdlům dochází, když chyby v kódu nebo problémy s hardwarem způsobí snížení propustnosti při určitém zatížení. Úzká hrdla jsou často způsobena jednou chybnou částí kódu. Klíčem k vyřešení problému s úzkým hrdlem je nalezení části kódu, která způsobuje zpomalení, a pokus o jeho opravu v této části. Úzká hrdla se obvykle řeší 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í procesoru
    • Využití paměti
    • Využití sítě
    • Operating Omezení systému
    • Využití disku

Jak provést testování výkonu

Metodika přijatá pro testování výkonu se může značně lišit, ale cíl testů výkonu zůstává stejný. Může pomoci prokázat, že váš softwarový systém splňuje určitá předem definovaná 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ý postup, jak provádět testování výkonu.

Proces testování výkonu
Proces testování výkonu

Krok 1) Identifikujte své testovací prostředí

Seznamte se s fyzickým testovacím prostředím, produkčním prostředím a dostupnými testovacími nástroji. Před zahájením testovacího procesu si ujasněte podrobnosti o hardwarových, softwarových a síťových konfiguracích použitých během testování. To testerům pomůže vytvářet efektivnější testy. Také to pomůže identifikovat možné problémy, s nimiž se testeři mohou setkat během testování výkonu.

Krok 2) Identifikujte kritéria přijatelnosti výkonu

To zahrnuje cíle a omezení propustnosti, doby odezvy a alokaci zdrojů. Je také nutné identifikovat kritéria úspěšnosti projektu mimo tyto cíle a omezení. Testeři by měli mít pravomoc stanovovat výkonnostní kritéria a cíle, protože specifikace projektu často neobsahují dostatečně širokou škálu výkonnostních benchmarků. Někdy nemusí být žádné. Pokud je to možné, je dobrým způsobem, jak stanovit výkonnostní cíle, nalezení podobné aplikace pro porovnání.

Krok 3) Naplánujte a navrhněte testy výkonu

Určete, jak se bude používání pravděpodobně lišit mezi koncovými uživateli, a identifikujte klíčové scénáře k testování všech možných případů použití. Je nutné simulovat různé koncové uživatele, naplánovat data z testů výkonu a nastínit, jaké metriky budou shromažďovány.

Krok 4) Konfigurace testovacího prostředí

Před spuštěním připravte testovací prostředí. Také si uspořádejte nástroje a další zdroje. Co nejvěrněji napodobte produkční prostředí, abyste zajistili realistické a proveditelné výsledky testů.

Krok 5) Implementujte návrh testu

Vytvořte testy výkonu podle návrhu testu.

Krok 6) Spusťte testy

Proveďte a sledujte testy.

Krok 7) Analýza, ladění a opakované testování

Konsolidujte, analyzujte a sdílejte výsledky testů. Poté je dolaďte a znovu otestujte, abyste zjistili, zda došlo ke zlepšení nebo snížení výkonu. Vzhledem k tomu, že se zlepšení s každým opakovaným testem obvykle zmenšují, zastavte test, pokud je úzké hrdlo způsobeno procesorem. Pak budete možná muset zvážit možnost zvýšení výkonu procesoru.

Metriky testování výkonu: Sledované parametry

Mezi základní parametry sledované při testování výkonu patří:

Metriky a parametry testování výkonu

  • 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é pro procesy 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 - ukazuje počet bitů za sekundu použitý síťovým rozhraním.
  • Soukromé bajty – počet bajtů, které proces alokoval a které nelze sdílet mezi ostatními procesy. Tyto bajty se používají k měření úniků paměti a využití.
  • Zavázaná paměť – množství použité virtuální paměti.
  • Stránky paměti za sekundu – počet stránek zapsaných na disk nebo přečtených z disku za účelem vyřešení hardwarových chyb stránky. K hardwarovým chybám stránky dochází, když je kód, který nepatří do aktuální pracovní sady, volán odjinud a načten z disku.
  • Chyby stránky/sekundu – celková rychlost, s jakou procesor zpracovává chybové stránky. K tomu dochází, když proces vyžaduje kód mimo svou pracovní sadu.
  • CPU přerušení za sekundu – průměrný počet hardwarových přerušení, které procesor přijímá a zpracovává každou sekundu.
  • Délka diskové fronty – průměrný počet požadavků na čtení a zápis zařazených do fronty pro vybraný disk během intervalu vzorkování.
  • Délka síťové výstupní fronty – délka výstupní fronty paketů v paketech. Cokoli většího než dva znamená zpoždění a je třeba zastavit úzké hrdlo.
  • Celkový počet bajtů sítě za sekundu – rychlost, s jakou jsou bajty odesílány a přijímány na rozhraní, včetně rámcových znaků.
  • Doba odezvy - doba od zadání požadavku uživatelem do přijetí prvního znaku odpovědi.
  • Propustnost - rychlost, s jakou počítač nebo síť přijímá požadavky za sekundu.
  • Množství sdružených připojení – počet uživatelských požadavků, které jsou splněny sdruženými připojeními. Čím více požadavků splňují připojení ve fondu, tím lepší bude výkon.
  • Maximální počet aktivních relací – maximální počet relací, které mohou být aktivní najednou.
  • Poměry zásahů – to se týká počtu SQL příkazy, které jsou zpracovávány daty uloženými v mezipaměti namísto drahých I/O operací. Toto je dobré místo, kde začít při řešení problémů s úzkým hrdlem.
  • Počet zásahů za sekundu – počet přístupů na webový server během každé sekundy zátěžového testu.
  • Rollback segment – množství dat, které lze kdykoli vrátit zpět.
  • Zámky databáze - zamykání tabulek a databází je potřeba sledovat a pečlivě ladit.
  • Nejlepší čekání - monitorováno za účelem určení, jaké čekací doby lze zkrátit při řešení rychlosti načítání dat z paměti.
  • Počet vláken - Stav aplikace lze měřit počtem spuštěných a aktuálně aktivních vláken.
  • Odvoz odpadu - zahrnuje vrácení nepoužívané paměti zpět do systému. Pro efektivitu je třeba monitorovat sběr paměti.

Příklad testovacích případů testování výkonu

Níže jsou uvedeny ukázkové testovací případy pro testování výkonu:

  • Testovací případ 01: Ověřte, že doba odezvy není delší než 4 sekundy, pokud k webu přistupuje současně 1000 uživatelů.
  • Testovací případ 02: Ověřte, zda je doba odezvy aplikace pod zátěží v přijatelném rozsahu, když je síťové připojení pomalé.
  • Testovací případ 03: Zkontrolujte maximální počet uživatelů, které aplikace zvládne, než dojde k jejímu zhroucení.
  • Testovací případ 04: Zkontrolujte dobu provádění databáze, když je současně čteno/zapisováno 500 záznamů.
  • Testovací případ 05: Zkontrolujte využití CPU a paměti aplikací a databázovým serverem za podmínek špičkového zatížení.
  • Testovací případ 06: Ověřte dobu odezvy aplikace při nízké, normální, střední a vysoké zátěži.

Během skutečného provádění testu výkonu jsou vágní pojmy jako přijatelný rozsah, velké zatížení atd. nahrazeny konkrétními čísly. Výkonoví inženýři nastavili tato čísla podle obchodních požadavků a technického prostředí aplikace.

Nejlepší postupy pro testování výkonu

Dodržování zavedených osvědčených postupů zajišťuje, že testování výkonu přináší spolehlivé výsledky. Tyto pokyny pomáhají týmům vyhnout se běžným nástrahám.

  • Zrcadlení produkčního prostředí – Nakonfigurujte testovací nastavení tak, aby co nejvěrněji odráželo produkční prostředí. Rozdíly ve verzích hardwaru nebo softwaru mohou vést k zavádějícím výsledkům.
  • Navrhněte realistické testovací scénáře – Vytvářejte testovací případy, které simulují skutečné chování uživatelů, včetně doby přemýšlení a kombinací souběžných transakcí.
  • Používejte metriky založené na percentilech – Spoléhejte se spíše na dobu odezvy 90. a 95. percentilu než pouze na průměry. Percentily odhalují koncovou latenci, kterou mohou průměry skrýt.
  • Testujte včas a průběžně – Integrujte testování výkonu do CI/CD pipeline, spíše než aby se s ním zacházelo jako s aktivitou v závěrečné fázi.
  • Dokumentace a základní výsledky – Zaznamenávejte výsledky z každého testovacího běhu. Porovnání nových výsledků s výchozími hodnotami usnadňuje detekci regresí napříč verzemi.

Jak umělá inteligence transformuje testování výkonu

Umělá inteligence je řešenáping testování výkonu automatizací složitých analytických úloh a aktivací prediktivních funkcí. Nástroje založené na umělé inteligenci analyzují historická data, detekují vzory a poskytují proveditelná doporučení bez nutnosti lidského zásahu v každém kroku.

  • Prediktivní detekce anomálií – Algoritmy umělé inteligence analyzují výkonnostní metriky v reálném čase během zátěžových testů a signalizují odchylky dříve, než se vyhrotí v kritické selhání.
  • Automatizovaná analýza hlavních příčin – Nástroje založené na umělé inteligenci korelují data napříč distribuovanými systémy, aby přesně určily komponenty způsobující snížení výkonu.
  • Inteligentní optimalizace testů – Modely strojového učení identifikují redundantní testovací scénáře a navrhují optimální konfigurace, čímž zkracují dobu provádění a zároveň zachovávají pokrytí.
  • Samoopravitelné testovací skripty – Umělá inteligence přizpůsobuje testovací skripty změnám rozhraní aplikací, čímž snižuje režijní náklady na údržbu sad výkonnostních testů.

Nástroje pro testování výkonu

Na trhu je k dispozici široká škála nástrojů pro testování výkonu. Výběr nástroje pro testování bude záviset na mnoha faktorech, jako jsou typy podporovaných protokolů, cena licence, hardwarové požadavky a podpora platformy. Níže je uveden seznam běžně používaných testovacích nástrojů.

  • HP LoadRunner - je jedním z nejoblíbenějších nástrojů pro testování výkonu na trhu. Tento nástroj dokáže simulovat stovky tisíc uživatelů a vystavovat aplikace reálné zátěži, aby zjistil jejich chování při očekávaném zatížení. LoadRunner obsahuje virtuální generátor uživatelů, který simuluje akce živých lidských uživatelů.
  • JMeter - jeden z předních open-source nástrojů používaných pro zátěžové testování webových a aplikačních serverů. Podporuje více protokolů a poskytuje rozsáhlé možnosti reportingu.

Nejčastější dotazy

Testování výkonu se provádí pouze pro systémy založené na architektuře klient-server. Aplikace, které nepoužívají architekturu klient-server, jako například samostatné stolní kalkulačky, testování výkonu nevyžadují.

Testování výkonu se zaměřuje na testování a reportování aktuálního výkonu aplikace. Výkonnostní inženýrství jde ještě dále kombinací testování s laděním pro optimalizaci celkové uživatelské zkušenosti a efektivity systému.

Zátěžové testování vyhodnocuje chování systému při očekávaném zatížení uživatelem a vyhledává úzká hrdla. Stresové testování posouvá aplikaci nad rámec normální kapacity, aby identifikovalo její bod zlomu a sledovalo chování při obnově.

Nejdůležitějšími metrikami jsou doba odezvy, propustnost, chybovost, využití CPU a využití paměti. TracPoužití těchto indikátorů pomáhá identifikovat úzká hrdla a ověřit, zda aplikace splňuje svá výkonnostní kritéria.

Testování výkonu by mělo začít brzy a probíhat průběžně. Jeho integrace do CI/CD pipeline umožňuje týmům detekovat regrese s každým sestavením, spíše než objevovat problémy až před vydáním.

Umělá inteligence automatizuje detekci anomálií, analýzu hlavních příčin a optimalizaci testů. Analyzuje historická data, aby předpovídala úzká hrdla, a automaticky přizpůsobuje testovací skripty změnám rozhraní aplikací.

Ne. Umělá inteligence zvyšuje efektivitu automatizací opakujících se analytických a detekčních úloh, ale lidská expertíza je stále nezbytná pro navrhování realistických testovacích scénářů, interpretaci obchodního kontextu a přijímání strategických optimalizačních rozhodnutí.

Cloudové testování nabízí škálovatelnost na vyžádání, distribuované generování zátěže z více regionů a nižší náklady na infrastrukturu. On-premise testování poskytuje větší kontrolu nad testovacím prostředím, ale vyžaduje investice do specializovaného hardwaru.

Shrňte tento příspěvek takto: