03/28/2024

Tipuri, instrumente și bune practici

Când scrieți software-ul, erorile vor apărea în codul dvs. Acest lucru poate fi sub formă de erori de sintaxă, erori de logică, erori de rulare, erori de performanță, erori de date sau și mai rău.

Natura aproape omniprezentă a erorilor în timpul scrierii software-ului face ca testarea software-ului să fie un pas important în dezvoltarea software-ului. Testarea corectă și eficientă nu numai că are ca rezultat software de înaltă calitate, care satisface nevoile utilizatorilor, ci și software care respectă reglementările și are puține sau deloc vulnerabilități care pot fi exploatate de atacatori.

Testarea software-ului poate fi efectuată sub formă de testare automată, testare unitară, testare de integrare sau testare a întregului software prin testarea sistemului.

Cu toate acestea, un aspect important care apare în timpul software-ului este modul în care determinați dacă software-ul dvs. a fost testat cuprinzător. Sunt suficiente testele pe care le-ați rulat pe software?

Ați testat complet toate părțile software-ului dvs. sau există bucăți de cod care nu au fost testate deloc?

Asemenea întrebări trebuie să apară atunci când faceți testarea software-ului și acesta este ceea ce face ca acoperirea codului să fie atât de importantă.

Acoperirea codului este o valoare de testare a software-ului care vă spune cât de mult din codul dvs. a fost executat și astfel testat de testele pe care le-ați executat pe software-ul pe care îl testați. Rezultatele acoperirii codului sunt exprimate ca procent.

Acest procentaj arată cât de mult din codul dvs. a fost acoperit de testele pe care le-ați executat pe cod. De exemplu, dacă executați un test și obțineți înapoi o acoperire de cod de 60%, înseamnă că 40% din codul dvs. nu a fost acoperit de testele pe care le-ați scris și, prin urmare, ar putea exista erori și vulnerabilități în codul netestat.

Din acest motiv, acoperirea codului vă permite să analizați eficacitatea și caracterul complet al testelor pe care le-ați executat pe software-ul dvs. Acest lucru are avantajul de a se asigura că software-ul este testat corect și complet înainte de a fi lansat. Acest lucru reduce erorile software în software-ul de producție, care ar putea afecta experiența utilizatorilor cu software-ul.

Oricât de mult o acoperire de cod de 100% nu înseamnă neapărat că software-ul pe care îl scrieți este complet lipsit de erori, doriți să urmăriți o acoperire ridicată a codului pentru a asigura testarea eficientă a software-ului dumneavoastră.

În industriile critice, cum ar fi aerospațiale și medicina, unde erorile software ar putea duce la moarte, reglementările cer o acoperire de 100% a software-ului în timpul testării.

Tipuri de valori de acoperire a codului

Există mai multe tipuri de metrici de acoperire a codului care pot fi măsurate în timpul testării software-ului. Ei includ:

  • Statement Coverage – măsoară procentul de instrucțiuni executabile din codul sursă care au fost executate în timpul testării.
  • Acoperire funcție – măsoară procentul de funcții definite care au fost apelate în timpul testării.
  • Branch Coverage – măsoară procentul de ramuri sau posibile căi care au fost executate din toate punctele de decizie din codul sursă. Este folosit pentru a se asigura că toate ramurile care apar din structurile de control al deciziei, cum ar fi instrucțiunile if, switch și if else, au fost complet testate.
  • Acoperire condiție – măsoară procentul de expresii booleene care au fost testate atât pentru valori adevărate, cât și pentru valori false.
  • Loop Coverage – măsoară procentul de bucle din codul sursă care au fost executate în timpul testării.
  • Path Coverage – măsoară procentul din toate căile de execuție posibile din codul sursă care au fost testate.
  Cum să încorporați fonturi în PowerPoint

Valorile de mai sus sunt de obicei incluse într-un raport de acoperire a codului.

Cele mai bune practici privind acoperirea codului

Există anumite bune practici care sunt recomandate în timpul acoperirii codului pentru a asigura eficacitatea și calitatea acoperirii codului. Ei includ:

