Sunteți pe pagina 1din 9

Introducere

Pentru respectarea cerintelor non-functionale de performanta si simularea unui mediu de productie cat
mai fidel, produsele noi create sunt supuse diferitor testari. Astfel se creeaza scripturi si scenarii de diferite tipuri,
Exista doua clasificari majore a tipajelor de testari:

1. Testare functionala
2. Testare non-functionalaa

Testarea de performanta face parte din a 2-a clasa si asigura testarea vitezii cu care se misca
sistemul IT, simuleaza conditiile normale de functionare a sistemului si raporteaza timpii de raspuns generati de
functionalitatile acestuia pentru indeplinirea indicatorilor de performanta. Sistemul este testat sub un amestec
de condiții de încărcare și se verifică timpul necesar pentru a primi un feedback din partea acestuia.
Testarea de performanţă va oferi informaţii despre cum se va comporta produsul în utilizarea zilnică,
cu acces concurent din partea utilizatorilor. Rezultatele vor folosi în estimarea resurselor hardware
necesare pentru a susține un anumit număr de utilizatori.

De ce trebuie aplicata?

Scopul testelor de performanță nu este doar să găsească bug-urile în sistem, ci și să elimine


blocajele de performanță. Înainte de a intra pe piață, sistemul software trebuie testat în funcție de
viteză, stabilitate și scalabilitate. Dacă sistemul este expus spre utilizare fără a face teste de
performanță, pot aparea asa probleme ca rularea la viteza redusa in momentul accesarii de catre mai
multi utilizatori, incetenirea sistemei de operare a dispozitivului pe care este rulat softul, toate
impreuna creaza o “reputatie” rea produsului, care ca urmare afecteaza pretul si cererea de pe piata.

Testarea performanței cuprinde o serie de teste diferite care permit analiza diferitelor
aspecte ale sistemului, aratind ce schimbari trebuie facute înainte de a expune produsul spre utilizare
(în special problemele de supraincarcare in diferite conditii de stress sub care este expus sistemul).
Exemplu: timpul de raspuns trebuie sa fie de mai putin de 1 secunda in 90% din cazuri la o aplicatie
de genul Calculator matematic simplu. De asemenea, aplicațiile de tip critice, cum ar fi programe de
lansare în spațiu sau echipamente medicale de salvare a vieții, ar trebui să fie testate pentru a se
asigura că acestea funcționează pentru o perioadă lungă de timp fără devieri. Daca masuratorile de
1
performanta sunt nemultumitoare, atunci se iau masuri pentru imbunatatire (rescrierea codului,
alocarea mai multor resurse, redesign de sistem …).

Tipurile si cerintele

Există câteva categorii de Teste de


Performanţă, fiecare având particularităţi în ceea
ce priveşte scopul, planificarea și execuţia:

 Load - al cărui scop este de a vedea


comportamentul sistemului când un
anumit număr de utilizatori îl foloseşte
simultan
 Stress - al cărui scop este de a determina
limitele și robusteţea sistemului
 Endurance - se face pentru a vă asigura
că software-ul poate gestiona sarcina
așteptată pe o perioadă lungă de timp.
 Spike - al cărui scop este de a determina Figura 1: Tipurile de testare
comportamentul sistemului pe o perioadă mai mare timp în care un anumit număr de
utilizatori îl foloseşte
 Scalability Testing - reprezinta testarea unei aplicații software pentru a determina capacitatea
sa de a se extinde, cum ar fi încărcarea utilizatorului suportată, numărul de tranzacții,
volumul de date etc. Scopul principal este de a înțelege la ce vârf sistemul împiedică o
scalare mai mare.
 Volume testing – reprezinta o testarea nefuncțională, care se referă la testarea unei aplicații
software cu o cantitate mare de date care trebuie procesate pentru a verifica eficiența
aplicației. Scopul principal al acestei testari este monitorizarea performanței aplicației în
cadrul unor volume diferite de baze de date.

Cerintele reprezinta cel mai important aspect alături de tehnologia folosită în dezvoltarea
produsului. Necesarul de tool-uri este de asemenea determinat pe baza cerinţelor şi a tehnologiei
folosite. Cerinţele Non-funcționale vor conţine cifrele exacte pentru timpul de răspuns, număr de
acţiuni concurente. In linii generale, exista 3 categorii de cerinte expuse la diferite etape pe parcursul
testarii. Astfel avem:

2
1. Resursele umane necesare

Skill-urile necesare pentru designul, scrierea și executarea testelor de performanţă trebuie analizate
cu grijă. Consider Testarea de Performanţă ca un efort de echipa în care trebuie sa fie implicaţi
arhitecţii și programatorii. Expertiza arhitecţilor în arhitectura produsului este de folos în design-ul
testelor care vor descoperi vulnerabilităţile sistemului, pe când expertiza developerilor este
folositoare în scrierea script-urilor, analiza rezultatelor pentru o mai bună înţelegere a
comportamentului sistemului şi a acţiunilor coercitive.

