Ce este Loop Testing? Metodologie, Exemplu
⚡ Rezumat inteligent
Testarea buclelor validează construcțiile buclei dintr-un program, verificând ce se întâmplă când o buclă este omisă, introdusă o singură dată, executată la limita sa și împinsă cu o trecere dincolo de numărul maxim permis.
Ce este Loop Testing?
Testarea buclei este un tip de testare software care se concentrează în întregime pe validitatea construcțiilor buclei dintr-un program. Este o parte a testării structurii de control, alături de testarea traseului, testarea validării datelor și testarea condițiilor.
Testarea buclei este a testarea cutiei albe tehnică, deci este aplicată de cineva care poate citi codul sursă și poate vedea condiția buclei, contorul și calea de ieșire. Testerul nu ghicește comportamentul din interfața cu utilizatorul; bucla în sine este obiectul testat.
Diagrama de mai jos arată unde se situează testarea în buclă în cadrul familiei de testare a structurilor de control.
Tipuri de buclă Testate
Înainte de a alege o strategie, identificați care dintre cele patru clase de bucle pe care le analizați. Exemple de tipuri de bucle testate sunt:
- Bucla simplă — o singură buclă cu o intrare și o ieșire, cum ar fi o buclă simplă pentru, în timp ce or face în timp ce construi.
- Buclă imbricată — o buclă plasată în interiorul alteia, astfel încât bucla interioară se completează la fiecare trecere a buclei exterioare.
- Bucla concatenată — două sau mai multe bucle care se desfășoară una după alta în secvență.
- Bucla nestructurată — o combinație neplanificată de bucle imbricate și concatenate, de obicei rezultatul unor salturi în sau din corpul unei bucle.
Clasa decide efortul. O buclă simplă necesită câteva iterații; o buclă nestructurată necesită de obicei o reproiectare a codului înainte de a putea fi testată.
De ce se face testarea buclei?
Testarea buclei se face din următoarele motive
- Testarea poate rezolva problemele de repetare a buclei
- Testarea buclelor poate dezvălui blocaje de performanță și capacitate
- Prin testarea buclelor, se pot determina variabilele neinițializate din buclă
- Ajută la identificarea problemelor de inițializare a buclei.
Există și un motiv comercial. O buclă care rulează cu o iterație în plus corupe un total; o buclă care nu se termină niciodată blochează un proces. Ambele defecte sunt ieftine de găsit cât timp codul se află încă pe mașina unui dezvoltator și costisitoare de găsit în producție.
Cum se face testarea buclei: Metodologie completă
În timpul testării unei bucle, aceasta trebuie verificată la trei niveluri diferite:
- Când se intră în buclă
- În timpul executării sale, și
- Când bucla este lăsată
Strategia de testare pentru toate aceste bucle este următoarea.
Bucla simplă
O buclă simplă are o singură intrare și o singură ieșire, așa cum se arată mai jos.
O buclă simplă este testată în felul următor:
- Sari peste întreaga buclă
- Faceți o trecere prin buclă
- Faceți 2 trecere prin buclă
- Faceți suporterii vedetele spectacolului, evidențiați contribuțiile noilor veniți și distrați-vă! Nu vă fie teamă să colaborați și să acordați credit altor grupuri care se ocupă de probleme similare. Prezentați-vă la cauzele lor, karma este reală! a trece prin bucla unde a < b, adică un număr tipic de iterații la mijlocul intervalului
- Faceți suporterii vedetele spectacolului, evidențiați contribuțiile noilor veniți și distrați-vă! Nu vă fie teamă să colaborați și să acordați credit altor grupuri care se ocupă de probleme similare. Prezentați-vă la cauzele lor, karma este reală! b, b-1 și b+1 trece prin bucla unde b este numărul maxim de treceri permise prin buclă.
Ultimele două cazuri au cea mai mare valoare. Sari pesteping Bucla demonstrează că condiția de ieșire este evaluată înainte ca corpul să ruleze și b+1 caz dovedește că bucla refuză să lucreze dincolo de limita declarată în loc să depășească un array.
Buclă imbricată
O buclă imbricată multiplică numărul de combinații de iterații posibile, astfel încât este testată din interior spre exterior, mai degrabă decât dintr-o dată.
Pentru o buclă imbricată, trebuie să urmați următorii pași.
- Setați toate celelalte bucle la valoarea lor minimă și începeți cu bucla cea mai interioară
- Pentru cea mai interioară buclă, efectuați un test de buclă simplu și mențineți buclele exterioare la valoarea minimă a parametrului de iterație
- Efectuați testul pentru următoarea buclă și lucrați spre exterior
- Continuați până când bucla cea mai exterioară a fost testată.
Bucle concatenate
Buclele concatenate se află una după alta în aceeași cale de execuție, așa cum arată diagrama.
În buclele concatenate, dacă două bucle sunt independente una de cealaltă, atunci acestea sunt testate folosind abordarea buclei simple, altfel sunt testate ca bucle imbricate.
Totuși, dacă contorul unei bucle este utilizat ca valoare inițială pentru cealaltă, cele două bucle nu sunt considerate independente.
Bucle nestructurate
Buclele nestructurate sunt cel mai dificil caz, deoarece controlul sare în și din corpul buclei în puncte arbitrare.
Pentru buclele nestructurate, designul trebuie restructurat pentru a reflecta utilizarea construcțiilor de programare structurată. Odată ce codul a fost redus la forme simple, imbricate sau concatenate, se aplică strategia de potrivire de mai sus.
Exemplu de testare în buclă cu cazuri de testare
Un exemplu concret face ca numărătoarea iterațiilor să fie concretă. Luați în considerare o rutină care înmulțește un rezultat cu fiecare număr întreg de la 1 la n, un calcul factorial. Contorul buclei începe de la 1, condiția de ieșire este contracara > n, iar bucla este declarată să accepte maximum 12 treceri înainte ca rezultatul să depășească tipul întreg declarat.
Tratând aceasta ca o buclă simplă, numărul de iterații recomandat mai sus se traduce în următoarele cazuri de testare.
| Caz de testare | Valoarea lui n | Pase executate | Ceea ce dovedește |
| TC01 | 0 | 0 (bucla omisă) | Condiția de ieșire este evaluată înainte ca corpul să ruleze, iar rezultatul rămâne la valoarea inițială 1. |
| TC02 | 1 | 1 | O singură trecere produce rezultatul corect, iar contorul se incrementează o dată. |
| TC03 | 2 | 2 | Acumulatorul transportă o valoare mai departe între două treceri consecutive. |
| TC04 | 5 | 5 | O numărătoare tipică la mijlocul intervalului returnează valoarea așteptată de 120, confirmând un comportament obișnuit. |
| TC05 | 11 | 11 | O trecere sub maxim se finalizează totuși normal (b-1). |
| TC06 | 12 | 12 | Maximul declarat este acceptat și bucla se termină (b). |
| TC07 | 13 | respins | O trecere dincolo de maxim este refuzată, în loc să depășească în tăcere limita maximă (b+ 1). |
Observați că TC01 și TC07 sunt cele două cazuri pe care dezvoltatorii le omit cel mai des și sunt cele două care expun defectele de inițializare omisă și de depășire a limitei. O valoare negativă a n aparține aceluiași set dacă specificația permite furnizarea sa, ceea ce leagă testarea în buclă de testare negativă.
Defecte comune descoperite prin testarea în buclă
Testarea în buclă găsește în mod constant aceeași familie mică de erori, ceea ce face ca numărătoarea fixă a iterațiilor să merite executată de fiecare dată.
- Limite în afara limitelor de unu — o condiție scrisă ca < Unde <= a fost intenționat, așa că bucla rulează cu o trecere prea puține sau cu una prea multe.
- Contori sau acumulatori neinițializați — un total care conține o valoare rămasă de la un apel anterior.
- Bucle infinite — o condiție de ieșire pe care corpul buclei nu o poate satisface niciodată deoarece contorul este actualizat doar pe anumite ramuri.
- Presupuneri privind bucla omisă — cod după buclă care citește o variabilă pe care corpul buclei trebuia să o seteze, cod care eșuează când bucla rulează de zero ori.
- Defecțiuni de capacitate și performanță — o buclă care este corectă, dar care citește din nou baza de date la fiecare trecere, astfel încât costul crește odată cu numărul de iterații.
- Interferență în buclă imbricată — o buclă interioară care reutilizează contorul buclei externe și modifică în liniște numărul de iterații externe.
Deoarece fiecare defect se mapează la un număr specific de iterații, defectele identificate aici sunt ușor de reprodus și rapid de remediat în comparație cu defectele găsite la iterații mai mari. niveluri de testare.
Testarea buclelor vs. alte tehnici de testare a structurilor de control
Testarea în buclă este un membru al familiei structurilor de control și este ușor de confundat cu tehnicile învecinate. Tabelul de mai jos le separă.
| Metoda de măsurare | Ce vizează | Obiectiv tipic de acoperire |
| Testarea buclei | Construcții de buclă: intrare, număr de iterații și ieșire | Număr de iterații zero, unu, tipice și la limită pentru fiecare buclă |
| Testarea condițiilor | Expresii booleene în cadrul deciziilor | Fiecare condiție a fost evaluată atât adevărată, cât și falsă |
| Testarea fluxului de date | Definiția și utilizarea fiecărei variabile | Fiecare pereche definiție-de-utilizare exersată cel puțin o dată |
| Testarea căii de bază | Căi independente prin graficul fluxului de control | Un număr de căi egal cu complexitatea ciclomatică |
În practică, aceste tehnici sunt complementare, mai degrabă decât concurente. Complexitatea ciclomatică vă spune câte căi independente există, testarea căii de bază le acoperă, iar testarea în buclă adaugă apoi numărul de iterații pe care acoperirea căii singură nu le-ar forța. Toate sunt testare dinamică activități, deoarece codul trebuie executat pentru ca rezultatele să fie observate.
Limitare în testarea buclei
Tehnica are limite reale, iar cunoașterea lor previne suprainvestițiile.
- Bug-urile de buclă apar mai ales în software-ul de nivel scăzut
- Bug-urile identificate în timpul testării buclei nu sunt foarte subtile
- Multe dintre erori ar putea fi detectate de sistemul de operare, deoarece acestea cauzează încălcări ale limitelor de memorie, erori detectabile ale pointerilor și erori similare.
- Identificarea clasei fiecărei bucle și testarea acesteia în consecință costă timp, ceea ce este greu de justificat pe căi de cod care prezintă riscuri reduse.