Aveți obiective clare de acoperire

În orice testare software efectuată, setați procente de acoperire țintă pentru fiecare măsură de acoperire a testului care este adecvată. Acest lucru are avantajul nu numai de a oferi obiective clare de testare, ci și de a ajuta la reducerea defectelor software-ului prin direcționarea eforturilor echipei în creșterea acoperirii codului. De asemenea, ajută la asigurarea faptului că testării software-ului i se acordă atenția pe care o merită în timpul dezvoltării software.

Concentrați-vă pe calitatea testului

Este important de reținut că acoperirea codului arată pur și simplu procentul de cod care a fost testat și nu arată dacă acestea au fost testate corect sau dacă software-ul nu conține erori. Prin urmare, în loc să ne concentrăm pur și simplu pe obținerea unei acoperiri de cod mai aproape de 100%, accentul ar trebui să se pună pe calitatea scrierii și pe teste eficiente care testează corect software-ul și adaugă valoare.

Creșteți acoperirea codului în codul care se schimbă frecvent

În timp ce obținerea unor numere mari de acoperire a codului în proiecte mari ar putea fi dificilă, se pot depune eforturi pentru a se asigura că acoperirea codului se îmbunătățește în timp.

O modalitate excelentă de a face acest lucru este prin a solicita o acoperire ridicată a codului de peste 90 la sută în fiecare nou commit care se face la baza de cod al proiectului.

Implementarea acoperirii codului la nivel de commit nu este doar realistă și fezabilă, ci și asigură că orice modificări noi aduse software-ului au o acoperire excelentă a codului.

Măsurați și analizați datele de acoperire a codului

Utilizați rezultatele obținute din acoperirea codului pentru a identifica zonele care încă au nevoie de testare și, de asemenea, pentru a ghida eforturile viitoare de testare, cu prioritate pe zonele cu acoperire redusă de cod.

Analizați datele de acoperire a codului pentru a identifica zonele critice ale unei aplicații care nu a fost încă testată și direcționați-vă eforturile pentru a testa pe deplin zonele critice netestate. Utilizarea datelor de acoperire a codului pentru îmbunătățirea și prioritizarea software-ului are ca rezultat un software mai bine testat, cu mai puține defecte.

Acoperirea codului vs. Acoperirea testului

În timp ce ambele sunt utilizate pentru a stabili eficiența testelor, acoperirea codului și acoperirea testelor sunt fundamental diferite în ceea ce privește utilizarea lor și ceea ce măsoară.

Acoperirea testelor este o măsurătoare utilizată pentru a determina măsura în care testele scrise acoperă cerințele software-ului. Aceasta implică testarea fiecărei cerințe software și ajută la stabilirea cât de bine a fost testat software-ul în ceea ce privește îndeplinirea cerințelor sale.

Rezultatele acoperirii testelor arată procentul de cerințe de software care au fost testate. Acoperirea testelor este efectuată de obicei de profesioniști în asigurarea calității.

Acoperirea codului, pe de altă parte, este o măsurătoare de testare software utilizată pentru a determina procentul din codul sursă care a fost executat de testele scrise.

Rezultatele unei acoperiri de cod arată măsura în care instrucțiunile, funcțiile, căile, buclele, ramurile și condițiile din codul sursă au fost executate de testele unitare scrise. Acoperirea codului este utilizată pentru a evalua cât de bine acoperă testele scrise codul sursă și este de obicei realizată de dezvoltatorii de software.

  Construiește-ți următoarea aplicație cu aceste platforme open source low-code/fără cod

Acoperirea codului este o măsură importantă de măsurat în timpul testării software-ului. Iată câteva instrumente care vă vor ajuta cu acoperirea codului:

Trifoi

Clover este un instrument de acoperire a codului open-source dezvoltat inițial de Atlassian, o companie australiană de software care dezvoltă produse pentru echipele de dezvoltare de software. Instrumentul este scris exclusiv în Java și poate rula pe orice sistem de operare care îndeplinește cerințele pentru Java Runtime Environment.

