Acoperirea codului

Acoperirea codului  este o măsură utilizată în testarea software-ului . Acesta arată procentul din codul sursă al programului care a fost executat în timpul procesului de testare.

Acoperirea codului a fost una dintre primele tehnici inventate pentru testarea sistematică a software-ului (în special testarea cutiei albe ). Prima mențiune despre acoperirea codului în publicații a apărut în 1963 [1] .

Criterii

Există mai multe moduri diferite de a măsura acoperirea, principalele sunt:

Pentru programele cu cerințe de securitate specifice, este adesea necesar să se demonstreze că testele ating o acoperire de 100% pentru unul dintre criterii. Unele dintre criteriile de acoperire date sunt legate; de exemplu, acoperirea căii include atât acoperirea condiției, cât și acoperirea declarațiilor. Acoperirea declarației nu include acoperirea afecțiunilor, așa cum arată acest fragment de cod C :

printf ( "aceasta este" ); dacă ( bara < 1 ) { printf ( "nu" ); } printf ( "un întreg pozitiv" );

Dacă aici bar = −1, atunci acoperirea operatorului va fi completă, dar acoperirea condiției nu va fi, deoarece cazul de nerespectare a condiției din declarația if nu este acoperit (și ieșirea va fi distorsionată pentru numere pozitive). Acoperirea completă a căii nu este de obicei posibilă. Un fragment de cod care are n condiții conține căi; construcția buclă generează un număr infinit de căi. Este posibil ca unele căi din program să nu fie atinse din cauza faptului că nu existau căi în datele de testare care ar putea duce la executarea acestor căi. Nu există un algoritm universal care să rezolve problema căilor inaccesibile (acest algoritm ar putea fi folosit pentru a rezolva problema de oprire ).

În practică, pentru a realiza o acoperire a căilor, se utilizează următoarea abordare: se disting clasele de căi (de exemplu, căile care diferă doar prin numărul de iterații din același ciclu pot fi atribuite unei clase), se realizează o acoperire de 100% dacă toate clasele de căi sunt acoperite (o clasă este considerată acoperită dacă cel puțin o cale din ea este parcursă).

Aplicație practică

De obicei, codul sursă este furnizat cu teste care sunt executate în mod regulat. Raportul rezultat este analizat pentru a identifica zonele neexecutate ale codului, suita de teste este actualizată și testele sunt scrise pentru zonele neacoperite. Scopul este de a avea o suită de teste de regresie care să verifice temeinic tot codul sursă.

Acoperirea codului este de obicei exprimată ca procent. De exemplu, „am testat 67% din cod”. Sensul acestei fraze depinde de criteriul folosit. De exemplu, o acoperire a căii de 67% este mai bună decât o acoperire a declarațiilor de 67%. Problema relației dintre valoarea acoperirii codului și calitatea setului de testare nu a fost încă pe deplin rezolvată.

Vezi și

Note

  1. Joan C. Miller, Clifford J. Maloney. Analiza sistematică a erorilor programelor digitale de calculator  (engleză)  // Comunicări ale ACM  : jurnal. - New York, NY, SUA: Association for Computing Machinery , 1963. - Februarie ( vol. 6 , nr. 2 ). - P. 58-63 . — ISSN 0001-0782 . - doi : 10.1145/366246.366248 .

Link -uri