Testarea de încărcare este un subtip de testare a performanței, colectarea indicatorilor și determinarea performanței și a timpului de răspuns al unui sistem sau dispozitiv software și hardware ca răspuns la o solicitare externă pentru a stabili conformitatea cu cerințele pentru acest sistem (dispozitiv).
Pentru a studia timpul de răspuns al sistemului la sarcini mari sau de vârf, se efectuează teste de stres , în care sarcina creată asupra sistemului depășește scenariile normale pentru utilizarea acestuia. Nu există o linie clară între testarea sarcinii și testarea la stres, dar cele două nu trebuie confundate, deoarece aceste tipuri de testare răspund la întrebări diferite de afaceri și folosesc metodologii diferite.
În general, testarea încărcării se referă la practica de modelare a utilizării așteptate a unei aplicații prin emularea muncii mai multor utilizatori în același timp. Astfel, o astfel de testare este cea mai potrivită pentru sistemele multi-utilizator, cel mai adesea folosind o arhitectură client-server (de exemplu, servere web). Cu toate acestea, alte tipuri de sisteme software pot fi testate într-un mod similar. De exemplu, un editor de text sau grafică poate fi făcut să citească un document foarte mare; iar pachetul financiar este de a genera un raport bazat pe date pe mai mulți ani. Testul de sarcină cel mai adecvat proiectat oferă rezultate mai precise.
În cazul ideal, criteriile pentru succesul testării la sarcină sunt cerințele de performanță a sistemului, care sunt formulate și documentate în etapa de dezvoltare a cerințelor funcționale pentru sistem înainte de programarea principalelor soluții arhitecturale. Cu toate acestea, se întâmplă adesea ca astfel de cerințe să nu fi fost formulate clar sau să nu fie formulate deloc. În acest caz , prima testare de încărcare va fi testarea de încărcare exploratorie și se va baza pe ipoteze rezonabile cu privire la sarcina așteptată și consumul de resurse hardware .
Una dintre cele mai bune abordări pentru utilizarea testării de încărcare pentru a măsura performanța sistemului este testarea în stadiul incipient de dezvoltare. Testarea de sarcină în primele etape ale pregătirii unei soluții arhitecturale pentru a determina viabilitatea acesteia se numește testare „dovadă de concept”.
Unicitatea solicitărilor - chiar dacă ai format un scenariu realist pentru lucrul cu sistemul pe baza statisticilor de utilizare a acestuia, trebuie să înțelegi că vor exista întotdeauna excepții de la acest scenariu.
Timpul de răspuns al sistemului - în general, timpul de răspuns al sistemului respectă funcția de distribuție normală . În special, aceasta înseamnă că, având un număr suficient de măsurători, este posibil să se determine probabilitatea cu care răspunsul sistemului la o solicitare se va încadra într-un anumit interval de timp.
Dependența timpului de răspuns al sistemului de gradul de distribuție al acestui sistem - variația distribuției normale a timpului de răspuns al sistemului la o cerere este proporțională cu raportul dintre numărul de noduri de sistem care procesează astfel de cereri în paralel și numărul de cereri pe nod. Adică, răspândirea valorilor timpului de răspuns al sistemului este afectată simultan de numărul de solicitări care se încadrează pe fiecare nod al sistemului și de numărul de noduri în sine, fiecare dintre acestea adăugând o anumită cantitate de întârziere aleatorie în procesarea cererilor.
Variația timpului de răspuns al sistemului - cu un număr suficient de mare de măsurători ale valorii timpului de procesare a cererii în orice sistem, vor exista întotdeauna cereri al căror timp de procesare depășește maximele definite în cerințe; în plus, cu cât timpul total al experimentului este mai lung, cu atât noile maxime vor fi mai mari. Acest fapt este luat în considerare atunci când se formează cerințe pentru performanța sistemului, precum și în timpul testării regulate de încărcare.
Fidelitatea profilului de încărcare - Fidelitatea necesară a profilului de încărcare este mai scumpă cu cât sistemul conține mai multe componente. Adesea, nu este posibil să se ia în considerare toate aspectele profilului de sarcină pentru sistemele complexe, deoarece cu cât sistemul este mai complex, cu atât mai mult timp va fi alocat proiectării, programării și menținerii unui profil de încărcare adecvat pentru acesta, ceea ce nu este întotdeauna necesar. Abordarea optimă în acest caz este de a echilibra între costul dezvoltării unui test și acoperirea funcționalității sistemului, în urma căreia există ipoteze cu privire la impactul asupra performanței generale a uneia sau alteia părți a sistemului testat.
Câteva instrumente de testare a sarcinii [1] [2] :
PE | Numele producatorului | Comentarii |
---|---|---|
OpenSTA | „Arhitectura de testare a sistemului deschis” | Software gratuit pentru testarea de încărcare/stres, licențiat sub GNU GPL. Utilizează o arhitectură de aplicație distribuită bazată pe CORBA . Este disponibilă o versiune Windows, deși există probleme de compatibilitate cu Windows Vista. Sprijinul s-a încheiat în 2007. |
IBM Rational Performance Tester | IBM | Bazat pe mediul de dezvoltare Eclipse , software care vă permite să creați o încărcare mare și să măsurați timpul de răspuns pentru aplicațiile cu arhitectură client-server. Necesită licență. |
jmetru | Deschideți proiectul Apache Jakarta | Setul de instrumente multiplatformă bazat pe Java, care vă permite să efectuați teste de încărcare utilizând conexiuni JDBC / FTP / LDAP / SOAP / JMS / POP3 / HTTP / TCP. Vă permite să creați un număr mare de solicitări de la diferite computere și să controlați procesul de la unul dintre ele. |
HP LoadRunner | HP | Un instrument de testare a încărcării dezvoltat inițial pentru a emula munca unui număr mare de utilizatori concurenți. Poate fi folosit și pentru testarea unitară sau de integrare . |
LoadComplete | Ursul inteligent | Produs proprietar care vă permite să încărcați aplicații web de testare |
SilkPerformer | Micro Focus (Borland) | |
Asediu | Joe Dog Software | Siege este un instrument de testare a încărcării serverului web. [3] |
Sistemul de echipă Visual Studio | Microsoft | Visual Studio oferă un instrument de testare a performanței, inclusiv testarea încărcării/unității |
QTest | Cota | |
httperf | ||
QALload | Compuware Ltd. | |
() Tocitorul | ||
Încărcare web | Software-ul RadView | Încărcați instrumentul de testare pentru aplicații web și mobile, inclusiv tablouri de bord web pentru analiza de testare a performanței. Folosit pentru sarcini de lucru la scară largă care pot fi generate și din cloud. licenţiat. [patru] |
Unul dintre rezultatele obținute în timpul testării de sarcină și utilizat pentru analize ulterioare este indicatorii de performanță ai aplicației.
Consumul de resurse CPU este o măsurătoare care arată cât de mult timp dintr-un anumit interval a fost petrecut de procesor pentru calculele pentru procesul selectat. În sistemele moderne, un factor important este capacitatea unui proces de a rula în mai multe fire, astfel încât procesorul să poată efectua calcule în paralel. Analiza istoricului consumului de resurse CPU poate explica impactul asupra performanței generale a sistemului de fluxuri de date procesate, configurația aplicației și a sistemului de operare, calculul cu mai multe fire și alți factori.
Consumul de RAM este o măsurătoare care arată cantitatea de memorie utilizată de o aplicație. Memoria folosită este împărțită în mai multe categorii:
Când o aplicație rulează, memoria este umplută cu referințe la obiecte, care, dacă nu sunt utilizate, pot fi curățate printr-un proces automat special numit colector de gunoi . Timpul necesar procesorului pentru a curăța memoria în acest fel poate fi semnificativ atunci când procesul a consumat toată memoria disponibilă (în Java, așa-numita „GC persistentă completă”) sau când procesului i-au fost alocate cantități mari de memorie care trebuie curățată. În timpul necesar pentru curățarea memoriei, accesul unui proces la paginile de memorie alocată poate fi blocat, ceea ce poate afecta timpul final de procesare a procesului respectiv.
Consumul de resurse de rețea este o măsură care nu este direct legată de performanța aplicației, dar indicatorii săi pot indica limitele de performanță ale sistemului în ansamblu.
Performanța subsistemului I/O poate afecta semnificativ performanța sistemului, astfel încât colectarea de statistici privind lucrul cu unitățile poate ajuta la identificarea blocajelor în acest domeniu. Un număr mare de citiri sau scrieri poate face ca procesorul să rămână inactiv în timp ce se așteaptă ca datele să fie procesate de pe disc și, ca urmare, crește consumul de resurse ale procesorului și crește timpul de răspuns.
Timpul de executare a unei cereri de către o aplicație rămâne unul dintre cei mai importanți indicatori ai performanței unui sistem sau aplicație. Acest timp poate fi măsurat pe partea de server ca o măsură a timpului necesar pentru ca partea de server să proceseze o cerere; și asupra clientului, ca indicator al timpului total necesar serializării și deserializării , transmiterii și procesării cererii. Cu toate acestea, nu orice aplicație de testare a performanței poate măsura ambii timpi.