Ce este acoperirea Codului?
Acoperirea codului este o măsură care descrie gradul de testare a codului sursă al programului. Este o formă de testare a cutiei albe care găsește zonele programului care nu sunt exercitate de un set de cazuri de testare. De asemenea, creează câteva cazuri de testare pentru a crește acoperirea și a determina o măsură cantitativă a acoperirii codului.
În majoritatea cazurilor, sistemul de acoperire a codului colectează informații despre programul care rulează. De asemenea, combină aceste informații cu codul sursă pentru a genera un raport despre acoperirea codului suitei de testare.
În acest tutorial, veți învăța-
- Ce este acoperirea Codului?
- De ce să folosești acoperirea codului?
- Metode de acoperire a codului
- Acoperirea declarației
- Acoperirea deciziei
- Acoperirea sucursalei
- Acoperirea stării
- Acoperirea mașinii de stat finit
- Ce tip de acoperire a codului să alegeți
- Acoperire cod vs. acoperire funcțională
- Instrumente de acoperire a codului
- Avantajele și dezavantajele utilizării acoperirii codului
De ce să folosești acoperirea codului?
Iată câteva motive principale pentru utilizarea acoperirii codului:
- Vă ajută să măsurați eficiența implementării testului
- Oferă o măsurare cantitativă.
- Acesta definește gradul în care a fost testat codul sursă.
Metode de acoperire a codului
Următoarele sunt metodele majore de acoperire a codului
- Acoperirea declarației
- Acoperirea deciziei
- Acoperirea sucursalei
- Comutați acoperirea
- Acoperire FSM
Acoperirea declarației
Acoperirea instrucțiunilor este o tehnică de testare a casetei albe în care toate instrucțiunile executabile din codul sursă sunt executate cel puțin o dată. Este folosit pentru calcularea numărului de instrucțiuni din codul sursă care au fost executate. Scopul principal al Declarației de acoperire este de a acoperi toate căile, liniile și declarațiile posibile din codul sursă.
Acoperirea declarației este utilizată pentru a obține un scenariu bazat pe structura codului testat.
În White Box Testing, testerul se concentrează asupra modului în care funcționează software-ul. Cu alte cuvinte, testerul se va concentra asupra funcționării interne a codului sursă referitor la diagrame de control sau diagrame.
În general, în orice software, dacă ne uităm la codul sursă, va exista o mare varietate de elemente, cum ar fi operatorii, funcțiile, buclarea, handlerele excepționale, etc. Pe baza intrării în program, este posibil ca unele dintre instrucțiunile de cod să nu fie executate . Scopul acoperirii Declarației este de a acoperi toate căile, linia și declarația posibile din cod.
Să înțelegem acest lucru cu un exemplu, cum să calculăm acoperirea extrasului.
Scenariu pentru calcularea acoperirii extrasului pentru codul sursă dat. Aici luăm două scenarii diferite pentru a verifica procentajul acoperirii extrasului pentru fiecare scenariu.
Cod sursa:
Prints (int a, int b) {------------ Printsum este o funcțieint rezultat = a + b;Dacă (rezultat> 0)Tipărire („Pozitiv”, rezultat)AltfelTipărire („Negativ”, rezultat)} ----------- Sfârșitul codului sursă
Scenariul 1:
Dacă A = 3, B = 9
Declarațiile marcate cu culoare galbenă sunt cele care sunt executate conform scenariului
Numărul de declarații executate = 5, Numărul total de declarații = 7
Acoperirea extrasului: 5/7 = 71%
La fel vom vedea scenariul 2,
Scenariul 2:
Dacă A = -3, B = -9
Declarațiile marcate cu culoare galbenă sunt cele care sunt executate conform scenariului.
Numărul de declarații executate = 6
Numărul total de afirmații = 7
Acoperirea extrasului: 6/7 = 85%
Dar, în general, dacă vedeți, toate afirmațiile sunt acoperite de al doilea scenariu. Deci, putem concluziona că acoperirea generală a declarației este de 100%.
Ce este acoperit de acoperirea declarației?
- Declarații neutilizate
- Cod mort
- Ramuri neutilizate
- Declarații lipsă
Acoperirea deciziei
Acoperirea deciziilor este o tehnică de testare a cutiei albe care raportează rezultatele adevărate sau false ale fiecărei expresii booleene a codului sursă. Scopul testării acoperirii deciziilor este de a acoperi și valida tot codul sursă accesibil prin verificarea și asigurarea faptului că fiecare ramură a fiecărui punct de decizie posibil este executată cel puțin o dată.
În această acoperire, expresiile se pot complica uneori. Prin urmare, este foarte greu să obții o acoperire de 100%. De aceea există multe metode diferite de raportare a acestei valori. Toate aceste metode se concentrează pe acoperirea celor mai importante combinații. Este foarte similar cu acoperirea deciziilor, dar oferă o sensibilitate mai bună la controlul fluxului.
Exemplu de acoperire a deciziilor
Luați în considerare următorul cod-
Demo (int a) {Dacă (a> 5)a = a * 3Tipărire (a)}
Scenariul 1:
Valoarea a este 2
Codul evidențiat în galben va fi executat. Aici este bifat rezultatul „Nu” al deciziei Dacă (a> 5).
Acoperirea deciziei = 50%
Scenariul 2:
Valoarea a este 6
Codul evidențiat în galben va fi executat. Aici este bifat rezultatul „Da” al deciziei Dacă (a> 5).
Acoperirea deciziei = 50%
Caz de testare | Valoarea lui A | Ieșire | Acoperirea deciziei |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Acoperirea sucursalei
Acoperirea filialei este o metodă de testare a cutiei albe în care se testează fiecare rezultat al unui modul de cod (declarație sau buclă). Scopul acoperirii sucursalei este de a se asigura că fiecare condiție de decizie de la fiecare sucursală este executată cel puțin o dată. Ajută la măsurarea fracțiilor de segmente de cod independente și la aflarea secțiunilor care nu au ramuri.
De exemplu, dacă rezultatele sunt binare, trebuie să testați atât rezultatele adevărate, cât și cele false.
Formula pentru calcularea acoperirii sucursalei:
Exemplu de acoperire a sucursalei
Pentru a afla acoperirea sucursalei, să luăm în considerare același exemplu folosit anterior
Luați în considerare următorul cod
Demo (int a) {Dacă (a> 5)a = a * 3Tipărire (a)}
Acoperirea sucursalei va lua în considerare și sucursala necondiționată
Caz de testare | Valoarea lui A | Ieșire | Acoperirea deciziei | Acoperirea sucursalei |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Avantajele acoperirii sucursalei:
Testarea acoperirii sucursalei oferă următoarele avantaje:
- Vă permite să validați toate ramurile din cod
- Vă ajută să vă asigurați că nicio ramificare nu duce la nicio anomalie a funcționării programului
- Metoda de acoperire a sucursalei elimină problemele care apar din cauza testării acoperirii declarațiilor
- Vă permite să găsiți acele zone care nu sunt testate prin alte metode de testare
- Vă permite să găsiți o măsură cantitativă a acoperirii codului
- Acoperirea ramurilor ignoră ramurile din interiorul expresiilor booleene
Acoperirea stării
Acoperirea condiției sau acoperirea expresiei este o metodă de testare utilizată pentru a testa și evalua variabilele sau subexpresiile din instrucțiunea condițională. Scopul acoperirii stării este de a verifica rezultatele individuale pentru fiecare condiție logică. Acoperirea stării oferă o sensibilitate mai bună la fluxul de control decât acoperirea deciziilor. În această acoperire, expresiile cu operanzi logici sunt luate în considerare numai.
De exemplu, dacă o expresie are operații booleene precum AND, OR, XOR, care indică posibilități totale.
Acoperirea condiției nu oferă o garanție cu privire la acoperirea completă a deciziilor.
Formula pentru a calcula acoperirea condiției:
Exemplu:
Pentru expresia de mai sus, avem 4 combinații posibile
- TT
- FF
- TF
- FT
Luați în considerare următoarea intrare
X = 3 Y = 4 |
(x |
ADEVĂRAT |
Acoperirea stării este ¼ = 25% |
A = 3 B = 4 |
(a> b) |
FALS |
Acoperirea mașinii de stat finit
Acoperirea mașinii cu stare finită este cu siguranță cel mai complex tip de metodă de acoperire a codului. Acest lucru se datorează faptului că funcționează pe comportamentul designului. În această metodă de acoperire, trebuie să căutați câte stări specifice timpului sunt vizitate, tranzitate. De asemenea, verifică câte secvențe sunt incluse într-o mașină cu stări finite.
Ce tip de acoperire a codului să alegeți
Acesta este cu siguranță cel mai dificil răspuns pe care să-l dai. Pentru a selecta o metodă de acoperire, testerul trebuie să verifice dacă
- codul testat are defecte nedescoperite simple sau multiple
- costul penalității potențiale
- costul pierderii reputației
- costul vânzării pierdute etc.
Cu cât este mai mare probabilitatea ca defectele să provoace eșecuri de producție costisitoare, cu atât este mai sever nivelul de acoperire pe care trebuie să îl alegeți.
Acoperire cod vs. acoperire funcțională
Acoperirea codului | Acoperire funcțională |
Acoperirea codului vă indică cât de bine a fost exercitat codul sursă de bancul dvs. de testare. | Acoperirea funcțională măsoară cât de bine a fost acoperită funcționalitatea designului de către bancul de testare. |
Nu utilizați niciodată o specificație de proiectare | Folosiți specificațiile de proiectare |
Realizat de dezvoltatori | Realizat de testeri |
Instrumente de acoperire a codului
Iată o listă de instrumente importante de acoperire a codului:
Numele instrumentului | Descriere |
Cobertura | Este un instrument de acoperire a codului sursă deschisă. Măsoară acoperirea testului prin instrumentarea unei baze de cod și analizează ce linii de cod se execută și care nu sunt executate când rulează suita de testare. |
Trifoi | Clover reduce, de asemenea, timpul de testare executând doar testele care acoperă codul aplicației care a fost modificat de la versiunea anterioară. |
DevPartner | DevPartner permite dezvoltatorilor să analizeze codul Java pentru calitatea și complexitatea codului. |
Emma | EMMA acceptă acoperirea blocurilor de clasă, metodă, linie și bază, fișiere sursă agregate, clase și niveluri de metodă. |
Kalistick | Kalistick este o aplicație terță parte care analizează codurile cu perspective diferite. |
CoView și CoAnt | Software-ul de codare este un instrument de acoperire a codului pentru valori, crearea de obiecte simulate, testabilitatea codului, acoperirea căilor și ramurilor etc. |
Bullseye pentru C ++ | BulseyeCoverage este un instrument de acoperire a codurilor pentru C ++ și C. |
Sonar | Sonar este un instrument deschis de acoperire a codului care vă ajută să gestionați calitatea codului. |
Avantajele utilizării acoperirii codului
- Util pentru a evalua o măsură cantitativă a acoperirii codului
- Vă permite să creați cazuri de testare suplimentare pentru a crește acoperirea
- Vă permite să găsiți zonele unui program care nu este exercitat de un set de cazuri de testare
Dezavantaje ale utilizării acoperirii codului
- Chiar și atunci când orice caracteristică specifică nu este implementată în proiectare, acoperirea codului raportează în continuare acoperirea 100%.
- Nu este posibil să se determine dacă am testat toate valorile posibile ale unei caracteristici cu ajutorul acoperirii codului
- Acoperirea codului nu înseamnă, de asemenea, cât și cât de bine v-ați acoperit logica
- În cazul în care funcția specificată nu a fost implementată sau nu este inclusă în specificație, atunci tehnicile bazate pe structuri nu pot găsi această problemă.
rezumat
- Acoperirea codului este o măsură care descrie gradul de testare a codului sursă al programului
- Vă ajută să măsurați eficiența implementării testului
- Cinci metode de acoperire a codului sunt 1.) Acoperirea declarației 2.) Acoperirea stării 3) Acoperirea sucursalei 4) Acoperirea alternativă 5) Acoperirea FSM
- Acoperirea instrucțiunilor implică executarea tuturor instrucțiunilor executabile din codul sursă cel puțin o dată
- Acoperirea deciziei raportează rezultatele adevărate sau false ale fiecărei expresii booleene
- În acoperirea sucursalei, fiecare rezultat dintr-un modul de cod este testat
- Condițional va dezvălui modul în care sunt evaluate variabilele sau subexpresiile din declarația condițională
- Acoperirea mașinii cu stare finită este cu siguranță cel mai complex tip de metodă de acoperire a codului
- Pentru a selecta o metodă de acoperire, testerul trebuie să verifice costul sancțiunii potențiale, pierderea reputației, pierderea vânzării etc.
- Acoperirea codului vă arată cât de bine a fost exercitat codul sursă de banca dvs. de testare, în timp ce acoperirea funcțională măsoară cât de bine a fost acoperită funcționalitatea designului
- Cobertura, JTest, Clover, Emma, Kalistick sunt câteva instrumente importante de acoperire a codului
- Codul de acoperire vă permite să creați cazuri de testare suplimentare pentru a crește acoperirea
- Acoperirea codului nu vă ajută să determinați dacă am testat toate valorile posibile ale unei caracteristici