Testovanie výkonnosti softvéru

Testovanie výkonnosti softvéru je testovanie, ktoré sa vykonáva s cieľom určiť, ako sa systém správa pod určitou záťažou. 

Testovanie výkonnosti môže slúžiť na viacero účelov. Môže preukázať, či softvér spĺňa výkonnostné požiadavky. Môže porovnať dva systémy a určiť, ktorý pracuje lepšie alebo preukázať, ktoré časti systému alebo pracovnej záťaže spôsobujú zlé správanie systému. V diagnostických prípadoch je možné použiť nástroje, profilery, na zmeranie, ktoré časti zariadenia alebo softvéru sa najviac podieľajú na zlej výkonnosti alebo určiť úrovne priepustnosti systému a prahovú úroveň akceptovaného času odozvy.

Pri testovaní výkonnosti je často rozhodujúce a súčasne ťažko dosiahnuteľné, aby boli testovacie podmienky podobné, ako predpokladané skutočné podmienky nasadenia.

Technológia testovania výkonnosti 
Technológia testovania výkonnosti zamestnáva jeden alebo viac počítačov, ktoré slúžia ako injektory, teda každý simuluje prítomnosť určitého počtu používateľov a každý prevádzkujúci automatizovanú sekvenciu interakcií, čo je zaznamenané ako skript alebo séria skriptov na emuláciu rôznych typov používateľských vstupov na hostiteľskom systéme, ktorého výkon je testovaný. Obyčajne sa používa zvláštny počítač ako vodič testu, ktorý koordinuje a zbiera metriku z každého injektora a zbiera dáta na účely vykazovania výsledov, reporting. Typickou sekvenciou je zvyšovanie záťaže, pričom sa začína s malým počtom virtuálnych používateľov, ktorých počet sa s časom zvyšuje na určité maximum. Výsledok testovania ukáže, ako sa výkonnosť mení s časom, vyjadrené pomerom používateľov k času odozvy. Na tento účel slúžia rôzne nástroje, napríklad Compuware Corporation QACenter Performance Edition. Nástroje tejto kategórie obyčajne vykonávajú sadu testov, ktoré emulujú skutočných používateľov v systéme. Tieto výsledky môžu niekedy odhaliť zvláštnosti, napríklad ak je priemerná doba odozvy akceptovateľná, môžu existovať odchýlky istých kľúčových transakcií, ktoré môžu trvať podstatne dlhšie, čo môže byť spôsobené napríklad neefektívnymi databázovými dopytmi a podobne.

Testovanie výkonnosti môže byť kombinované so stress testami, aby bolo možné určiť, čo sa stane po prekročení akceptovanej záťaže:
 Spadne systém?
 Ako dlho trvá systému zotavenie, až sa zníži nadmerná záťaž?
 Zlyhá systém tak, že spôsobí škodu?

Výkonnostné špecifikácie 
Testovanie výkonnosti často nie je vykonávané podľa špecifikácie, teda nie je určené, čo je maximálny akceptovaný čas odozvy pre daný typ používateľa. Používa sa však často ako súčasť procesu vylaďovania výkonnostného profilu. Cieľom je identifikovať „najslabšiu časť“, čo je nevyhnutné, pretože ak bude táto časť pracovať efektívnejšie, celý systém bude pracovať rýchlejšie. Niekedy je náročné identifikovať najslabšiu časť, ale existujú testovacie nástroje, ktoré poskytujú (alebo obsahujú doplnky, ktoré poskytujú) prostriedky, ktoré bežia na serveri a vykazujú napríklad:
 doby trvania transakcií
 prístupové časy do databázy
 sieťovú réžiu

Tieto dáta môžu byť analyzované spolu s čistými štatistikami výkonnostných testov. Bez týchto nástrojov by bolo potrebné sledovať záťaž systému manuálne, napríklad pomocou správcu úloh v operačnom systéme na serveri.

Testovanie výkonnosti takmer konštantne preukazuje, že sú to časti softvéru a nie hardvér, ktoré sa najviac podieľajú na zdržaniach pri spracúvaní používateľských požiadaviek.

Testovanie môže prebiehať cez web, dokonca v rôznych častiach krajiny, hoci je známe, že časy odozvy Internetu sa tiež menia vzhľadom na lokalitu. Môže prebiehať tiež vo vnútropodnikovom prostredí, v tomto prípade je však nutné, aby boli routery nakonfigurované tak, aby simulovali typické zdržanie – lag, ktoré je obvyklé vo verejných sieťach.

Vždy je vhodné mať prehľad o predpokladanom počte používateľov, ktorý môže byť očakávaný v čase špičky. Ak je možné mať aj prehľad o tom, čím sa dosiahne maximálna prípustná záťaž 95 percentného času odozvy, potom môže byť použitá konfigurácia injektora na otestovanie, či systém spĺňa túto požiadavku.

Úlohy, ktoré treba vykonať 
 Analýza typov interakcií, ktoré by mali byť emulované a vytvorenie skriptov, ktoré vykonajú dané operácie
 Rozhodnutie, či sa použijú interné alebo externé prostriedky na vykonanie testov
 Nastavenie konfigurácie injektorov a kontroléra – vodiča testov
 Nastavenie testovacej konfigurácie (ideálne je identický hardvér), konfigurácia routerov, tichá sieť (na obmedzenie ovplyvňovania inými používateľmi), nasadenie serverových nástrojov
 Beh testov – pravdepodobne opakovane, na určenie, či nejaký nečakaný faktor neovplyvní výsledky
 Analýza výsledkov (prebehol/zlyhal) alebo vyšetrovanie kritického miesta a odporúčanie nápravného opatrenia

Testovanie softvéru