Code Instrument de acoperire: Testarea declarațiilor, ramurilor și deciziilor
⚡ Rezumat inteligent
Code acoperirea este o măsurătoare de tip „white-box” care raportează gradul în care codul sursă a fost exersat de o suită de teste, adicăping Echipele localizează instrucțiuni netestate, ramificații, condiții și căi pe care le-ar putea ocupa defecte ascunse.

Ce Este Code Acoperire?
Code acoperire este o măsură care descrie gradul în care a fost testat codul sursă al unui program. Este o formă de testarea cutiei albe care identifică zonele unui program care nu sunt exersate de un set de cazuri de testare. De asemenea, ajută la crearea de cazuri de testare suplimentare pentru a crește acoperirea și a determina o măsură cantitativă a acoperirii codului.
În majoritatea cazurilor, un sistem de acoperire a codului colectează informații despre programul care rulează. Apoi combină aceste informații cu informațiile despre codul sursă pentru a genera un raport despre acoperirea codului suitei de teste.
De ce folosiți Code Testarea acoperirii?
Iată câteva motive principale pentru a utiliza acoperirea codului:
- Te ajută să măsori eficiența implementării testelor.
- Oferă o măsurare cantitativă a testării.
- Acesta definește gradul în care codul sursă a fost testat.
Code Metode de acoperire
Următoarele sunt principalele metode de acoperire a codului:
- Acoperirea declarației
- Acoperirea deciziei
- Acoperire sucursală
- Toggle Acoperire
- Acoperire FSM
Acoperirea declarației
Acoperirea declarației este o tehnică de testare de tip „cutie albă” în care toate instrucțiunile executabile din codul sursă sunt executate cel puțin o dată. Este utilizată pentru a calcula numărul de instrucțiuni din codul sursă care au fost executate. Scopul principal al acoperirii instrucțiunilor este de a acoperi toate căile, liniile și instrucțiunile posibile din codul sursă.
Acoperirea instrucțiunilor este utilizată pentru a deriva scenarii bazate pe structura codului testat.
În testarea de tip „white box”, testerul se concentrează asupra modului în care funcționează software-ul. Cu alte cuvinte, testerul se concentrează asupra funcționării interne a codului sursă în ceea ce privește graficele fluxului de control sau diagramele de flux.
În general, în orice software, dacă te uiți la codul sursă, vei găsi o mare varietate de elemente precum operatori, funcții, elemente de tip „loo”ping, rutine de tratare a excepțiilor și așa mai departe. Pe baza datelor de intrare în program, este posibil ca unele dintre instrucțiunile de cod să nu fie executate. Scopul acoperirii instrucțiunilor este de a acoperi toate căile, liniile și instrucțiunile posibile din cod.
Să înțelegem acest lucru cu un exemplu despre cum se calculează acoperirea extraselor. Aici luăm două scenarii diferite pentru a verifica procentul de acoperire a extraselor pentru fiecare scenariu.
Sursa Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Scenariul 1: Dacă A = 3, B = 9
Instrucțiunile marcate cu galben sunt cele executate conform scenariului. Numărul de instrucțiuni executate = 5, Numărul total de instrucțiuni = 7, deci Acoperirea instrucțiunilor = 5/7 = 71%.
Scenariul 2: Dacă A = -3, B = -9
Instrucțiunile marcate cu galben sunt cele executate conform scenariului. Numărul de instrucțiuni executate = 6, Numărul total de instrucțiuni = 7, deci Acoperirea instrucțiunilor = 6/7 = 85%.
Dar, per total, dacă vedeți, toate afirmațiile sunt acoperite de ambele scenarii. Deci putem concluziona că acoperirea generală a afirmațiilor este de 100%.
Ce este acoperit de Acoperirea declarațiilor?
- Declarații neutilizate
- Mort Code
- Ramuri nefolosite
- Declarații lipsă
Testarea acoperirii deciziilor
Acoperirea deciziei este o tehnică de testare de tip „cutie albă” care raportează rezultatele adevărate sau false ale fiecărei expresii booleene din codul 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 acest tip de acoperire, expresiile pot deveni complexe, ceea ce face dificilă atingerea unei acoperiri de 100%. Acesta este motivul pentru care se utilizează diverse metode pentru a raporta această metrică. Aceste metode prioritizează cele mai critice combinații. Deși este similară cu acoperirea ramificațiilor, oferă o sensibilitate mai mare la fluxul de control.
Exemplu de acoperire a deciziilor
Luați în considerare următorul cod:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Scenariul 1: Valoarea lui a este 2. Rezultatul „Nu” al deciziei. Dacă (a>5) este bifat, atunci Acoperirea Deciziei = 50%.
Scenariul 2: Valoarea lui a este 6. Rezultatul „Da” al deciziei. Dacă (a>5) este bifat, atunci Acoperirea Deciziei = 50%.
| Caz de testare | Valoarea lui A | producție | Acoperirea deciziei |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Testarea acoperirii filialelor
Acoperire sucursală este o metodă de testare de tip „white box” în care fiecare rezultat dintr-un modul de cod (instrucțiune sau buclă) este testat. Scopul acoperirii ramurilor este de a asigura că fiecare condiție de decizie din fiecare ramură este executată cel puțin o dată. Aceasta ajută la măsurarea fracțiunilor de segmente de cod independente și la identificarea 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 de calcul a acoperirii sucursalei:
Exemplu de acoperire a filialei
Pentru a afla acoperirea sucursalei, luați în considerare același exemplu folosit anterior. Acoperirea sucursalei va lua în considerare și ramura necondiționată.
| Caz de testare | Valoarea lui A | producție | Acoperirea deciziei | Acoperire sucursală |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Avantajele acoperirii sucursalei:
- Vă permite să validați toate ramurile din cod.
- Te ajută să te asiguri că nicio ramificare nu duce la vreo anomalie în funcționarea programului.
- Elimină problemele care apar din cauza testării acoperirii declarațiilor.
- Vă permite să găsiți 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.
Testarea acoperirii stării
Acoperire condițieAcoperirea condițiilor, sau acoperirea expresiilor, este o metodă de testare utilizată pentru a testa și evalua variabilele sau subexpresiile dintr-o instrucțiune condițională. Scopul acoperirii condițiilor este de a verifica rezultatele individuale pentru fiecare condiție logică. Acoperirea condițiilor oferă o sensibilitate mai bună la fluxul de control decât acoperirea deciziilor. În această acoperire, sunt luate în considerare doar expresiile cu operanzi logici.
De exemplu, dacă o expresie are operații booleene precum ȘI, SAU sau XOR, aceasta indică posibilitățile totale. Acoperirea condițiilor nu garantează acoperirea completă a deciziilor.
Formula pentru calcularea Acoperirii Condiției:
Pentru o expresie cu doi operanzi, există patru combinații posibile: TT, FF, TF și FT. Luați în considerare intrarea X=3, Y=4 (x b) FALS, ceea ce dă o acoperire a condițiilor de 1/4 = 25%.
Acoperire cu mașini cu stări finite
Acoperirea mașinii de stări finite este cu siguranță cel mai complex tip de metodă de acoperire a codului. Acest lucru se datorează faptului că afectează comportamentul designului. În această metodă de acoperire, trebuie să analizați de câte ori sunt vizitate sau tranzitate anumite stări. De asemenea, verifică câte secvențe sunt incluse într-o mașină de stări finite.
Care tip de Code Acoperire din care să alegeți
Acesta este cu siguranță cel mai dificil răspuns de dat. Pentru a selecta o metodă de acoperire, testerul trebuie să verifice dacă:
- codul testat are unul sau mai multe defecte nedescoperite,
- costul potențialei penalități,
- costul pierderii reputației,
- costul vânzărilor pierdute și așa mai departe.
Cu cât este mai mare probabilitatea ca defectele să provoace eșecuri costisitoare de producție, cu atât mai sever este nivelul de acoperire pe care trebuie să-l alegeți.
Code Acoperire vs. Acoperire funcțională
| Code Acoperire | Acoperire funcțională |
|---|---|
| Îți spune cât de bine a fost exersat codul sursă de către bancul de testare. | Măsoară cât de bine a fost acoperită funcționalitatea designului de către bancul de testare. |
| Nu folosește niciodată o specificație de proiectare. | Utilizează o specificație de proiectare. |
| Realizat de dezvoltatori. | Realizat de testeri. |
Code Instrumente de acoperire
Iată o listă de instrumente importante pentru acoperirea codului:
| Numele instrumentului | Descriere |
|---|---|
| Cobertura | Un instrument de acoperire a codului open source. Măsoară acoperirea testelor prin instrumentarea unei baze de cod și analizarea liniilor de cod executate și a liniilor de cod care nu sunt executate atunci când rulează suita de teste. |
| Trifoi | Trifoi (OpenClover) reduce și timpul de testare prin rularea doar a testelor care acoperă codul aplicației modificat de la versiunea anterioară. |
| DevPartner | DevPartner permite dezvoltatorilor să analizeze Java cod pentru calitatea și complexitatea codului. |
| Emma | EMMA acceptă acoperire de clasă, metodă, linie și bloc de bază, agregată la nivel de fișier sursă, clasă și metodă. |
| Kalistick | Kalistick este o aplicație terță parte care analizează codul din diferite perspective. |
| CoView și CoAnt | Un instrument de acoperire a codului pentru metrici, crearea de obiecte simulate, testabilitatea codului, acoperirea căilor și ramurilor și multe altele. |
| Bullseye pentru C++ | BullseyeCoverage este un instrument de acoperire a codului pentru C++ și C. |
| Sonar | Sonar este un instrument de acoperire a codului deschis care vă ajută să gestionați calitatea codului. |
Avantajele și dezavantajele utilizării Code Acoperire
| Avantaje | Dezavantaje |
|---|---|
| Util pentru evaluarea unei măsuri cantitative a acoperirii codului. | Chiar și atunci când o anumită caracteristică nu este implementată în design, acoperirea codului raportează în continuare o acoperire de 100%. |
| Vă permite să creați cazuri de testare suplimentare pentru a crește acoperirea. | Nu este posibil să se determine dacă toate valorile posibile ale unei caracteristici au fost testate folosind acoperirea codului. |
| Vă permite să găsiți zonele unui program care nu au fost exersate de un set de cazuri de testare. | Code Acoperirea nu spune cât de mult și cât de bine ți-ai acoperit logica. |