2. Design-ul testelor și execuţia lor


A. Testele de performanţă sunt concepute să acopere cerinţele non-funcționale cu scenarii
reflectând situaţii reale. Scenariile folosite au ca părți componente importante următoarele:
a) Ramp-up - este timpul necesar ca toți utilizatorii să fie gata pentru a executa acţiunile testului
(de exemplu să fie logati şi să înceapă să ruleze acţiunile)
b) Distribuţia încărcării şi a acţiunilor în timp - scenariile apropiate de realitate vor fi create
având în vedere tipurile de utilizatori ai aplicaţiei şi acţiunile pe care le pot face fiecare dintre
ei
c) Ramp-down - este timpul necesar utilizatorilor să termine acţiunile şi încărcarea serverului să
înceteze
B. Momentul rulării testelor de performanţă în timpul dezvoltării produsului este important.
Rularea testelor de performanță e bine să fie făcută când majoritatea funcţionalităţilor sunt
implementate şi sunt stabile (un procent de 80% minim). Dacă funcţionalitatea nu este finalizată
în mare parte, rezultatele testelor pot fi irelevante. Orice schimbare majoră a codului va afecta
rezultatele testelor de performanţă şi compararea rezultatelor rulărilor succesive a testelor de
performanţă nu va putea fi făcută. Se pot rula teste de performanţă pe funcţionalităţi separate
sau servicii atunci când acea funcţionalitate se poate testa independent. Astfel, rezultatele oferă
un feedback continuu și relevant asupra performanţei sistemului. E bine să se planifice testarea
de performanţă în mod continuu, mai ales în contextul Agile, când se livrează funcţionalitate
completă în fiecare Sprint sau un număr relative mic de Sprint-uri.

În timpul unui release, testele de performanţă se rulează de un număr limitat de ori


datorită timpului necesar rulării lor și resurselor hardware necesare. Rularea testelor, analiza
rezultatelor și fixurile sunt realizate într-un ciclu iterativ.

3
O altă abordare în obținerea informaţiilor despre performanţa unui sistem este de a adăuga
listener-i în Unit test şi în testele de API. Astfel se vor obține informaţii despre cât de
performante sunt anumite metode/fluxuri.

C. Colectarea rezultatelor și raportarea

Setul de rezultate colectate în cursul testelor de performanţă trebuie definit cu grijă şi să fie
minimalist pentru:

 a colecta rezultatele relevante. Tool-urile pentru teste de performanţă oferă o larga varietate
de rezultate ce pot fi colectate în special în ceea ce priveşte timpul de răspuns. Resursele
hardware pot fi monitorizate prin intermediul acestor tool-uri sau instalând tool-uri de
monitorizare direct pe sistemul aflat în test
 a nu colecta prea multe rezultate. Colectarea prea multor rezultate va avea impact atât asupra
maşinii pe care rulează tool-ul de testare, consumând din resursele necesare susţinerii load-
ului cât şi a resurselor de pe sistemul aflat în test afectând numărul de acţiuni executate

Tool-uri si etapele procesului de testare

Alegerea tool-urilor folosite pentru testarea de performanţă va avea în vedere următoarele


criterii:

 Suportul oferit în rularea scenariilor complexe;


 Capacitatea de distribuire a incărcării şi profilurilor utilizatorilor;
 Rapoartele oferite.

Evaluarea tool-urilor gratuite sau ale celor oferite de producătorii de tool-uri de


performanţă trebuie făcută având în vedere contextul proiectului şi a cunoştinţelor existente în
echipa. Există o gamă largă de instrumente de testare a performanțelor disponibile pe piață.
Instrumentul pe care îl alegeți pentru testare va depinde de mulți factori, cum ar fi tipurile de
protocol acceptate, costul licenței, cerințele hardware, suportul de platformă etc. Mai jos este o listă
a instrumentelor de testare cel mai de utilizate:

4
NeoLoad - platforma de testare a performanțelor concepută pentru DevOps care se
integrează perfect în conducta dvs. de livrare continuă. Cu NeoLoad, echipele testează cu 10 ori mai
repede decât cu instrumentele tradiționale pentru a satisface noul nivel al cerințelor în întregul ciclu
de viață al dezvoltării software-ului Agile - de la testele de sarcină pentru componente la întregul
sistem.

WebLOAD - este un pionier și lider în testarea încărcării, oferind capabilități bogate pentru
gestionarea testelor de performanță pe scară largă în medii complexe de întreprindere. Rulat în cloud
sau local, WebLOAD oferă scripturi avansate, înregistrare și corelație automată, permițând
organizațiilor să automatizeze testarea încărcării pentru integrarea DevOps și livrarea continuă

