Programovanie

Tipy JMeter

JMeter je populárny open source nástroj na testovanie záťaže s mnohými užitočnými funkciami modelovania, ako sú skupina vlákien, časovač a prvky vzorkovača HTTP. Tento článok dopĺňa Príručku používateľa JMeter a poskytuje pokyny na používanie niektorých prvkov modelovania JMeter na vývoj skriptu na testovanie kvality.

Tento článok sa venuje aj dôležitej otázke v širšom kontexte: špecifikácii presných požiadaviek na čas odozvy a validácii výsledkov testov. Konkrétne sa používa dôsledná štatistická metóda, analýza intervalu spoľahlivosti.

Upozorňujeme, že predpokladám, že čitatelia poznajú základy aplikácie JMeter. Príklady tohto článku sú založené na JMeter 2.0.3.

Určte dobu nábehu skupiny vlákien

Prvou ingredienciou vo vašom skripte JMeter je skupina vlákien, tak si to najskôr prečítajme. Ako je znázornené na obrázku 1, prvok Skupiny závitov obsahuje nasledujúce parametre:

  • Počet vlákien.
  • Nábehové obdobie.
  • Počet pokusov o vykonanie testu.
  • Po spustení, či test beží okamžite, alebo počká do naplánovaného času. Ak je to druhé, musí prvok skupiny vlákien obsahovať aj začiatočný a konečný čas.

Každé vlákno vykonáva plán testovania nezávisle od ostatných vlákien. Preto sa skupina vlákien používa na modelovanie súbežných používateľov. Ak na klientskom počítači, na ktorom je spustený program JMeter, chýba dostatok výpočtového výkonu na modelovanie veľkej záťaže, funkcia distribučného testovania produktu JMeter vám umožňuje ovládať viac vzdialených strojov JMeter z jednej konzoly JMeter.

Obdobie nábehu informuje JMeter o čase potrebnom na vytvorenie celkového počtu vlákien. Predvolená hodnota je 0. Ak je doba rozbehu nešpecifikovaná, t. J. Doba rozbehu je nula, vytvorí JMeter všetky vlákna okamžite. Ak je perióda rozbehu nastavená na T sekúnd a celkový počet vlákien je N, JMeter vytvorí vlákno každých T / N sekúnd.

Väčšina parametrov skupiny vlákien je samozrejmých, ale doba rozbehu je trochu divná, pretože nie vždy je vhodný počet zrejmý. Jedna vec by mala byť doba rozbehu nulová, ak máte veľký počet vlákien. Na začiatku testu zaťaženia, ak je doba rozbehu nulová, vytvorí JMeter všetky vlákna naraz a okamžite odošle požiadavky, čím potenciálne nasýti server a čo je dôležitejšie, klamne zvýši zaťaženie. To znamená, že server by sa mohol preťažiť nie preto, že je priemerná miera prístupov vysoká, ale preto, že odošlete všetky prvé požiadavky vlákien súčasne, čo spôsobí neobvyklú počiatočnú najvyššiu mieru prístupov. Tento efekt môžete vidieť na poslucháčovi súhrnnej správy JMeter.

Pretože táto anomália nie je žiaduca, je pravidlom pre určenie primeranej doby rozbehu udržiavať počiatočnú mieru úspešnosti blízko priemernej miery úspešnosti. Pred nájdením primeraného počtu bude samozrejme potrebné vykonať plán testov raz.

Z rovnakého dôvodu tiež nie je vhodná veľká doba rozbehu, pretože môže dôjsť k podhodnoteniu špičkového zaťaženia. To znamená, že niektoré vlákna sa možno ani nezačali, zatiaľ čo niektoré počiatočné vlákna už boli ukončené.

Ako teda overíte, že doba rozbehu nie je ani príliš malá, ani príliš veľká? Najskôr odhadnite priemernú mieru prístupov a potom vypočítajte počiatočné obdobie nábehu vydelením počtu vlákien odhadovanou mierou prístupov. Napríklad ak je počet vlákien 100 a odhadovaná miera prístupov je 10 prístupov za sekundu, odhadovaná ideálna doba rozbehu je 100/10 = 10 sekúnd. Ako prídete k odhadovanej miere zásahov? Nie je ľahká cesta. Musíte najskôr spustiť testovací skript.

