Dacă doriți să fiți siguri că site-ul dvs. funcționează bine indiferent de nivelul de trafic pe care îl are, atunci ar trebui să faceți teste de încărcare.

În termeni simpli, testarea sarcinii este un subset de testare a performanței. Este folosit pentru a recunoaște limita superioară a unei aplicații web și pentru a verifica modul în care sistemul poate face față unei sarcini grele.

Dacă v-ați întrebat vreodată: Cum se va comporta acest site în termeni de performanță sub sarcină extremă dacă prea mulți utilizatori îl accesează simultan? apoi citiți mai departe, deoarece aceasta este exact întrebarea la care vom răspunde în acest articol.

Mai jos vă vom arăta trei instrumente diferite cu ajutorul cărora se poate efectua acest tip de testare.

Dar, înainte de a începe să folosim aceste instrumente, să vedem mai întâi ce date trebuie să colectăm.

Când vine vorba de testarea performanței, aceștia sunt indicatorii care descriu cel mai bine aplicația noastră:

  • Timp de raspuns – cantitatea de timp dintre o cerere și un răspuns.
  • Timp mediu de încărcare – timpul mediu de răspuns.
  • Timpul maxim de răspuns – cel mai lung timp de răspuns.
  • Debit / solicitări pe secundă (rps) – numărul de solicitări gestionate pe secundă
  • Utilizarea memoriei / procesorului – cantitatea de memorie / CPU consumată de mașina gazdă.
  • Rata de eroare – raportul erori / solicitări.
  • Utilizatori concurenți – numărul de utilizatori activi / sesiuni din aplicație.
  • Percentile (50% și 95%) – procentul de solicitări care au avut un timp mai bun decât o anumită valoare.

LoadTest

Un ghid practic pentru testarea sarcinii
loadtest

Primul instrument este un npm pachetul numit loadtest.

Pentru a utiliza acest instrument trebuie să aveți NodeJS instalat pe mașina dvs., atunci trebuie să rulați această comandă:

npm install -g loadtest

LoadTest este de departe cel mai simplu și mai ușor instrument din această listă de configurat și utilizat. Tot ce trebuie să faceți este să deschideți o linie de comandă și să rulați:

loadtest [-n requests] [-c concurrency] URL

În scopuri demonstrative, vom folosi site-ul meu preferat blank.org, care este o pagină web goală utilizată în principal în scopuri de testare.

Următoarea comandă va trimite un număr de maxim 60 de cereri de la 30 de clienți simultani diferiți:

loadtest -n 60 -c 30 https://blank.org

!Notă: numărul de utilizatori simultani nu înseamnă numărul de solicitări simultane.

Utilizatorii / sesiunile simultane reprezintă numărul de utilizatori conectați la aplicație care efectuează cereri la intervale regulate, dar simultan.

Ieșirea comenzii anterioare va fi următoarea:

1611463567 491 Un ghid practic pentru testarea sarcinii

Acest instrument ne oferă informații despre:

  • percentile (50,90,95,99 și 100%)
  • latență medie
  • rata de eroare

Putem vedea că pentru blank.org timpul în milisecunde pentru 50% din solicitările noastre (30 de cereri) este mai mic de 581 ms și răspunsul pentru cea mai lungă solicitare a durat 649 ms.

Un ghid practic pentru testarea sarcinii

Moara de încărcare

1611463568 168 Un ghid practic pentru testarea sarcinii
Moara de încărcare

Un alt instrument pe care îl putem folosi este Loadmill, un instrument gratuit de testare bazat pe web. De asemenea, vine cu un npm pachet dacă vrem să scriem noi înșine codul, dar în scopuri demonstrative vom merge cu instrumentul online.

Pentru a efectua un test de încărcare utilizând Loadmill tot ce trebuie să facem este să creăm o cerere în panoul corespunzător și să furnizăm adresa URL a aplicației noastre.

1611463569 590 Un ghid practic pentru testarea sarcinii

Următorul pas este să lovești Rulați testul butonul și configurați numărul de sesiuni simultane și durata testului.

1611463570 45 Un ghid practic pentru testarea sarcinii

Veți observa că blank.org domeniul apare într-un buton roșu. Asta pentru că este un domeniu neconfirmat. La urma urmei, nu dețin blank.org site-ul web. Din acest motiv, există un anumit prag maxim de încărcare pe care îl putem trimite către acel site.

Cu această configurație, vom vedea cum se comportă blank.org atunci când 5 sesiuni simultane încearcă să utilizeze aplicația într-un interval de timp de 2 minute.

1611463570 703 Un ghid practic pentru testarea sarcinii

Ca rezultat putem vedea performanța în timp:

  • Toate cererile au avut un timp mediu de răspuns de 55 ms,
  • Am avut o privire la început, unde 95% dintre solicitări au avut un timp de răspuns mai mic de 1.059 ms și 50% dintre solicitări au avut un timp de răspuns mai mic de 51 ms

Aceasta înseamnă că cel mai lung timp pentru un răspuns a durat mai mult de 1 secundă.

În același timp, putem vedea rata de eroare și debit în rps (solicitări pe secundă) din sesiunile noastre. Acesta este numărul de solicitări trimise de utilizatorii noștri concurenți într-un interval de timp de 1 secundă.

Acum vă puteți întreba, de ce această mare discrepanță între rezultatele primului instrument și acesta?

Iată un lucru extrem de important la care trebuie să acordați atenție, și anume relevanța și corectitudinea datelor.

Trebuie să fii realist și să încerci ca testele să reflecte realitatea cât mai mult posibil. (…)

Există mai multe strategii atunci când vine vorba de testarea performanței. Unele instrumente și furnizori folosesc doar mediul local, iar altele produc mașini virtuale pentru fiecare utilizator simultan.

