If you can't read please download the document
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
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
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 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
*************************