Po druhé, do plánu testov pridajte poslucháča súhrnných správ, ktorý je znázornený na obrázku 2; obsahuje priemernú mieru prístupov každej jednotlivej požiadavky (vzorkovače JMeter). Miera prístupov prvého vzorkovača (napr. Požiadavka HTTP) úzko súvisí s dobou nábehu a počtom vlákien. Upravte periódu nábehu tak, aby sa miera úspešnosti prvého vzorkovača plánu testu priblížila priemernej miere úspešnosti všetkých ostatných vzorkovačov.

Po tretie, v denníku JMeter (umiestnenom v priečinku JMeter_Home_Directory / bin) overte, či prvé vlákno, ktoré skončí, skutočne skončí po spustení posledného vlákna. Časový rozdiel medzi nimi by mal byť čo najďalej.

Stručne povedané, stanovenie dobrého času rozbehu sa riadi nasledujúcimi dvoma pravidlami:

  • Miera úspešnosti prvého vzorkovača by sa mala blížiť priemernej miere zásahu ostatných vzorkovačov, čím sa zabráni krátkej dobe nábehu
  • Prvé vlákno, ktoré končí, skutočne končí po začiatku posledného vlákna, najlepšie čo najďalej od seba, čím sa zabráni veľkej dobehu rozbehu

Niekedy sú tieto dve pravidlá v rozpore. To znamená, že jednoducho nenájdete vhodné obdobie rozbehu, ktoré by vyhovovalo obom pravidlám. Triviálny testovací plán zvyčajne spôsobuje tento problém, pretože v takomto pláne chýba dostatok vzorkovačov pre každé vlákno; plán testov je teda príliš krátky a vlákno rýchlo dokončí svoju prácu.

Užívateľ si myslí čas, časovač a proxy server

Dôležitým prvkom, ktorý treba brať do úvahy pri záťažovej skúške, je premýšľať čas, alebo pauza medzi po sebe nasledujúcimi požiadavkami. Oneskorenie spôsobujú rôzne okolnosti: používateľ potrebuje čas na prečítanie obsahu alebo na vyplnenie formulára alebo na vyhľadanie správneho odkazu. Nesprávne zváženie času premýšľania vedie často k vážne skresleným výsledkom testu. Napríklad odhadovaná škálovateľnosť, t. J. Maximálne zaťaženie (súbežní používatelia), ktoré systém dokáže udržať, sa bude javiť ako nízke.

JMeter poskytuje sadu prvkov časovača na modelovanie času na premýšľanie, stále však zostáva otázka: ako určíte vhodný čas na premýšľanie? Našťastie JMeter ponúka dobrú odpoveď: prvok JMeter HTTP Proxy Server.

Proxy server zaznamenáva vaše akcie pri prehliadaní webovej aplikácie v normálnom prehľadávači (napríklad FireFox alebo Internet Explorer). Okrem toho program JMeter vytvorí plán testov pri zaznamenávaní vašich akcií. Táto funkcia je mimoriadne pohodlná z niekoľkých dôvodov:

  • Požiadavku HTTP nemusíte vytvárať ručne, najmä pokiaľ ide o zdĺhavé parametre formulára. (Iné ako anglické parametre však nemusia fungovať správne.) JMeter zaznamená všetko v automaticky generovaných požiadavkách vrátane skrytých polí.
  • V generovanom testovacom pláne obsahuje JMeter všetky hlavičky HTTP vygenerované prehliadačom, ako napríklad User-Agent (napr. Mozilla / 4.0) alebo AcceptLanguage (napr. Zh-tw, en-us; q = 0,7, zh- cn; q = 0,3).
  • JMeter môže vytvárať časovače podľa vášho výberu, kde čas oneskorenia je nastavený podľa skutočného oneskorenia počas doby nahrávania.

