Testarea sistemelor de calcul ş i a re ț elelor

  • Upload
    penny

  • View
    31

  • Download
    2

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

  • 2010*TSCR -curs- Ionescu Augustin-Iulian

    TSCR -curs- Ionescu Augustin-Iulian

  • 20106-*TSCR -curs- Ionescu Augustin-Iulian

    TSCR -curs- Ionescu Augustin-Iulian

  • Prezentare general20106-*TSCR -curs- Ionescu Augustin-IulianImplic accesul la codul surs al programului testat.Se mai numesc i tehnici de testare bazat pe cod, structural, glass box, clear boxIdea fundamental este aceea de a executa fiecare poriune de cod cel puin odat. Corectitudinea rezultatului poate fi stabilit numai pe baza analizei specificaiilor.Sunt utilizate n special de dezvoltatorii de cod care-i testeaz propriile programe.Principalele tehnici white box sunt:acoperirea instruciunilor;acoperirea ramurilor;testarea condiiilortestarea condiiilor de ramificare;testarea combinaiilor condiiilor de ramificare;acoperirea cilor.

    TSCR -curs- Ionescu Augustin-Iulian

  • Acoperirea instruciunilor20106-*TSCR -curs- Ionescu Augustin-IulianSe mai numete i acoperire C0.Urmrete executarea tuturor instruciunilor din unitatea testat n scopul depistrii unor zone de cod mort, care nu pot fi accesate;Primul pas l reprezint generarea grafului controlului fluxului;Fiecare grup de instruciuni executate secvenial fr ramificri formeaz un nod al grafului deoarece, neexistand ramificri, execuia primei instruciuni din grup garanteaz execuia celorlalte.Controlul fluxului este reprezentat prin arce orientate.

    TSCR -curs- Ionescu Augustin-Iulian

  • Acoperirea instruciunilor (exemplu)20106-*TSCR -curs- Ionescu Augustin-IulianPentru a trece prin toate nodurile, laturile grafului vor trebui traversate n urmtoarea ordine:

    a, b, f, g, h, d, eCriteriul de completitudine a testului:

    Acoperirea_instruciunilor =(numr_instruciuni_executate/numr_total instruciuni)*100%Este cel mai slab dintre testele white-box deoarece poate lsa nedetectate multe defecte.

    TSCR -curs- Ionescu Augustin-Iulian

    a

    f

    c

    h

    g

    e

    k

    b

    d

    i

    IF

    ENDIF

    ENDIF

    IF

    DO

    WHILE

    a

    f

    c

    h

    g

    e

    k

    b

    d

    i

    IF

    ENDIF

    ENDIF

    IF

    DO

    WHILE

  • Acoperirea ramurilor20106-*TSCR -curs- Ionescu Augustin-Iulian ceea ce intereseaz este parcurgerea tuturor ramurilor din graful controlului fluxului; atenia este concentrat pe parcurgerea tuturor deciziilor att pentru valoarea TRUE ct i pentru valoarea FALSE; n cazul unei instruciuni IF trebuie testate att ramura THEN ct i ELSE; n cazul instruciunilor CASE se testeaz toate variantele posibile; n cazul ciclrilor, se testeaz obligatoriu trecerea prin corpul ciclului dar i ntoarcerea la prima instruciune 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 urmtoarele teste: a, b, c, d, e; a, b, f, g, i, h, d, e; a, k, e.

    TSCR -curs- Ionescu Augustin-Iulian

  • Acoperirea ramurilor20106-*TSCR -curs- Ionescu Augustin-IulianApare o anumit redundan datorit necesitii de a parcurge anumite ramuri n cadrul mai multor teste, dar acest lucru nu poate fi n general evitat;Acoperirea_ramurilor =(Numrul_ramurilor_testate/Numrul_total_al_ramurilor)*100%Este un criteriu mai bun dect acoperirea instruciunilor deoarece garanteaz i acoperirea acestora, dar preul de cost este mai mare.Permite testarea tuturor condiiilor simple dar nu implic neaprat testarea condiiilor complexe.

    TSCR -curs- Ionescu Augustin-Iulian

  • Testarea condiiilor pe ramur20106-*TSCR -curs- Ionescu Augustin-IulianPermite testarea unor condiii de ramificare complexe prin testarea fiecrei condiii atomice.Prin condiie complex nelegem o condiie format din mai multe expresii relaionale (condiii atomice) reunite prin operatori logici:5
  • Testarea condiiilor pe ramur20106-*TSCR -curs- Ionescu Augustin-Iulianif (5
  • Acoperirea cilor20106-*TSCR -curs- Ionescu Augustin-IulianParcurgerea tuturor ramurilor grafului de control sau testarea condiiilor nu sunt suficiente atunci cnd obiectul testat conine repetiii sau cicluri.O cale este o secven continu de ramuri din graful de control, de obicei de la intrarea n program pn la ieirea din program. Acoperirea cilor implic diverse posibiliti de a parcurge codul testat.Acoperirea cilor consider dependena ntre ramuri, cnd 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 ci.Un atribut important care se poate evalua din graful de control este complexitatea ciclomatic, calculat cu formula lui McCabe:

    V(G)=E-N+2unde:E numrul ramurilor din graf;N numrul nodurilor grafului.

    TSCR -curs- Ionescu Augustin-Iulian

  • Acoperirea cilor20106-*TSCR -curs- Ionescu Augustin-IulianComplexitatea ciclomatic este o masur a aa numitelor ci independente prin graf.Aceast valoare ne indic de obicei limita superioar a numrului de cazuri de test necesare acoperirii ramurilor/deciziilor.Cile independente se determin printr-un proces iterativ, pornind de la o cale ct mai simpl i introducnd apoi noi ramuri pn cnd toate ramurile au fost folosite.

    TSCR -curs- Ionescu Augustin-Iulian

  • Acoperirea cilor (exemplu)20106-*TSCR -curs- Ionescu Augustin-Iuliandouble 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

  • Acoperirea cilor (exemplu)20106-*TSCR -curs- Ionescu Augustin-IulianV(G)=14-12+2=4a-b-c-j-k-l-na-b-c-j-m-na-d-e-f-i-j-m-na-d-g-h-i-j-m-n

    TSCR -curs- Ionescu Augustin-Iulian

    a

    d

    c

    b

    m

    l

    k

    j

    i

    h

    g

    f

    e

    n

    IF (extras>=3)

    IF (extras>=5)

    ELSE

    ENDIF

    ELSE

    IF (discount>=addon_discount)

    THEN

    THEN

    THEN

    ENDIF

  • Acoperirea cilor (exemplu)20106-*TSCR -curs- Ionescu Augustin-Iulian//testcase 01price=calculate_price(10000.00, 2000.00, 1000.00,3,0);test_ok=test_ok&&(abs(price-12900.00)
  • Utilizarea fluxului de date20106-*TSCR -curs- Ionescu Augustin-Iulian Spunem c o variabil este definit ntr-o instruciune dac i se asigneaz o valoare sau i se modific valoarea.Exemplu: nota=(4*nota_lab+6*nota_examen)/10;Aceast instruciune se noteaz def pentru variabila nota.Spunem c o variabil este utilizat ntr-o instruciune 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
  • Utilizarea fluxului de date20106-*TSCR -curs- Ionescu Augustin-IulianPot fi identificate mai multe variante de testare a segmentelor de cale din fluxul de date:

    toate deftoate p-usetoate c-use/unele p-usetoate p-use/unele c-usetoate usetoate cile def-use

    TSCR -curs- Ionescu Augustin-Iulian

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

    TSCR -curs- Ionescu Augustin-Iulian

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

    TSCR -curs- Ionescu Augustin-Iulian

  • Utilizarea fluxului de date20106-*TSCR -curs- Ionescu Augustin-IulianTabel pentru @nume Tabel pentru @@FETCH_STATUS Tabel pentru @prenume Tabel pentru @initiala

    ID perechedefuse171222112

    ID perechedefuse171222112

    ID perechedefuse171222112

    ID perechedefuse1782218

    TSCR -curs- Ionescu Augustin-Iulian

  • Testarea ciclurilor20106-*TSCR -curs- Ionescu Augustin-Iulian Dac ciclul are de la 0 la n iteraii, cazurile de test dezvoltate vor fi:0 iteraii;o iteraie;dou iteraii;k iteraii k
  • Testarea mutaiilor20106-*TSCR -curs- Ionescu Augustin-Iulian Se consider ca baz pentru generarea datelor de test i pentru evaluarea eficienei testrii, defectele care ar putea s apar n componenta testat.Sunt luate n considerare dou ipoteze de lucru:Ipoteza programatorului competent. Programatorii sunt profesioniti, cunosc limbajele utilizate i scriu programe aproape perfecte. Apar doar puine 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 detectrii unor erori complexe. Testarea mutaiilor are ca punct de plecare: codul original al compnentei testate; cazurile de test asociate; rezultatele testului.

    TSCR -curs- Ionescu Augustin-Iulian

  • Testarea mutaiilor20106-*TSCR -curs- Ionescu Augustin-Iulian Vom numi mutant orice program obinut din cel original prin modificarea unui operand, a unei constante sau a numelui unei variabile. Testul original se aplic mutantului. Dac se obine un rezultat diferit de cel obinut cu programul original, defectul a fost detectat i spunem c mutantul a fost ucis.Dac mutantul produce aceleai rezultate ca i programul original, testul trebuie completat cu alte date de test pentru a ncerca s omorm mutantul.Exist situaii 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 corespunztor pentru mutaii dac pentru orice Pi exist un caz de test tT astfel nct Pi(t)P(t).

    TSCR -curs- Ionescu Augustin-Iulian

  • Testarea mutaiilor20106-*TSCR -curs- Ionescu Augustin-Iulian Msura n care un set de teste T este adecvat mutaiilor pentru programul P se calculeaz cu relaia:

    MS(P,T)=numr_mutani_ucii/(numr _total_mutani - numr_mutani _echivaleni)

    Varianta prezentat mai sus reprezint testarea tare a mutaiilor.Dac se iau n considerare numai anumite elemente afectate de mutaii, se spune c avem o testare slab a mutaiilor.

    TSCR -curs- Ionescu Augustin-Iulian

  • Ordonarea pariala a criteriilor de testare20106-*TSCR -curs- Ionescu Augustin-Iulian

    TSCR -curs- Ionescu Augustin-Iulian

    Toate caile

    Toate caile def-use

    Toate use

    Toate c-use, unele p-use

    Toate p-use, unele c-use

    Toate def

    Toate c-use

    Toate p-use

    Toate ramurile

    Toate instructiunile

    Mutatii tari

    Mutatii slabe

  • 20106-*TSCR -curs- Ionescu Augustin-Iulian?

    TSCR -curs- Ionescu Augustin-Iulian

    *************************