Testarea LoadView - testați-vă infrastructura la orice nivel. De la teste mici direcționate


spre milioane de utilizatori, găsiți blocaje de performanță și ajustați planul de capacitate în
consecință. LoadView oferă testarea încărcării pe bază de cloud 100%. Testați experiența
utilizatorului cu browsere reale, pentru o imagine completă a performanței.

Jmeter - unul dintre instrumentele de vârf utilizate pentru testarea încărcării serverelor web
și a aplicațiilor.

Metodologia adoptată pentru testarea performanțelor poate varia foarte mult, dar ținta
testului de performanță rămâne aceeași. Acest lucru vă poate ajuta să demonstrați că software-ul
dvs. îndeplinește anumite criterii de performanță
predefinite. Sau poate ajuta la Figura 2: Etapele procesului de testare

compararea performanței a două sisteme


software. De asemenea, vă poate ajuta să
identificați părți ale software-ului dvs.
care degradează performanța acestuia. In
continuare este expusa descrierea
procesului de testare pe etape:

Identificarea mediul de
testare - cunoașteți mediul dvs. de
testare fizic, mediul de producție și
instrumentele de testare disponibile.

5
Înțelegeți configurațiile hardware, software și de rețea utilizate în timpul testelor înainte de a începe
procesul de testare. Acest lucru îi va ajuta pe testeri să creeze teste mai eficiente. De asemenea, va
contribui la identificarea potențialelor provocări pe care testerele le pot întâmpina în timpul
procedurilor de testare a performanței.

Identificați criteriile de acceptare a performanțelor - Acestea includ obiective și


constrângeri privind capacitatea de producție, timpii de răspuns și alocarea resurselor. De asemenea,
este necesar să se identifice criterii de succes de succes dincolo de aceste obiective și constrângeri.
Testerele ar trebui să fie împuternicite să stabilească criterii și obiective de performanță, deoarece
specificațiile proiectelor nu includ adesea o varietate suficientă de criterii de performanță. Ori de
câte ori este posibil, găsirea unei aplicații similare pentru a compara este o modalitate bună de a
stabili obiectivele de performanță.

Planificarea și testarea performanței de design – Determinați varietatea modului de


utilizare între utilizatorii finali și să identifice scenarii cheie pentru a testa toate utilizările posibile.
Este necesar să se simuleze o varietate de utilizatori finali, să se planifice date privind testele de
performanță și să se evidențieze ce valori vor fi colectate.

Configurarea mediului de testare - Pregătiți mediul de testare înainte de execuție. De


asemenea, organizați instrumentele și alte resurse.

Implementați designul de testare - Creați teste de performanță bazate pe designul testului.

Executați testele - Rulați și monitorizați testele.

Analizați, reglati și retestați - Consolidați, analizați și împărțiți rezultatele testelor. Apoi,


ajustați și încercați din nou să vedeți dacă există o îmbunătățire sau o scădere a performanței.
Deoarece îmbunătățirile, în general, cresc cu fiecare retest, opriți când blocarea este cauzată de
CPU. Apoi este posibil să aveți opțiunea de a crește puterea procesorului.

Probleme comune de performanță

Cele mai multe probleme de performanță se învârt în jurul vitezei, timpului de răspuns,
timpului de încărcare și scalabilității reduse. Viteza este adesea unul dintre cele mai importante
atribute ale unei aplicații. O aplicație care rulează lent va pierde potențialii utilizatori. Testarea

6
performanțelor se face pentru a vă asigura că o aplicație rulează suficient de repede pentru a păstra
atenția și interesul utilizatorului. Uitați-vă la următoarea listă de probleme comune de performanță și
observați cum viteza este un factor comun în multe dintre ele:

Durata lungă de încărcare - Timpul de încărcare este, în mod normal, timpul inițial de
lansare a unei aplicații. Acest lucru ar trebui, în general, să fie redus la minimum. În timp ce unele
aplicații sunt imposibil de încărcat în mai puțin de un minut, timpul de încărcare trebuie păstrat sub
câteva secunde, dacă este posibil.

Timp de răspuns îndelungat - Timpul de răspuns este timpul necesar când un utilizator
introduce date în aplicație până când aplicația emite un răspuns la acea intrare. În general, acest
lucru ar trebui să fie foarte rapid. Din nou, dacă un utilizator trebuie să aștepte prea mult, își pierd
interesul.

Scalabilitate scazuta - Un produs software sufera de scalabilitate scazuta atunci cand nu se


poate ocupa de numarul estimat de utilizatori sau atunci cand nu se potriveste cu o gama larga de
utilizatori. Testarea încărcării ar trebui făcută pentru a fi sigură că aplicația poate gestiona numărul
anticipat de utilizatori.