Clover poate fi folosit pentru a acoperi codul pe codul scris în limbaje de programare Java, Groovy sau AspectJ. Are suport pentru cadre de testare precum JUnit, TestNG și Spock și poate fi integrat și cu IDE-uri precum IntelliJ IDEA și Eclipse.

Clover poate fi folosit pentru a măsura valorile de acoperire a codului, cum ar fi metoda, declarația, ramura, acoperirea globală și per-test.

Dintr-un exercițiu de acoperire a codului, poate genera rapoarte HTML extrem de configurabile care arată rezultatele acoperirii codului, în plus față de zonele cu risc de top din software și pot fi utilizate în optimizările testelor.

Rapoartele pot fi generate și în format PDF, XML, JSON sau text simplu. Avantajele cheie ale trifoiului sunt că poate fi integrat cu multe instrumente diferite și este dezvoltat și îmbunătățit în mod activ.

JaCoCo

JaCoCo este o bibliotecă gratuită de acoperire a codului pentru limbajul de programare Java dezvoltat de echipa EclEmma. Biblioteca este implementată în EclEmma, ​​care este un instrument gratuit de acoperire a codului Java pentru IDE-ul Eclipse.

JaCoCo oferă o analiză bogată de acoperire ale cărei rezultate sunt imediat rezumate și evidențiate în editorul de cod sursă Java și permite utilizatorilor să detalieze rezultatele acoperirii la nivelul metodei.

Rezultatele sunt prezentate folosind un cod de culoare personalizabil care evidențiază liniile de cod care au fost complet, parțial sau încă neacoperite de testele efectuate pe codul sursă. Permite îmbinarea și luarea în considerare a diferitelor rulări de testare pentru a ajunge la o acoperire totală a codului sursă.

JaCoCo este un instrument ușor și nu necesită modificarea proiectelor sau efectuarea oricăror alte setări de utilizat pentru analiza acoperirii codului.

Cobertura

Cobertura este un instrument de acoperire a codului Java gratuit și open-source care se bazează pe Jcoverage și poate fi folosit singur, prin scriptul Ant sau prin pluginul Maven. Utilizarea acestuia printr-un plugin Maven este cea mai comună modalitate de a folosi Cobertura pentru acoperirea codului.

Cobertura măsoară procentul de linii sau ramuri care au fost executate prin teste executate pe un cod sursă Java. Oferă metrici precum acoperirea liniei care arată procentul de instrucțiuni executate în timpul testelor și, de asemenea, acoperirea ramurilor care arată procentul ramurilor acoperite în timpul testelor.

De asemenea, arată un factor de complexitate care crește pe măsură ce crește numărul de ramuri din codul Java.

Rezultatele acoperirii codului sunt prezentate în HTML sau XML, arătând care părți ale codului sursă nu au fost testate. Pe lângă afișarea rezultatelor de acoperire a testelor, Cobertura poate fi folosit și pentru a localiza codul netestat și erorile și, de asemenea, identificarea codului inaccesibil.

Istanbul

Istanbul este un instrument de acoperire a codului pentru codul JavaScript cu suport pentru ES6+. Acest instrument poate fi instalat în orice proiect Javascript ca o dependență de dezvoltare folosind managerul de pachete node.

Istanbul oferă valori de acoperire a codului, cum ar fi acoperirea declarației, ramurilor, funcției și liniilor. De asemenea, arată liniile din codul sursă care nu au fost acoperite de teste. Face acest lucru adăugând contoare de linii la codul JavaScript, astfel încât să poată urmări măsura în care testele unitare execută codul sursă.

Rezultatele de acoperire a codului de către Istanbul pot fi afișate în terminal sau sub formă de HTML. În plus, Istanbul oferă suport pentru aplicațiile care generează subprocese, acoperire mapată sursă a proiectelor Babel și TypeScript.

  Cum să înlocuiți un caracter într-un șir folosind Python

Pytest-cov

