Ce este testarea unitară?
UNIT TESTING este un tip de testare software în care sunt testate unități individuale sau componente ale unui software. Scopul este de a valida faptul că fiecare unitate a codului software funcționează conform așteptărilor. Testarea unitară se face în timpul dezvoltării (fazei de codare) a unei aplicații de către dezvoltatori. Testele de unitate izolează o secțiune de cod și verifică corectitudinea acesteia. O unitate poate fi o funcție, metodă, procedură, modul sau obiect individual.
În modelele SDLC, STLC, V, testarea unității este primul nivel de testare efectuat înainte de testarea integrării. Testarea unitară este o tehnică de testare WhiteBox care este de obicei efectuată de dezvoltator. Deși, într-o lume practică din cauza crizei de timp sau a reticenței dezvoltatorilor la teste, inginerii QA fac și teste unitare.
În acest tutorial, veți învăța-
- De ce testarea unitară?
- Cum se face testarea unitară
- Tehnici de testare unitară
- Instrumente de testare unitară
- Test Driven Development (TDD) & Unit Testing
- Mitul testării unitare
- Avantajul testării unitare
- Dezavantaje ale testării unitare
- Cele mai bune practici de testare unitară
De ce testarea unitară?
Testarea unitară este importantă, deoarece dezvoltatorii de software încearcă uneori să economisească timp făcând teste unitare minime și acest lucru este mit deoarece testarea unitară necorespunzătoare duce la costuri ridicate. Dacă se efectuează testarea corespunzătoare a unităților în dezvoltarea timpurie, atunci se economisește timp și bani în cele din urmă.
Iată care sunt principalele motive pentru efectuarea testării unitare în ingineria software:
- Testele unitare ajută la remedierea erorilor la începutul ciclului de dezvoltare și la reducerea costurilor.
- Ajută dezvoltatorii să înțeleagă baza codului de testare și le permite să facă modificări rapid
- Testele unitare bune servesc drept documentație a proiectului
- Testele unitare ajută la reutilizarea codului. Migrați atât codul cât și testele către noul dvs. proiect. Modificați codul până când testele rulează din nou.
Cum se face testarea unitară
Pentru a face testarea unitară , dezvoltatorii scriu o secțiune de cod pentru a testa o anumită funcție în aplicația software. Dezvoltatorii pot, de asemenea, să izoleze această funcție pentru a testa mai riguros, ceea ce relevă dependențe inutile între funcția testată și alte unități, astfel încât dependențele să poată fi eliminate. Dezvoltatorii folosesc în general cadrul UnitTest pentru a dezvolta cazuri de testare automate pentru testarea unitară.
Testarea unitară este de două tipuri
- Manual
- Automat
Testarea unității este de obicei automatizată, dar poate fi efectuată în continuare manual. Ingineria software nu favorizează una față de cealaltă, dar este preferată automatizarea. O abordare manuală a testării unitare poate utiliza un document instructiv pas cu pas.
În cadrul abordării automate-
- Un dezvoltator scrie o secțiune de cod în aplicație doar pentru a testa funcția. Ulterior vor comenta și vor elimina în cele din urmă codul de testare atunci când aplicația este implementată.
- Un dezvoltator ar putea, de asemenea, să izoleze funcția pentru a o testa mai riguros. Aceasta este o practică de testare unitară mai detaliată care implică copierea și lipirea codului în propriul mediu de testare decât mediul său natural. Izolarea codului ajută la relevarea dependențelor inutile între codul testat și alte unități sau spații de date din produs. Aceste dependențe pot fi apoi eliminate.
- Un programator utilizează în general un cadru UnitTest pentru a dezvolta cazuri de testare automate. Folosind un cadru de automatizare, dezvoltatorul codifică criteriile în test pentru a verifica corectitudinea codului. În timpul execuției cazurilor de test, cadrul înregistrează cazurile de test nereușite. Multe cadre vor semnaliza și raporta automat, pe scurt, aceste cazuri de test nereușite. În funcție de gravitatea unui eșec, cadrul poate opri testarea ulterioară.
- Fluxul de lucru al testării unitare este 1) Crearea cazurilor de testare 2) Revizuirea / reluarea 3) Linia de bază 4) Executarea cazurilor de testare.
Tehnici de testare unitară
Cele Unitatea de tehnici de testare sunt clasificate în principal în trei părți , care sunt de testare cutie neagră care implică testarea interfeței de utilizator , împreună cu intrare și de ieșire, testare cutie alba care implica testarea comportamentului funcțional al aplicației software și testare caseta gri , care este utilizat pentru a executa testul suite, metode de testare, cazuri de testare și efectuarea de analize de risc.
Tehnicile de acoperire a codurilor utilizate în testarea unitară sunt enumerate mai jos:
- Acoperirea declarației
- Acoperirea deciziei
- Acoperirea sucursalei
- Acoperirea stării
- Acoperirea mașinii de stat finit
Pentru mai multe informații, consultați https://www.guru99.com/code-coverage.html
Exemplu de testare a unității: obiecte simulate
Testarea unității se bazează pe crearea de obiecte simulate pentru a testa secțiuni de cod care nu fac încă parte dintr-o aplicație completă. Obiectele simulate se completează pentru părțile lipsă ale programului.
De exemplu, este posibil să aveți o funcție care are nevoie de variabile sau obiecte care nu sunt încă create. În testarea unitară, acestea vor fi contabilizate sub formă de obiecte simulate create exclusiv în scopul testării unitare efectuate în acea secțiune de cod.
Instrumente de testare unitară
Există mai multe software-uri automatizate de testare a unității disponibile pentru a ajuta la testarea unității. Vă vom oferi câteva exemple mai jos:
- Junit: Junit este un instrument de testare gratuit utilizat pentru limbajul de programare Java. Oferă afirmații pentru identificarea metodei de testare. Acest instrument testează mai întâi datele și apoi se introduce în bucata de cod.
- NUnit: NUnit este utilizat pe scară largă pentru utilizarea cadrului de testare a unităților pentru toate limbile .net. Este un instrument open source care permite scrierea manuală a scripturilor. Suportă teste bazate pe date care pot rula în paralel.
- JMockit: JMockit este un instrument open source de testare a unității. Este un instrument de acoperire a codului cu valori de linie și cale. Permite batjocorirea API cu sintaxă de înregistrare și verificare. Acest instrument oferă acoperire de linie, acoperire de cale și acoperire de date.
- EMMA: EMMA este un set de instrumente open-source pentru analiza și raportarea codului scris în limbaj Java. Tipuri de acoperire de asistență Emma, cum ar fi metoda, linia, blocul de bază. Este bazat pe Java, deci este fără dependențe de bibliotecă externe și poate accesa codul sursă.
- PHPUnit: PHPUnit este un instrument de testare unitară pentru programatorul PHP. Este nevoie de porțiuni mici de cod care se numesc unități și testează fiecare dintre ele separat. Instrumentul permite, de asemenea, dezvoltatorilor să utilizeze metode de afirmare pre-definite pentru a afirma că un sistem se comportă într-un anumit mod.
Acestea sunt doar câteva dintre instrumentele disponibile pentru testarea unității. Există multe altele, în special pentru limbajele C și Java, dar sunteți sigur că veți găsi un instrument de testare a unității pentru nevoile dvs. de programare, indiferent de limba pe care o utilizați.
Test Driven Development (TDD) & Unit Testing
Testarea unității în TDD implică o utilizare extinsă a cadrelor de testare. Un cadru de testare unitar este utilizat pentru a crea teste unitare automatizate. Cadrele de testare a unității nu sunt unice pentru TDD, dar sunt esențiale pentru aceasta. Mai jos ne uităm la câteva dintre ceea ce aduce TDD în lumea testării unitare:
- Testele sunt scrise înainte de cod
- Se bazează foarte mult pe cadrele de testare
- Toate clasele din aplicații sunt testate
- Integrarea rapidă și ușoară este posibilă
Mitul testării unitare
Mitul: necesită timp și sunt întotdeauna supra-programat Codul meu este solid! Nu am nevoie de teste unitare.
Miturile prin natura lor sunt presupuneri false. Aceste ipoteze conduc la un ciclu vicios după cum urmează -
Adevărul este că testarea unitară crește viteza de dezvoltare.
Programatorii cred că testarea integrării va surprinde toate erorile și nu va executa testul unitar. Odată ce unitățile sunt integrate, erorile foarte simple care ar fi putut fi ușor găsite și remediate în unitatea testată durează foarte mult pentru a fi urmărite și remediate.
Avantajul testării unitare
- Dezvoltatorii care doresc să afle ce funcționalitate oferă o unitate și cum să o folosească pot examina testele unitare pentru a obține o înțelegere de bază a API-ului unității.
- Testarea unității permite programatorului să refactorizeze codul la o dată ulterioară și să se asigure că modulul funcționează în continuare corect (adică testarea de regresie). Procedura constă în scrierea cazurilor de test pentru toate funcțiile și metodele, astfel încât ori de câte ori o modificare provoacă o eroare, aceasta poate fi identificată și remediată rapid.
- Datorită naturii modulare a testării unitare, putem testa părți ale proiectului fără a aștepta finalizarea altora.
Dezavantaje ale testării unitare
- Nu se poate aștepta ca testarea unității să surprindă fiecare eroare dintr-un program. Nu este posibil să se evalueze toate căile de execuție chiar și în cele mai banale programe
- Testarea unitară prin natura sa se concentrează pe o unitate de cod. Prin urmare, nu poate detecta erori de integrare sau erori la nivel de sistem.
Se recomandă utilizarea testelor unitare împreună cu alte activități de testare.
Cele mai bune practici de testare unitară
- Cazurile testelor unitare ar trebui să fie independente. În cazul unor îmbunătățiri sau modificări ale cerințelor, cazurile testelor unitare nu ar trebui să fie afectate.
- Testați un singur cod odată.
- Respectați convențiile de denumire clare și coerente pentru testele unitare
- În cazul unei modificări a codului în orice modul, asigurați-vă că există un caz corespunzător Test Test pentru modul, iar modulul trece testele înainte de a schimba implementarea
- Erorile identificate în timpul testării unitare trebuie remediate înainte de a trece la următoarea fază în SDLC
- Adoptați o abordare „testare ca cod”. Cu cât scrieți mai mult cod fără testare, cu atât mai multe căi trebuie să verificați dacă există erori.
rezumat
- UNIT TESTING este definit ca un tip de testare software în care sunt testate unități individuale sau componente ale unui software.
- După cum puteți vedea, pot fi multe implicate în testarea unității. Poate fi complex sau mai degrabă simplu, în funcție de aplicația testată și de strategiile de testare, instrumentele și filozofiile utilizate. Testarea unității este întotdeauna necesară la un anumit nivel. Aceasta este o certitudine.