load testing complete guide
Un ghid complet de testare a încărcării pentru începători:
În acest tutorial, vom afla de ce efectuăm testarea încărcării, ce se realizează din aceasta, arhitectură, care este abordarea care trebuie urmată pentru a executa cu succes un test de încărcare, cum să configurați un mediu de testare a sarcinii, cele mai bune practici, împreună cu cele mai bune instrumente de testare a sarcinii disponibile pe piață.
Am auzit de ambele tipuri de testare funcțională și nefuncțională. În testarea nefuncțională, avem diferite tipuri de testare, cum ar fi testarea performanței, testarea securității, testarea interfeței utilizator etc.
Prin urmare, Testarea încărcării este un tip de testare nefuncțională, care este un subset de testare a performanței.
Astfel, când spunem că testăm o aplicație pentru performanță, ce testăm aici? Testăm aplicația pentru încărcare, volum, capacitate, stres etc.
Ce veți învăța:
- Ce este Testarea sarcinii?
- Load Test Architecture
- De ce încărcarea testării?
- Mediu inconjurator
- Abordare
- Cele mai bune practici
- Concluzie
- Lectură recomandată
Ce este Testarea sarcinii?
Testarea încărcării este un subset de testare a performanței, în care testăm răspunsul sistemului în condiții de încărcare variate, simulând mai mulți utilizatori care accesează simultan aplicația. Această testare măsoară de obicei viteza și capacitatea aplicației.
Astfel, ori de câte ori modificăm încărcarea, monitorizăm comportamentul sistemului în diferite condiții.
Exemplu :Să presupunem că cerința clientului pentru o pagină de autentificare este de 2-5 secunde și că aceste 2-5 secunde ar trebui să fie consecvente pe tot parcursul până când încărcarea este de 5000 de utilizatori. Deci, ce ar trebui să observăm auzi? Este doar capacitatea de manipulare a sarcinii a sistemului sau este doar necesarul de timp de răspuns?
Răspunsul este ambele. Vrem sistemul care poate gestiona o încărcătură de 5000 de utilizatori cu un timp de răspuns de 2-5 secunde pentru toți utilizatorii concurenți.
Deci, ce se înțelege prin utilizator simultan și utilizator virtual?
Utilizatorii concurenți sunt cei care se conectează la aplicație și, în același timp, efectuează împreună un set de activități și deconectează aplicația în același timp. Pe de altă parte, utilizatorii virtuali intră și ies din sistem, indiferent de celelalte activități ale utilizatorilor.
Load Test Architecture
În diagrama de mai jos putem vedea cum accesează aplicația diferiți utilizatori. Aici fiecare utilizator face o cerere prin internet, care ulterior este trecută printr-un firewall.
După firewall, avem un echilibru de încărcare care distribuie încărcarea oricăruia dintre serverele web și apoi trece la serverul de aplicații și mai târziu la serverul bazei de date, unde preia informațiile necesare pe baza cererii utilizatorului.
Testarea încărcării se poate face manual, precum și folosind un instrument. Dar testarea manuală a sarcinii nu este recomandată, deoarece nu testăm aplicația pentru o încărcare mai mică.
Exemplu: Să presupunem că dorim să testăm o aplicație de cumpărături online pentru a vedea timpul de răspuns al aplicației pentru fiecare utilizator, de exemplu, faceți clic pe Pasul 1 - Lansați adresa URL, timpul de răspuns, conectați-vă la aplicație și notați timpul de răspuns și așa mai departe, cum ar fi selectarea unui produs, adăugarea în coș, efectuarea plăților și deconectarea. Toate acestea trebuie făcute pentru 10 utilizatori.
Deci, acum, atunci când trebuie să testăm încărcarea aplicației pentru 10 utilizatori, putem realiza acest lucru punând manual sarcina de 10 utilizatori fizici de pe diferite mașini în loc să folosim un instrument. În acest scenariu, este recomandabil să faceți un test de încărcare manuală, mai degrabă decât să investiți într-un instrument și să configurați un mediu pentru instrument.
În timp ce imaginați-vă dacă trebuie să încărcăm testul pentru 1500 de utilizatori, atunci trebuie să automatizăm testul de încărcare folosind oricare dintre instrumentele disponibile bazate pe tehnologiile în care este construită aplicația și, de asemenea, pe baza bugetului pe care îl avem pentru proiect.
Dacă avem un buget, atunci putem alege instrumente comerciale precum Load runner, dar dacă nu avem un buget prea mare, putem alege instrumente open source precum JMeter etc.
cum se folosește double în java
Indiferent dacă este un instrument comercial sau un instrument open source, detaliile trebuie să fie partajate cu clientul înainte de a finaliza instrumentul. De obicei, se pregătește o dovadă a conceptului, în care generăm un eșantion de script folosind instrumentul și prezentăm rapoartele eșantionului către client pentru aprobarea instrumentului înainte de finalizarea acestuia.
În testarea automată a încărcării, înlocuim utilizatorii cu ajutorul unui instrument de automatizare, care imită acțiunile utilizatorului în timp real. Prin automatizarea încărcării putem economisi resurse, precum și timp.
Mai jos este diagrama care descrie modul în care utilizatorii sunt înlocuiți folosind un instrument.
De ce încărcarea testării?
Să presupunem că există un site de cumpărături online care funcționează destul de bine în zilele normale de lucru, adică utilizatorii se pot conecta la aplicație, pot răsfoi diferitele categorii de produse, pot selecta produse, pot adăuga articole în coș, pot ieși și deconecta în un interval acceptabil și nu există erori de pagină sau timpi de răspuns uriași.
Între timp, vine o zi de vârf, adică să spunem ziua de mulțumire și sunt mii de utilizatori care sunt conectați la sistem, sistemul este blocat dintr-o dată și utilizatorii au un răspuns foarte lent, unii nici măcar nu au putut conectați-vă la site, câțiva nu au reușit să adauge în coș și unii nu au reușit să verifice.
Prin urmare, în această zi mare, compania a trebuit să facă față unei pierderi uriașe, deoarece a pierdut mulți clienți și multe afaceri. Toate acestea s-au întâmplat doar pentru că nu au prezis încărcarea utilizatorului pentru zilele de vârf, chiar dacă ar fi prezis că nu a fost efectuat niciun test de încărcare pe site-ul companiei, prin urmare nu știu câtă încărcare va fi capabilă să facă față aplicației în zilele de vârf.
Astfel, pentru a face față unor astfel de situații și pentru a depăși venituri uriașe, este recomandabil să efectuați test de sarcină pentru un astfel de tip de aplicații.
- Testarea sarcinii ajută la construirea unor sisteme puternice și fiabile.
- Blocajul din sistem este identificat cu mult timp înainte, înainte ca aplicația să fie activată.
- Ajută la identificarea capacității aplicației.
Ce se realizează în timpul unui test de încărcare?
Cu un test de încărcare adecvat, putem avea o înțelegere exactă a următoarelor:
- Numărul de utilizatori pe care sistemul este capabil să-i gestioneze sau este capabil să-l scaleze.
- Timpul de răspuns al fiecărei tranzacții.
- Cum se comportă fiecare componentă a întregului sistem sub Încărcare adică componente ale serverului de aplicații, componente ale serverului web, componente ale bazei de date etc.
- Ce configurație de server este cea mai bună pentru a face față sarcinii?
- Dacă hardware-ul existent este suficient sau este nevoie de hardware suplimentar.
- Sunt identificate blocaje precum utilizarea procesorului, utilizarea memoriei, întârzieri în rețea etc.
Mediu inconjurator
Avem nevoie de un mediu dedicat de testare a sarcinii pentru a efectua testele noastre. Deoarece de cele mai multe ori mediul de testare a încărcării va fi același cu mediul de producție și, de asemenea, datele disponibile în mediul de testare a încărcării vor fi aceleași ca și producția, deși nu sunt aceleași date.
Vor exista mai multe medii de testare, cum ar fi mediul SIT, mediul QA etc., aceste medii nu au aceeași producție, deoarece, spre deosebire de testarea încărcării, nu au nevoie de atât de multe servere sau atât de multe date de testare pentru a efectua testări funcționale sau teste de integrare.
Exemplu:
Într-un mediu de producție, avem 3 servere de aplicații, 2 servere web și 2 servere de baze de date. În QA, avem doar 1 server de aplicații, 1 server web și 1 server de baze de date. Prin urmare, dacă efectuăm un test de încărcare în mediul QA care nu este egal cu producția, atunci testele noastre nu sunt valabile și sunt incorecte și, prin urmare, nu putem respecta aceste rezultate.
Astfel, încercați întotdeauna să aveți un mediu dedicat pentru testarea încărcării, care este similar cu cel al unui mediu de producție.
De asemenea, uneori avem aplicații terțe pe care sistemul nostru le va apela, prin urmare, în astfel de cazuri, putem folosi stub-uri, deoarece nu putem lucra întotdeauna cu furnizorii terți pentru reîmprospătarea datelor sau orice alte probleme sau asistență.
Încercați să faceți un instantaneu al mediului odată ce acesta este gata, astfel încât, ori de câte ori doriți să reconstruiți mediul, puteți utiliza acest instantaneu, care ar ajuta la gestionarea timpului. Există câteva instrumente disponibile pe piață pentru a configura mediul, cum ar fi Puppet, Docker etc.
Abordare
Înainte de a începe testul de încărcare, trebuie să înțelegem dacă vreun test de încărcare este deja efectuat pe sistem sau nu. Dacă s-au efectuat teste de încărcare mai devreme, atunci trebuie să știm care a fost timpul de răspuns, valorile clientului și serverului colectate, cât a fost capacitatea de încărcare a utilizatorului etc.
De asemenea, avem nevoie de informații despre cât de mult este capacitatea curentă de gestionare a aplicației. Dacă este o aplicație nouă, trebuie să înțelegem cerințele, care este sarcina vizată, care este timpul de răspuns așteptat și dacă este cu adevărat realizabilă sau nu.
Dacă este o aplicație existentă, puteți obține cerințele de încărcare și modelele de acces ale utilizatorilor din jurnalele serverului. Dar dacă este o aplicație nouă, atunci trebuie să contactați echipa de afaceri pentru a obține toate informațiile.
Odată ce avem cerințele, trebuie să identificăm modul în care vom executa testul de încărcare. Se face manual sau folosind instrumente? Efectuarea manuală a unui test de încărcare are nevoie de multe resurse și este foarte costisitoare. Repetarea testului, din nou și din nou, va fi de asemenea dificilă.
Prin urmare, pentru a depăși acest lucru, putem folosi fie instrumente open source, fie instrumente comerciale. Instrumentele open source sunt disponibile gratuit, este posibil ca aceste instrumente să nu aibă toate caracteristicile, precum celelalte instrumente comerciale, dar dacă proiectul are o constrângere bugetară, atunci putem alege instrumentele open source.
În timp ce instrumentele comerciale au multe caracteristici, acestea acceptă multe protocoale și sunt foarte ușor de utilizat.
Abordarea noastră de testare a sarcinii va fi următoarea:
# 1) Identificați criteriile de acceptare a testului de încărcare
De exemplu:
- Timpul de răspuns al paginii de autentificare nu ar trebui să fie mai mare de 5 secunde, chiar și în condițiile de încărcare maximă.
- Utilizarea procesorului nu trebuie să depășească 80%.
- Debitul sistemului ar trebui să fie de 100 de tranzacții pe sec.
# 2) Identificați scenariile de afaceri care trebuie testate.
Nu testați toate fluxurile, încercați să înțelegeți principalele fluxuri de afaceri care se așteaptă să se întâmple în producție. Dacă este o aplicație existentă, putem obține informațiile sale din jurnalele serverului din mediul de producție.
Dacă este o aplicație nou construită, atunci trebuie să lucrăm cu echipele de afaceri pentru a înțelege tiparele de flux, utilizarea aplicației etc. Uneori, echipa proiectului va organiza ateliere pentru a oferi o prezentare generală sau detalii despre fiecare componentă a aplicației.
Trebuie să participăm la atelierul de aplicare și să luăm în considerare toate informațiile necesare pentru a efectua testul de încărcare.
# 3) Modelarea sarcinii de lucru
Odată ce avem detalii despre fluxurile de afaceri, modelele de acces ale utilizatorilor și numărul de utilizatori, trebuie să proiectăm volumul de lucru în așa fel încât să imite navigarea reală a utilizatorului în producție sau așa cum se așteaptă să fie în viitor, odată ce aplicația va fi în producție.
Punctele cheie pe care trebuie să le amintiți atunci când proiectați un model de sarcină de lucru este să vedeți cât timp va dura un anumit flux de afaceri pentru a se finaliza. Aici trebuie să alocăm timpul de gândire în așa fel încât utilizatorul să navigheze prin aplicație într-un mod mai realist.
Modelul de încărcare a muncii va fi de obicei cu o rampă în sus, o rampă în jos și o stare stabilă. Ar trebui să încărcăm încet sistemul și astfel să folosim rampă în sus și rampă în jos. Starea de echilibru va fi de obicei un test de încărcare de o oră, cu Ramp up de 15 min și Ram down de 15 min.
Să luăm un exemplu de model al sarcinii de lucru:
Prezentare generală a aplicației - Să presupunem cumpărături online, în care utilizatorii se vor conecta la aplicație și vor avea o gamă largă de rochii de cumpărat și pot naviga în fiecare produs.
Pentru a vizualiza detaliile despre fiecare produs, trebuie să facă clic pe produs. Dacă le place costul și marca produsului, atunci pot adăuga în coș și pot cumpăra produsul verificând și efectuând plata.
Mai jos sunt prezentate o listă de scenarii:
- Naviga - Aici, utilizatorul lansează aplicația, se conectează la aplicație, navighează prin diferite categorii și se deconectează de la aplicație.
- Răsfoiți, Vizualizare produs, Adăugați în coș - Aici, utilizatorul se conectează la aplicație, navighează prin diferite categorii, vizualizează detaliile produsului, adaugă produsul în coș și se deconectează.
- Răsfoiți, vizualizați produsul, adăugați în coș și verificați - În acest scenariu, utilizatorul se conectează la aplicație, navighează prin diferite categorii, vizualizează detaliile produsului, adaugă produsul în coș, face check out și se deconectează.
- Răsfoiți, Vizualizare produs, Adăugați în coș Verificați și face plata - Aici, utilizatorul se conectează la aplicație, navighează prin diferite categorii, vizualizează detaliile produsului, adaugă produsul în coș, face check-out, efectuează plăți și se deconectează.
S. Nu | Fluxul de afaceri | Număr de tranzacții | Încărcare utilizator virtual | Timp de răspuns (sec) | % Rată de eșec permisă | Tranzacții pe oră |
---|---|---|---|---|---|---|
1 | Naviga | 17 | 1600 | 3 | Mai puțin de 2% | 96000 |
Două | Răsfoiți, Vizualizare produs, Adăugați în coș | 17 | 200 | 3 | Mai puțin de 2% | 12000 |
3 | Răsfoiți, vizualizați produsul, adăugați în coș și verificați | 18 | 120 | 3 | Mai puțin de 2% | 7200 |
4 | Răsfoiți, Vizualizare produs, Adăugați în coș Verificați și face plata | douăzeci | 80 | 3 | Mai puțin de 2% | 4800 |
Valorile de mai sus au fost derivate pe baza următoarelor calcule:
- Tranzacții pe oră = Număr de utilizatori * Tranzacții efectuate de un singur utilizator într-o oră.
- Numărul de utilizatori = 1600.
- Numărul total de tranzacții din scenariul Răsfoire = 17.
- Timp de răspuns pentru fiecare tranzacție = 3.
- Timp total pentru un singur utilizator pentru a finaliza 17 tranzacții = 17 * 3 = 51 rotunjit la 60 sec (1 min).
- Tranzacții pe oră = 1600 * 60 = 96000 Tranzacții.
# 4) Proiectați testele de încărcare- Testul de încărcare ar trebui să fie conceput cu datele pe care le-am colectat până acum, adică fluxurile de afaceri, numărul de utilizatori, tiparele de utilizatori, valorile care trebuie colectate și analizate. Mai mult, testele ar trebui concepute într-un mod mult mai realist.
# 5) Executați testul de încărcare - Înainte de a executa testul de încărcare, asigurați-vă că aplicația este în funcțiune. Mediul de testare a încărcării este gata. Aplicația este testată funcțional și este stabilă.
Verificați setările de configurare ale mediului de testare a încărcării. Ar trebui să fie același cu mediul de producție. Asigurați-vă că toate datele de testare sunt disponibile. Asigurați-vă că adăugați contoare necesare pentru a monitoriza performanța sistemului în timpul executării testului.
Începeți întotdeauna cu o sarcină redusă și creșteți treptat sarcina. Nu începeți niciodată cu încărcarea completă și nu rupeți sistemul.
# 6) Analizați rezultatele testului de încărcare - Faceți un test de bază pentru a compara întotdeauna cu celelalte teste. Adunați valorile și jurnalele serverului după testare pentru a găsi blocajele.
Unele proiecte utilizează Instrumentele de monitorizare a performanței aplicațiilor pentru a monitoriza sistemul în timpul testului, aceste instrumente APM ajută la identificarea cauzei rădăcină mai ușor și la economisirea mult timp. Aceste instrumente sunt foarte ușor de găsit cauza principală a blocajului, deoarece au o vedere largă pentru a identifica unde este problema.
Unele dintre instrumentele APM de pe piață includ DynaTrace, Wily Introscope, App Dynamics etc.
# 7) Raportare - După finalizarea testului, adunați toate valorile și trimiteți raportul rezumat al testului către echipa în cauză, cu observațiile și recomandările dvs.
Cele mai bune practici
Mai jos sunt prezentate câteva dintre cele mai bune practici de testare a sarcinii:
# 1) Verificați întotdeauna stabilitatea aplicației înainte de a începe un test de încărcare. Aplicația ar trebui să fie semnată funcțional stabilă de echipa de testare funcțională și toate defectele majore ar trebui să fie remediate și testate înainte ca versiunea să fie copiată în mediul Test de încărcare.
#Două) Asigurați-vă că mediul de testare a încărcării este o replică sau este aproape de mediul de producție, inclusiv numărul de servere, echilibrare de încărcare, configurații de server și firewall-uri.
# 3) Verificați dacă datele de testare sunt unice și avem toate datele de testare copiate în mediul de încărcare înainte de a efectua un test de încărcare.
# 4) Proiectați scenariile de testare în așa fel încât să imite acțiunea utilizatorului în timp real în producție.
# 5) Proiectați volumul de lucru pe baza încărcărilor utilizatorilor de producție și a fluxurilor de afaceri și, în cazul unei aplicații vechi, vedeți dacă este o discuție nouă cu echipa de afaceri cu privire la fluxurile de afaceri și încărcarea utilizatorului.
# 6) Colectați toate valorile importante, cum ar fi Timpul de răspuns, accesările pe secundă, debit, CPU, memorie, rețea și Vusere rulante.
Citiți recomandat => Lista instrumentelor de testare a performanței disponibile pe piață pentru efectuarea testării exclusive a sarcinii.
Concluzie
În acest tutorial, am aflat cum testarea încărcării joacă un rol important în testarea performanței unei aplicații, cum ajută la înțelegerea eficienței și capacității aplicației etc.
De asemenea, am aflat cum ajută să prezicem dacă este nevoie de hardware, software sau reglare suplimentară pentru o aplicație.
Lectura placuta!!
Lectură recomandată
- Testarea încărcării cu tutoriale HP LoadRunner
- Testarea alfa și testarea beta (un ghid complet)
- Ghid de testare a securității aplicațiilor web
- Ghid de testare a stresului pentru începători
- Ghid pentru începători la testarea penetrării aplicațiilor web
- Un ghid complet de testare nefuncțională pentru începători
- Test de verificare a construcției (testare BVT) Ghid complet
- Testarea performanței vs testarea sarcinii vs testarea stresului (diferență)