Pytest-cov este un plugin Python gratuit folosit pentru a genera rapoarte de acoperire a codului pentru codul Python. Este instalat folosind programul de instalare a pachetelor Python Pip și este operat din linia de comandă.

Raportul său de acoperire a codului arată declarațiile din proiectul dvs. Python, cele care nu sunt acoperite de teste și oferă un procentaj de acoperire a testelor care arată procentul din codul dvs. Python acoperit de teste.

Pytest-cov oferă suport pentru subprocese, suport xdist și comportament pytest consecvent. Comportamentul implicit al Pytest-cov în timpul efectuării testelor este ștergerea fișierelor de date de acoperire existente pentru a asigura date noi și curate pentru fiecare nouă rulare de testare. Cu toate acestea, de asemenea, permite utilizatorilor să combine rezultatele testului de acoperire a codului din testele anterioare.

Acoperire.py

Coverage.py este un instrument de acoperire a codului pentru programele Python și este instalat în proiecte care utilizează pip.

În mod implicit, măsoară acoperirea liniei sau a instrucțiunilor și oferă rezultate care arată numărul de instrucțiuni din program, cele ratate de teste și procentul de acoperire din test și arată, de asemenea, liniile din codul sursă Python care au fost ratate de testele. Cu toate acestea, poate fi încă configurat pentru a măsura acoperirea ramurilor în programele Python.

Coverage.py poate fi folosit și pentru a spune ce teste au rulat și ce linii din codul sursă. Raportul său de acoperire a codului poate fi prezentat în terminal și, de asemenea, în formatele HTML, XML, JSON și LCOV.

SimpleCov

SimpleCov este un instrument robust de acoperire a codului pentru limbajul de programare Ruby. Folosește biblioteca de acoperire încorporată a lui Ruby pentru a aduna date relevante pentru a fi utilizate la determinarea acoperirii codului după rularea testelor.

Cel mai bun lucru despre SimpleCov este prezentarea rezultatelor de acoperire a codului. De asemenea, combină rezultatele de la diferite tipuri de teste efectuate, astfel încât raportul generat să arate rezultatele din toate testele efectuate, permițând identificarea ușoară a părților netestate ale codului.

De asemenea, formatează codul sursă cu coduri de culoare care pot fi utilizate cu ușurință pentru a identifica părțile testate și netestate ale codului. În mod implicit, SimpleCov măsoară și raportează acoperirea liniei de teste. Cu toate acestea, poate fi configurat pentru a măsura și raporta acoperirea ramurilor a testelor efectuate.

Sub acoperire

Deep Cover este un instrument precis de acoperire a codului pentru codul Ruby. Oferă rapoarte de acoperire a liniilor mai precise, asigurându-se că o linie este considerată acoperită numai atunci când este executată în întregime și nu parțial.

În plus, oferă suport pentru acoperirea nodurilor și a ramurilor, care poate fi utilizat opțional pentru a afla dacă există unele ramuri care nu au fost luate de teste.

Deep Cover nu este doar ușor de utilizat fără a fi nevoie de configurații, dar poate fi integrat în proiecte utilizând alte instrumente de acoperire a codului, cum ar fi biblioteca încorporată de acoperire a codului Ruby sau SimpleCov. În astfel de cazuri, Deep Cover face instrumentele mai stricte prin marcarea liniilor ca fiind executate numai dacă totul din linia de cod este executat complet.

Concluzie

Oricât de mult o acoperire mai mare a codului nu va duce neapărat la un software fără erori, este o măsură crucială care trebuie luată în considerare atunci când se testează software-ul. Acoperirea codului este importantă pentru a evalua cât de mult testele scrise testează de fapt codul sursă al unui software.

În plus, lucrul la îmbunătățirea acoperirii codului în timpul testării are ca rezultat un software mai bine testat, care este mai puțin predispus la erori în producție. Pentru a efectua acoperirea codului în timp ce testați software-ul, luați în considerare utilizarea instrumentelor sugerate în articol.

De asemenea, puteți explora instrumente de testare a încărcării bazate pe cloud.

x