**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

Externé odkazy
--------------

Testing Environment for Performance and Load Testing