(…)Moara de încărcare diferă de alte servicii datorită utilizării traficului web real pentru a genera încărcarea pe serverul testat. Cu alte cuvinte, traficul care merge către site-ul vizat provine browsere reale.

Loadtest pachetul este puternic legat de mașina locală pe care executați testele și puteți merge cât de mult vă permite CPU-ul.

După cum ați văzut, am efectuat testele folosind loadtest pe aparatul meu folosind linia de comandă. Timpul de răspuns a fost de 10 ori mai mare decât timpul de răspuns utilizat Moara de încărcare. Să aflăm de ce.

Dacă deschidem instrumente pentru dezvoltatori pe blank.org, putem găsi IP-ul și asta este 18.217.80.105.Folosind această valoare putem efectua o căutare IP și putem vedea că serverul este situat în Ohio, SUA ??.(…)

Știm că timpul de răspuns este timpul măsurat între o cerere și un răspuns. Deci, cererea merge la server și de la server înapoi la agent (browser).

Cu primul instrument, am obținut aproximativ 500 ms, deoarece trimit solicitările de pe mașina mea. Deci, cererile trebuie să parcurgă înainte și înapoi aproape 11000 de mile.

Dacă mergem pe al doilea panou al rezultatelor testelor noastre PERFORMANȚĂ / ȚĂRĂ. Vedem că toate cererile au fost trimise din SUA. De aceea timpul de răspuns semnificativ mai mic.

1611463571 981 Un ghid practic pentru testarea sarcinii

Amintiți-vă atunci când testați că este mai bine să simulați condiții cât mai apropiate de realitate, astfel încât datele să fie cât mai exacte.

Înainte de a trece la următorul instrument, vreau să menționez încă un lucru despre Loadmill și acesta este faptul că poate fi configurat pentru a face mult mai mult decât atât.

Putem crea scenarii complexe de testare a încărcării cu mai multe solicitări care conțin parametri și date, inclusiv autentificare de bază și notificări prin e-mail.

1611463571 769 Un ghid practic pentru testarea sarcinii

Apache JMeter

1611463572 816 Un ghid practic pentru testarea sarcinii
Apache JMeter

Ultimul instrument din lista noastră este Apache JMeter, care este o aplicație open-source bazată pe Java pentru testarea performanței. Această aplicație necesită o instalare și este puțin mai greu de configurat. Prin urmare, următoarele informații sunt separate în pași.

Pasul 1 – Descărcați și instalați

Descarca arhivele binare din computer și dezarhivați conținutul.

Apoi, intrați în cos folder și rulați fișierul jmeter.bat dosar de două ori. O dată pentru a configura instrumentul și a doua oară pentru ao porni.

Pasul 2 – Adăugați un grup de fire

1611463572 102 Un ghid practic pentru testarea sarcinii

Grup de fire are trei proprietăți deosebit de importante care influențează testul de sarcină:

  • Număr de fire (utilizatori): Numărul de sesiuni simultane pe care JMeter le va crea.
  • Perioada Ramp-Up (în secunde): Durata testului.
  • Numărul de bucle: De câte ori se execută testul.
1611463572 114 Un ghid practic pentru testarea sarcinii

Pasul 3 – Adăugați un Sampler de solicitări HTTP

1611463573 518 Un ghid practic pentru testarea sarcinii

În Exemplu de solicitare HTTP, în secțiunea Cerere HTTP, completați Nume server, protocol și cale a aplicației pe care doriți să o testați.

1611463573 559 Un ghid practic pentru testarea sarcinii

Pasul 4 – Adăugați o vizualizare

În JMeter, veți utiliza ascultători pentru a obține rezultatele unui test de performanță. Există o varietate de ascultători disponibili și puteți adăuga alții instalând pluginuri. Să folosim Tabelul în acest caz.

1611463573 41 Un ghid practic pentru testarea sarcinii

Pasul 5 – Rulați testul

Rulați testul făcând clic pe triunghiul verde.

1611463574 649 Un ghid practic pentru testarea sarcinii

Acum putem analiza testul nostru.

În primul rând, putem vedea în colțul din dreapta sus că testul se desfășoară timp de 10 secunde, exact așa cum am specificat mai sus în opțiuni.

După aceea, coloanele care ne interesează cel mai mult sunt stare și Latență.

  • Latență: Numărul de milisecunde care a trecut între cerere și când a fost primit un răspuns inițial.
  • (…)Stare – Reprezintă starea cererii, dacă a avut succes sau nu. Este folosit pentru a calcula rata de eroare.

(…)Ca o notă laterală, putem observa că valorile sunt similare cu cele obținute folosind loadtest. Asta pentru că funcționează la fel.(…)

Indicatori rămași

Cu aceste instrumente, am obținut informații despre majoritatea indicatorilor despre care am vorbit la început.

În cele din urmă, dacă dorim să obținem informații despre Utilizarea memoriei / procesorului de asemenea, atunci trebuie să ne conectăm la mașina noastră unde este găzduită aplicația și să rulăm următoarele comenzi:

$ top

Această comandă vă va arăta atât utilizarea procesorului ca procent, cât și utilizarea memoriei.

1611463574 21 Un ghid practic pentru testarea sarcinii

sau

$ free -h

Această comandă vă va arăta doar date despre memorie, dar este mai ușor de citit.

1611463575 21 Un ghid practic pentru testarea sarcinii

Concluzie

Există o mulțime de instrumente care pot fi utilizate pentru efectuarea testelor de performanță. Ceea ce este important este să găsiți unul care să fie simplu de utilizat, dar care să vă arate și cele mai exacte date pentru cazul dvs. Și nu uitați, faceți întotdeauna testele dvs. să simuleze condiții cât mai apropiate de realitate.