Ce este testarea dinamică? Tipuri, tehnici și exemple
⚡ Rezumat inteligent
Testarea dinamică execută aplicația și observă cum se comportă codul în execuție cu intrări reale, astfel încât testerii să poată valida funcționalitatea, performanța și stabilitatea pe care nicio analiză a documentelor nu le poate dezvălui.
Ce este testarea dinamică?
Testare dinamică este o metodă de testare software utilizată pentru a testa comportamentul dinamic al codului software. Scopul principal al testării dinamice este de a examina comportamentul software-ului cu variabile dinamice - variabile care nu sunt constante - și de a găsi zone slabe în mediul de execuție al software-ului. Codul trebuie executat pentru a testa comportamentul dinamic.
Testarea este verificare si validare...și este nevoie de ambele variante de tip V pentru ca testarea să fie completă. Verificarea se efectuează prin testare statică, care analizează cerințele, documentele de proiectare și codul fără a le rula. Validarea se realizează prin testare dinamică, care rulează compilarea și compară ceea ce face aplicația în realitate cu ceea ce ar trebui să facă.
Tabelul de mai jos îi diferențiază pe cei doi dintr-o privire.
| Aspect | Testare statică (verificare) | Testare dinamică (validare) |
| Code executat | Nu | Da |
| Activități tipice | Revvizualizări, treceri în revistă, inspecții, analiză statică | Executarea cazurilor de testare pe toate nivelurile de testare |
| Întrebare răspunsă | Construim produsul corect? | Construim produsul potrivit? |
| Defectele au fost găsite | Cerințe ambigue, încălcări ale standardelor de codare, cod mort | Ieșire greșită, pierderi de memorie, erori de sincronizare, erori de integrare |
| Începe | De îndată ce există un artefact | Odată ce există o versiune executabilă |
| Costul relativ al unei remedieri | Mai mic, deoarece defectele sunt detectate mai devreme | Mai mare, deoarece defectele apar mai târziu |
Exemplu de testare dinamică
Un scurt exemplu arată cum se comportă testarea dinamică în practică.
Să presupunem că se testează o pagină de autentificare. Aceasta are două câmpuri, Nume utilizator și Parolă, iar Numele utilizator este restricționat la caractere alfanumerice.
Când utilizatorul introduce numele de utilizator ca „Guru99”, sistemul îl acceptă. Când utilizatorul introduce „Guru„99@123”, aplicația generează un mesaj de eroare. Acest rezultat arată că codul acționează dinamic pe baza datelor introduse de utilizator.
Prin urmare, testarea dinamică înseamnă lucrul cu sistemul real, furnizarea de date de intrare și compararea comportamentului real al aplicației cu comportamentul așteptat - cu alte cuvinte, lucrul cu sistemul cu intenția de a găsi erori.
Prin urmare, testarea dinamică este procesul de validare a unei aplicații software așa cum ar face-o un utilizator final, în diferite medii, pentru a construi software-ul potrivit.
Ce face testarea dinamică?
Scopul principal al testelor dinamice este de a asigura funcționarea corectă a software-ului în timpul și după instalare, oferind o aplicație stabilă, fără defecte majore. Niciun software nu este complet lipsit de erori, iar testarea poate arăta prezența defectelor, dar niciodată absența acestora.
Testele dinamice asigură, de asemenea, consecvența în cadrul software-ului, așa cum arată acest exemplu.
Într-o aplicație bancară există mai multe ecrane, cum ar fi Conturile mele, Transfer de fonduri și Bill Plată. Toate conțin un câmp pentru sumă.
Să presupunem că câmpul Conturile mele afișează suma de 25,000, Transfer de fonduri afișează 25,000 USD și Bill Ecranul de plată afișează 25000 USD. Suma este aceeași, dar modul în care este afișată nu este, ceea ce face ca software-ul să fie inconsistent.
Consecvența nu se limitează la funcționalitate. Acoperă și standarde precum performanța, ușurința în utilizare și compatibilitatea, motiv pentru care testarea dinamică este atât de importantă.
Tipuri de testare dinamică
Testarea dinamică este clasificată în două categorii.
- Alb Box Testarea
- Negru Box Testarea
Diagrama de mai jos prezintă cele două categorii în raport cu nivelurile de testare care se află sub ele.
Fiecare tip și scopul său preconizat sunt descrise mai jos.
Alb Box Testarea — o metodă de testare a software-ului în care structura internă și designul sunt cunoscute de către tester. Scopul său principal este de a verifica performanța sistemului pe baza codului. Este efectuată în principal de către dezvoltatori sau de către testeri white box care au cunoștințe de programare.
Negru Box Testarea — o metodă de testare în care structura internă, codul și designul NU sunt cunoscute de către tester. Scopul său principal este de a verifica funcționalitatea sistemului testat. Acest tip de testare necesită executarea completă a suitei de teste, este efectuat în principal de către testeri și nu necesită cunoștințe de programare.
Testarea cutie neagră este din nou clasificată în două tipuri.
- Functional Testing
- Testare non-funcțională
Functional Testing
Testarea funcțională se efectuează pentru a verifica dacă toate caracteristicile dezvoltate corespund specificațiilor funcționale. Se realizează prin executarea funcției cazuri de testare redactat de echipa de asigurare a calității. În această fază, sistemul este testat prin furnizarea de informații de intrare, verificarea rezultatelor și compararea rezultatelor reale cu rezultatele așteptate.
Există diferite niveluri de testare funcțională, dintre care cele mai importante sunt cele patru de mai jos.
- Testarea unității — o unitate este o porțiune mică de cod, testabilă. Testarea unitară se efectuează pe o unitate individuală de software și este realizată de dezvoltatori.
- Testare de integrare — efectuată după testarea unitară, prin combinarea unităților individuale testabile. Se realizează fie de către dezvoltatori, fie de către testeri.
- Testarea sistemului — efectuată pentru a se asigura că sistemul se comportă conform cerințelor. În general, se efectuează de către testeri atunci când sistemul complet este gata, odată ce versiunea este lansată echipei de asigurare a calității.
- Testarea de acceptare — efectuată pentru a verifica dacă sistemul a îndeplinit cerințele de afaceri și este gata de utilizare sau implementare. În general, este efectuată de către utilizatorii finali.
Testare non-funcțională
Testare nefuncțională este o tehnică de testare care nu se concentrează pe aspectele funcționale, ci pe atributele nefuncționale ale sistemului, cum ar fi pierderile de memorie, performanța sau robustețea. Testarea nefuncțională se efectuează la toate nivelurile de testare.
Există multe tehnici de testare nefuncțională, dintre care cele mai importante sunt cele cinci de mai jos.
- Test de performanta — verifică dacă timpul de răspuns al sistemului este normal, conform cerințelor, sub sarcina dorită a rețelei.
- Testare de recuperare — verifică cât de bine se recuperează un sistem după blocări și defecțiuni hardware.
- Testarea compatibilității — verifică modul în care sistemul se comportă în diferite medii.
- Testarea securității — verifică robustețea aplicației, asigurându-se că doar utilizatorii și rolurile autorizate pot accesa sistemul.
- Testarea utilizabilității — verifică utilizabilitatea sistemului de către utilizatorii finali și cât de confortabil se simt aceștia cu acesta.
Tehnici de testare dinamică
Odată ce tipurile sunt stabilite, următoarea întrebare este cum se execută efectiv un ciclu de testare dinamică.
Tehnici de testare dinamică în STLC constă în sarcini precum analiza cerințelor pentru teste, planificarea testelor, proiectarea și implementarea cazurilor de testare, configurarea mediului de testare, execuția cazurilor de testare, raportarea erorilor și, în final, închiderea testelor. Fiecare sarcină din testarea dinamică depinde de finalizarea sarcinii anterioare din procesul de testare.
În cadrul STLC, procesul propriu-zis de testare dinamică începe de la proiectarea cazului de testare. Diagrama de mai jos prezintă secvența activităților, fiecare dintre acestea fiind descrisă după aceasta.
Înainte de a intra în proces, trebuie convenită strategia care trebuie urmată pentru testarea dinamică.
O strategie de testare ar trebui să se concentreze în principal pe resursele disponibile și pe intervalul de timp. Pe baza acestor doi factori, obiectivul testării, domeniul de aplicare al testării, fazele sau ciclurile de testare, tipul de mediu, presupunerile sau provocările care pot fi întâmpinate și riscurile, toate acestea trebuie documentate.
Odată ce strategia este definită și acceptată de management, începe procesul propriu-zis de proiectare a cazurilor de testare.
Proiectarea și implementarea testelor
În această fază, echipa identifică următoarele.
- Caracteristici de testat
- Condiții de testare derivate din aceste caracteristici
- Elemente de acoperire derivate din condițiile de testare
- Cazuri de testare derivate din elementele de acoperire
Cutie neagră tehnici de proiectare a testelor cum ar fi partiționarea prin echivalență, analiza valorilor la limită, testarea tabelului de decizie și testarea tranziției de stare sunt cele care transformă o condiție de testare într-un set concret de cazuri executabile.
Configurarea mediului de testare
mediu de testare ar trebui să fie întotdeauna similar cu mediul de producție. În această fază se instalează versiunea, iar mașinile de testare sunt gestionate și configurate.
Executarea testului
În această fază, cazurile de testare sunt efectiv executate, fie manual, fie prin automatizare... iar rezultatele reale sunt înregistrate în raport cu rezultatele așteptate.
Raport de eroare capturat
Pe baza execuției, dacă rezultatele așteptate și cele reale nu sunt aceleași, cazul de testare trebuie marcat ca Eșuat și o eroare trebuie înregistrată în gestionarea defectelor proces.
Avantajele testării dinamice
- Testarea dinamică dezvăluie defecte considerate prea dificile sau complicate de detectat și pe care analiza statică nu le poate acoperi deloc.
- Software-ul este executat complet, ceea ce crește calitatea atât a produsului, cât și a proiectului.
- Testarea dinamică este un mijloc esențial de detectare a amenințărilor de securitate într-un sistem care rulează.
- Erorile specifice runtime-ului, cum ar fi pierderile de memorie, problemele de sincronizare și erorile de integrare, apar aici și nicăieri altundeva.
Dezavantajele testării dinamice
- Testarea dinamică consumă mult timp, deoarece executarea aplicației sau a codului necesită o cantitate mare de resurse.
- Crește costul proiectului, deoarece nu începe devreme în ciclul de viață al software-ului, iar problemele remediate în etapele ulterioare costă mai mult.
- Un mediu de producție și date de testare realiste sunt condiții prealabile, iar ambele necesită efort pentru a fi construite și întreținute.