Bottlenecking (strangularea) - sunt obstacole în sistem care degradează performanța


generală a sistemului. Are loc atunci când erorile de codare sau problemele hardware provoacă o
scădere a debitului la anumite sarcini. Este adesea cauzat de o singură secțiune defectă de cod. Cheia
pentru a rezolva o problemă de blocare este de a găsi secțiunea de cod care cauzează încetinirea și
nemijlocita soluționare. Bottlenecking este în general stabilit fie prin intermediul unor procese de
rulare slabe, fie prin adăugarea de echipamente suplimentare. Unele blocaje de performanță comune
sunt

 Utilizarea CPU
 Utilizarea memoriei
 Utilizarea rețelei
 Limitări ale sistemului de operare
 Utilizarea discului

Parametrii de performanță monitorizați

7
 Utilizarea procesorului - cantitatea de procesor de timp petrece executarea firelor non-
inactive.
 Utilizarea memoriei - cantitatea de memorie fizică disponibilă pentru procesele de pe un
computer.
 Timp disc - timpul de disc este ocupat executând o solicitare de citire sau scriere.
 Lungimea de bandă - arată biții pe secundă folosiți de o interfață de rețea.
 Byte private - numărul de octeți pe care un proces le-a alocat, care nu pot fi distribuite între
alte procese. Acestea sunt folosite pentru a măsura scurgeri de memorie și utilizare.
 Memorie angajată - cantitatea de memorie virtuală utilizată.
 Pagini de memorie / secundă - numărul de pagini scrise sau citite de pe disc pentru a
rezolva defectele de pagină greu. Defectele greșite ale paginii sunt atunci când un cod nu
din setul de lucru curent este apelat din altă parte și preluat de pe un disc.
 Pagini defecte / secundă - rata globală în care paginile de eroare sunt procesate de procesor.
Acest lucru apare din nou atunci când un proces necesită un cod din afara setului său de
lucru.
 CPU întrerupe pe secundă - este valoarea medie. numărul de întreruperi hardware pe care
un procesor le primește și procesează fiecare secundă.
 Lungimea cozii de dischete - este media. Nu. de solicitări de citire și scriere în coadă pentru
discul selectat în timpul unui interval de eșantionare.
 Lungimea cozii de ieșire a rețelei - lungimea cozii de pachete de ieșire în pachete. Orice
altceva decât două înseamnă o întârziere și blocarea trebuie să fie oprită.
 Total octeți de rețea pe secundă - rata pe care octeții sunt trimise și primite pe interfață,
incluzând caractere de încadrare.
 Timp de răspuns - timpul de la momentul în care un utilizator introduce o solicitare până la
primirea primului caracter al răspunsului.
 Capacitatea de transfer - un computer sau o rețea primește cereri pe secundă.
 Suma de grupare a conexiunilor - numărul de solicitări ale utilizatorilor care sunt
îndeplinite de conexiunile colectate. Cele mai multe cereri întâlnite de conexiunile din pool,
cu atât va fi mai bună performanța.
 Sesiuni active maxim - numărul maxim de sesiuni care pot fi active simultan.

8
 Sferturi de lovituri - Acest lucru are legătură cu numărul de instrucțiuni SQL care sunt
gestionate de date cache în loc de operații I / O costisitoare. Acesta este un loc bun pentru a
începe pentru rezolvarea problemelor de blocaj.
 Afișări pe secundă - nr. de hit-uri pe un server web în timpul fiecărei secunde a unui test de
sarcină.
 Rollback segment - cantitatea de date care poate reveni în orice moment.
 Blocarea bazei de date - blocarea meselor și bazelor de date trebuie monitorizată și reglată
cu atenție.
 Top așteaptă - sunt monitorizate pentru a determina ce perioade de așteptare pot fi reduse
atunci când se ocupă cu cât de repede sunt preluate din memorie
 Conținutul firului - O sănătate a aplicațiilor poate fi măsurată prin nr. de fire care se execută
și sunt active în prezent.
 Colectarea gunoiului - are legătură cu returnarea memoriei neutilizate înapoi la sistem.
Colectarea gunoiului trebuie monitorizată pentru eficiență.

Concluzie

Testarea performanțelor este necesară înainte de a comercializa orice produs software.


Aceasta asigură satisfacția clienților și protejează investiția investitorilor împotriva eșecului
produsului. Costurile de testare a performanțelor sunt, de obicei, mai mult decât compuse, datorită
satisfacției, loialității și păstrării clienților. Planificarea și execuţia testării de performanţă ar trebui
să fie un efort comun al echipei de proiect incluzând software arhitecţi și developeri. Importanţa
capabilităţilor tool-urilor şi a skill-urilor necesare nu trebuie neglijată.

S-ar putea să vă placă și