1 / 25

Testarea sistemelor de calcul ş i a re ț elelor

Testarea sistemelor de calcul ş i a re ț elelor. Testarea White-Box. Capitolul 6. Prezentare general ă. Implic ă accesul la codul surs ă al programului testat. Se mai numesc şi tehnici de testare bazat ă pe cod , structural ă , glass box , clear box

penny
Download Presentation

Testarea sistemelor de calcul ş i a re ț elelor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Testarea sistemelor de calcul şi a rețelelor TSCR -curs- Ionescu Augustin-Iulian

  2. Testarea White-Box Capitolul 6 TSCR -curs- Ionescu Augustin-Iulian

  3. Prezentare generală • Implică accesul la codul sursă al programului testat. • Se mai numesc şi tehnici de testare bazată pe cod, structurală, glass box, clear box • Idea fundamentală este aceea de a executa fiecare porțiune de cod cel puțin odată. • Corectitudinea rezultatului poate fi stabilită numai pe baza analizei specificațiilor. • Sunt utilizate ȋn special de dezvoltatorii de cod care-şi testează propriile programe. • Principalele tehnici white box sunt: • acoperirea instrucțiunilor; • acoperirea ramurilor; • testarea condițiilor • testarea condițiilor de ramificare; • testarea combinațiilor condițiilor de ramificare; • acoperirea căilor. TSCR -curs- Ionescu Augustin-Iulian

  4. Acoperirea instrucțiunilor • Se mai numeşte şi acoperire C0. • Urmăreşte executarea tuturor instrucțiunilor din unitatea testată ȋn scopul depistării unor zone de cod mort, care nu pot fi accesate; • Primul pas ȋl reprezintă generarea grafului controlului fluxului; • Fiecare grup de instrucțiuni executate secvențial fără ramificări formează un nod al grafului deoarece, neexistand ramificări, execuția primei instrucțiuni din grup garantează execuția celorlalte. • Controlul fluxului este reprezentat prin arce orientate. TSCR -curs- Ionescu Augustin-Iulian

  5. Acoperirea instrucțiunilor (exemplu) Pentru a trece prin toate nodurile, laturile grafului vor trebui traversate ȋn următoarea ordine: a, b, f, g, h, d, e Criteriul de completitudine a testului: Acoperirea_instrucțiunilor = (număr_instrucțiuni_executate/număr_total instrucțiuni)*100% Este cel mai slab dintre testele white-box deoarece poate lăsa nedetectate multe defecte. TSCR -curs- Ionescu Augustin-Iulian

  6. Acoperirea ramurilor • ceea ce interesează este parcurgerea tuturor ramurilor din graful controlului fluxului; • atenția este concentrată pe parcurgerea tuturor deciziilor atât pentru valoarea TRUE cât şi pentru valoarea FALSE; • ȋn cazul unei instrucțiuni IF trebuie testate atât ramura THEN cât şi ELSE; • ȋn cazul instrucțiunilor CASE se testează toate variantele posibile; • ȋn cazul ciclărilor, se testează obligatoriu trecerea prin corpul ciclului dar şi ȋntoarcerea la prima instrucțiune a ciclului. • Exemplu: • se observă că ȋn testul din exemplul precedent ramurile c, i, k nu au fost testate; • pentru a acoperi şi aceste ramuri, este necesar să mai fie executate următoarele teste: • a, b, c, d, e; • a, b, f, g, i, h, d, e; • a, k, e. TSCR -curs- Ionescu Augustin-Iulian

  7. Acoperirea ramurilor • Apare o anumită redundanță datorită necesității de a parcurge anumite ramuri ȋn cadrul mai multor teste, dar acest lucru nu poate fi ȋn general evitat; • Acoperirea_ramurilor = (Numărul_ramurilor_testate/Numărul_total_al_ramurilor)*100% • Este un criteriu mai bun decât acoperirea instrucțiunilor deoarece garantează şi acoperirea acestora, dar prețul de cost este mai mare. • Permite testarea tuturor condițiilor simple dar nu implică neapărat testarea condițiilor complexe. TSCR -curs- Ionescu Augustin-Iulian

  8. Testarea condițiilor pe ramură • Permite testarea unor condiții de ramificare complexe prin testarea fiecărei condiții atomice. • Princondiție complexăȋnțelegem o condiție formată din mai multe expresii relaționale (condiții atomice) reunite prin operatori logici: 5<=nota_lab AND 5<=nota_examen 5<=nota AND nota<=10 TSCR -curs- Ionescu Augustin-Iulian

  9. Testarea condițiilor pe ramură if (5<=nota_lab && 5<=nota_examen) Conditia 1: 5<=nota_lab Conditia 2: 5<=nota_examen Cazuri de test pentru acoperirea ramurilor Cazuri de test pentru testarea condițiilor pe ramură TSCR -curs- Ionescu Augustin-Iulian

  10. Acoperirea căilor • Parcurgerea tuturor ramurilor grafului de control sau testarea condițiilor nu sunt suficiente atunci când obiectul testat conține repetiții sau cicluri. • Ocaleeste o secvență continuă de ramuri din graful de control, de obicei de la intrarea ȋn program până la ieşirea din program. • Acoperirea căilor implică diverse posibilități de a parcurge codul testat. • Acoperirea căilor consideră dependența ȋntre ramuri, când parcurgerea unei ramuri conduce ȋnapoi la ȋnceputul altei ramuri, ȋn timp ce ȋn acoperirea ramurilor fiecare ramură este privită independent. • O ramură poate face parte din mai multe căi. • Un atribut important care se poate evalua din graful de control este complexitatea ciclomatică, calculată cu formula lui McCabe: V(G)=E-N+2 unde: E – numărul ramurilor din graf; N – numărul nodurilor grafului. TSCR -curs- Ionescu Augustin-Iulian

  11. Acoperirea căilor • Complexitatea ciclomatică este o masură a aşa numitelor căi independente prin graf. • Această valoare ne indică de obicei limita superioară a numărului de cazuri de test necesare acoperirii ramurilor/deciziilor. • Căile independente se determină printr-un proces iterativ, pornind de la o cale cât mai simplă şi introducând apoi noi ramuri până când toate ramurile au fost folosite. TSCR -curs- Ionescu Augustin-Iulian

  12. Acoperirea căilor (exemplu) double calculate_price( double baseprice, double specialprice, double extraprice, int extras, double discount) { double addon_discount; double result; if(extras>=3) addon_discount=10; else if(extras>=5) addon_discount=15; else addon_discount=0; if(discount>addon_discount) addon_discount=discount; result=baseprice/100.0*(100-discount) + specialprice + extraprice/100.0*(100-addon_discount); return (result); } TSCR -curs- Ionescu Augustin-Iulian

  13. Acoperirea căilor (exemplu) V(G)=14-12+2=4 a-b-c-j-k-l-n a-b-c-j-m-n a-d-e-f-i-j-m-n a-d-g-h-i-j-m-n TSCR -curs- Ionescu Augustin-Iulian

  14. Acoperirea căilor (exemplu) //testcase 01 price=calculate_price(10000.00, 2000.00, 1000.00,3,0); test_ok=test_ok&&(abs(price-12900.00)<0.01); a, b, c, j, m, n //testcase 02 price=calculate_price(25500.00, 3450.00, 6000.00,6,0); test_ok=test_ok&&(abs(price-12900.00)<0.01); a, b, c, j, m, n acoperire_ramuri=6/14*100%=43% //testcase 03 price=calculate_price(10000.00, 2000.00, 1000.00,0,10); test_ok=test_ok&&(abs(price-12900.00)<0.01); a, d, g, h, i, j, k, l, n //testcase 04 price=calculate_price(25500.00, 3450.00, 6000.00,6,0); test_ok=test_ok&&(abs(price-12900.00)<0.01); a, b, c, j, k, l, n acoperire_ramuri=12/14*100%=86% Observație! Ramurile e şi f nu pot fi testate deoarece nu este posibil ca simultan extras<3 şi extras>=5. TSCR -curs- Ionescu Augustin-Iulian

  15. Utilizarea fluxului de date • Spunem căo variabilă este definităȋntr-o instrucțiune dacă i se asignează o valoare sau i se modifică valoarea. • Exemplu: nota=(4*nota_lab+6*nota_examen)/10; • Această instrucțiune se noteazădef pentru variabila nota. • Spunem căo variabilă este utilizatăȋntr-o instrucțiune dacă valoarea ei este folosită pentru calculul valorii unei variabile sau pentru luarea unei decizii. • Exemple: nota=(4*nota_lab+6*nota_examen)/10; c-use pentru nota_lab • if (nota_lab<5) p-use pentru nota_lab • Calea dintre definirea unei variabile şi utilizarea ei se numeşte cale def-use. TSCR -curs- Ionescu Augustin-Iulian

  16. Utilizarea fluxului de date • Pot fi identificate mai multe variante de testare a segmentelor de cale din fluxul de date: • toate def • toate p-use • toate c-use/unele p-use • toate p-use/unele c-use • toate use • toate căile def-use TSCR -curs- Ionescu Augustin-Iulian

  17. Utilizarea fluxului de date 1USE dbSecretariat04_05 2 GO 3 DECLARE @Nume varchar(35),@Initiala varchar(8),@Prenume varchar(35),@Sex char(1),@DataNastere datetime 4 DECLARE cursDatePersonale CURSOR FOR SELECT NumeStudent,InitialaStudent,PrenumeStudent,Sex,DataNastere FROM tblStudent 5--utilizarea cursorului 6 OPEN cursDatePersonale 7 FETCH NEXT FROM cursDatePersonale INTO @Nume ,@Initiala ,@Prenume ,@Sex ,@DataNastere 8WHILE @@FETCH_STATUS=0 BEGIN 9PRINT (' ADEVERINTA') 10PRINT (' ') 11PRINT (' ') 12PRINT ('Prin prezenta se adevereste ca'+' '+@Nume+' '+@Initiala+‘'+@Prenume+' este student') 13PRINT ('al facultatii de Automatizari,Calculatoare si Electronica') 14PRINT (' ') 15PRINT (' ') 16PRINT (' '+CONVERT(char(10), GETDATE(),103)+' 17 DECAN') 18 PRINT (' Prof. dr. ing. Bobasu Eugen’) 19 PRINT (' ') 20PRINT (' ') 21FETCH NEXT FROM cursDatePersonale INTO @Nume, @Initiala, @Prenume, @Sex, @DataNastere 22 END 23CLOSE cursDatePersonale 24 DEALLOCATE cursDatePersonale 25 GO TSCR -curs- Ionescu Augustin-Iulian

  18. Utilizarea fluxului de date 1 2 3 4 5 6 7@Nume ,@Initiala ,@Prenume ,@Sex ,@DataNastere def @@FETCH_STATUSdef 8@@FETCH_STATUSp-use 9 10 11 12@Nume,@Initiala,@Prenumec-use 13 14 15 16GETDATE()def,c-use 17 18 19 20 21 @Nume, @Initiala, @Prenume, @Sex, @DataNastere def @@FETCH_STATUSdef 22 23 24 25 TSCR -curs- Ionescu Augustin-Iulian

  19. Utilizarea fluxului de date Tabel pentru @nume Tabel pentru @@FETCH_STATUS Tabel pentru @prenume Tabel pentru @initiala TSCR -curs- Ionescu Augustin-Iulian

  20. Testarea ciclurilor • Dacă ciclul are de la 0 la n iterații, cazurile de test dezvoltate vor fi: • 0 iterații; • o iterație; • două iterații; • k iterații k<n; • n iterații • n+1 iterații (dacă este posibil). • Dacă ciclul are de la n1 la n2 iterații, se va testa şi pentru k=n1-1. • Dacă este posibil, se va testa şi pentru n2+1. • Se vor avea ȋn vedere şi valori negative ale variabilei de ciclare. TSCR -curs- Ionescu Augustin-Iulian

  21. Testarea mutațiilor • Se consideră ca bază pentru generarea datelor de test şi pentru evaluarea eficienței testării, defectele care ar putea să aparăȋn componenta testată. • Sunt luate ȋn considerare două ipoteze de lucru: • Ipoteza programatorului competent. Programatorii sunt profesionişti, cunosc limbajele utilizate şi scriu programe aproape perfecte. Apar doar puține erori simple. • Efectul de cuplare. Se consideră că testele suficient de puternice pentru a pune ȋn evidență toate programele care diferă de programul testat doar prin erori simple, vor face fațăşi detectării unor erori complexe. • Testarea mutațiilor are ca punct de plecare: • codul original al compnentei testate; • cazurile de test asociate; • rezultatele testului. TSCR -curs- Ionescu Augustin-Iulian

  22. Testarea mutațiilor • Vom numi mutant orice program obținut din cel original prin modificarea unui operand, a unei constante sau a numelui unei variabile. • Testul original se aplică mutantului. • Dacă se obține un rezultat diferit de cel obținut cu programul original, defectul a fost detectat şi spunem cămutantul a fost ucis. • Dacă mutantul produce aceleaşi rezultate ca şi programul original, testul trebuie completat cu alte date de test pentru a ȋncerca să omorâm mutantul. • Există situații ȋn care nu există nici un caz de test prin care să putem distinge programul original de mutant. În acest caz spunem că cele două programe sunt echivalente. • Fie P un program şi Pi un mutant neechivalent al lui P. Se spune că un set de teste T este corespunzător pentru mutații dacă pentru orice Pi există un caz de test tT astfel ȋncât Pi(t)P(t). TSCR -curs- Ionescu Augustin-Iulian

  23. Testarea mutațiilor • Măsura ȋn care un set de teste T este adecvat mutațiilor pentru programul P se calculează cu relația: • MS(P,T)=număr_mutanți_ucişi/(număr _total_mutanți - număr_mutanți _echivalenți) • Varianta prezentată mai sus reprezintătestarea tare a mutațiilor. • Dacă se iau ȋn considerare numai anumite elemente afectate de mutații, se spune că avem o testare slabă a mutațiilor. TSCR -curs- Ionescu Augustin-Iulian

  24. Ordonarea parțiala a criteriilor de testare TSCR -curs- Ionescu Augustin-Iulian

  25. ? TSCR -curs- Ionescu Augustin-Iulian

More Related