Pozrime sa, ako nakonfigurovať JMeter s funkciou nahrávania. V konzole JMeter kliknite pravým tlačidlom myši na prvok WorkBench a pridajte prvok HTTP Proxy Server. Upozorňujeme, že kliknete pravým tlačidlom myši na prvok WorkBench, nie na prvok Test Plan, pretože tu uvedená konfigurácia slúži na zaznamenávanie, nie na vykonateľný plán testu. Účelom prvku HTTP Proxy Server je, aby ste nakonfigurovali proxy server prehľadávača tak, aby všetky požiadavky prešli cez JMeter.

Ako je znázornené na obrázku 3, pre prvok HTTP Proxy Server musí byť nakonfigurovaných niekoľko polí:

  • Prístav: Počúvací port používaný serverom proxy.
  • Ovládač cieľa: Kontrolér, do ktorého proxy ukladá vygenerované vzorky. V predvolenom nastavení bude JMeter hľadať záznamový radič v aktuálnom testovacom pláne a ukladať tam vzorky. Prípadne môžete vybrať ľubovoľný prvok radiča uvedený v ponuke. Predvolená hodnota je zvyčajne v poriadku.
  • Zoskupenie: Ako by ste chceli zoskupiť vygenerované prvky v testovacom pláne. K dispozícii je niekoľko možností a tou najrozumnejšou je pravdepodobne „Uložiť iba prvý vzorkovník každej skupiny“, inak sa budú zaznamenávať aj adresy URL vložené do stránky, napríklad pre obrázky a JavaScripty. Možno však budete chcieť vyskúšať predvolenú možnosť „Nezoskupovať vzorky“, aby ste zistili, čo presne pre vás program JMeter v testovacom pláne vytvorí.
  • Vzory na zahrnutie a Vylúčené vzory: Pomôže vám odfiltrovať niektoré nechcené požiadavky.

Po kliknutí na tlačidlo Štart sa spustí proxy server a začne zaznamenávať prijaté požiadavky HTTP. Pred kliknutím na tlačidlo Štart musíte samozrejme nakonfigurovať nastavenie servera proxy vášho prehliadača.

Môžete pridať časovač ako podradený prvok prvku HTTP Proxy Server, ktorý dá inštrukcii JMeteru, aby automaticky pridal časovač ako podradený prvok požiadavky HTTP, ktorú generuje. JMeter automaticky ukladá skutočné časové oneskorenie do volanej premennej JMeter T, takže ak pridáte gaussovský náhodný časovač k prvku HTTP Proxy Server, mali by ste napísať $ {T} v poli Konštantné oneskorenie, ako je to znázornené na obrázku 4. Toto je ďalšia pohodlná funkcia, ktorá vám ušetrí veľa času.

Upozorňujeme, že časovač spôsobí oneskorenie dotknutých vzorkovačov. To znamená, že ovplyvnené požiadavky na vzorkovanie sa neodošlú skôr, ako uplynie zadaný čas oneskorenia od poslednej prijatej odpovede. Preto by ste mali manuálne odobrať vygenerovaný časovač prvého vzorkovača, pretože prvý vzorkovač ho zvyčajne nepotrebuje.

Pred spustením proxy servera HTTP by ste mali do testovacieho plánu pridať skupinu vlákien a potom do skupiny vlákien pridať radič záznamu, kde sa budú generované prvky ukladať. Inak sa tieto prvky pridajú priamo do WorkBench. Okrem toho je dôležité pridať do záznamového radiča prvok HTTP Request Defaults (konfiguračný prvok), aby JMeter ponechal nevyplnené tie polia, ktoré sú definované v predvolených nastaveniach požiadavky HTTP.

Po zaznamenaní zastavte server proxy HTTP; kliknite pravým tlačidlom myši na prvok Recording Controller a uložte zaznamenané prvky do samostatného súboru, aby ste ich mohli neskôr načítať. Nezabudnite v serveri obnoviť nastavenie servera proxy.

Zadajte požiadavky na čas odozvy a overte výsledky testov

Aj keď to priamo nesúvisí s JMeterom, špecifikácia požiadaviek na čas odozvy a validácia výsledkov testov sú dve dôležité úlohy pre testovanie záťaže, pričom JMeter je mostom, ktorý ich spája.

V súvislosti s webovými aplikáciami sa časom odozvy rozumie čas, ktorý uplynul medzi podaním žiadosti a prijatím výsledného kódu HTML. Technicky by čas odozvy mal zahŕňať čas, ktorý má prehliadač na vykreslenie stránky HTML, ale prehliadač zvyčajne zobrazuje stránku po kúskoch, čím je vnímaný čas odozvy kratší. Nástroj na testovanie zaťaženia navyše zvyčajne počíta čas odozvy bez zohľadnenia času vykreslenia. Preto z praktických dôvodov testovania výkonnosti prijímame vyššie uvedenú definíciu. Ak máte pochybnosti, pridajte k nameranému času odozvy konštantu, povedzme 0,5 sekundy.

Pre stanovenie kritérií doby odozvy existuje sada dobre známych pravidiel:

  • Používatelia si nevšimnú oneskorenie kratšie ako 0,1 sekundy
  • Oneskorenie kratšie ako 1 sekunda neruší tok myšlienok používateľa, ale všimnete si určité oneskorenie
  • Používatelia budú stále čakať na odpoveď, ak sa oneskorí o menej ako 10 sekúnd
  • Po 10 sekundách sa používatelia prestanú sústrediť a začnú robiť niečo iné

Tieto prahové hodnoty sú dobre známe a nezmenia sa, pretože priamo súvisia s kognitívnymi vlastnosťami ľudí. Aj keď by ste mali nastaviť svoje požiadavky na čas odozvy v súlade s týmito pravidlami, mali by ste ich tiež upraviť pre svoju konkrétnu aplikáciu. Napríklad domovská stránka Amazon.com dodržiava vyššie uvedené pravidlá, ale pretože uprednostňuje štylistickejší vzhľad, obetuje trochu času odozvy.

Na prvý pohľad sa zdajú byť dva rôzne spôsoby, ako určiť požiadavky na čas odozvy:

  • Priemerný čas odozvy
  • Absolútna doba odozvy; to znamená, že doby odozvy všetkých odpovedí musia byť pod prahovou hodnotou

Zadanie priemerných požiadaviek na čas odozvy je jednoduché, ale skutočnosť, že táto požiadavka nezohľadňuje variáciu údajov, je znepokojujúca. Čo ak je doba odozvy 20 percent vzoriek viac ako trojnásobok priemeru? Upozorňujeme, že JMeter pre vás v poslucháčovi výsledkov grafu vypočítava priemerný čas odozvy a štandardnú odchýlku.

Na druhej strane je požiadavka na absolútnu dobu odozvy dosť prísna a štatisticky nepraktická. Čo ak neprešlo testami iba 0,5 percenta vzoriek? To opäť súvisí s variáciou vzorkovania. Našťastie dôsledná štatistická metóda nezohľadňuje variáciu vzorkovania: analýzu intervalu spoľahlivosti.

Skôr ako ideme ďalej, poďme si skontrolovať základné štatistiky.

Centrálna limitná veta

Centrálna limitná veta uvádza, že ak má populačné rozdelenie strednú μ a štandardnú odchýlku σ, potom pre dostatočne veľké n (> 30) je vzorkovacie rozdelenie vzorkovacieho priemeru približne normálne, so strednou μznamenajú = μ a štandardná odchýlka σznamenajú = σ / √n.

Poznač si to rozdelenie vzorkovacieho priemeru je normálne. Samotné rozdelenie vzorkovania nie je nevyhnutne normálne. To znamená, že ak testovací skript spustíte mnohokrát, distribúcia výsledných priemerných časov odozvy bude normálna.

Obrázky 5 a 6 nižšie ukazujú dve normálne rozdelenia. V našom kontexte je horizontálna os vzorkovací priemer doby odozvy posunutý tak, aby bol stredný priemer populácie v počiatku. Obrázok 5 ukazuje, že v 90 percentách času sú prostriedky vzorkovania v intervale ± Zσ, kde Z = 1,645 a σ je štandardná odchýlka. Obrázok 6 zobrazuje 99-percentný prípad, kde Z = 2,576. Pre danú pravdepodobnosť, povedzme 90 percent, môžeme vyhľadať zodpovedajúcu hodnotu Z s normálnou krivkou a naopak.

$config[zx-auto] not found$config[zx-overlay] not found