Testarea Aplicaţiilor Software

Costurile pe care le implică detecţia şi rezolvărea defectelor
costurile cresc odată cu evoluţia în timp a dezvoltării proiectului

costuri

repararea unui defect -> (% poate produce un alt defect

contractele între client şi dezvoltator ! penalizări le"ate de livrare

cu c#t sunt detectate$reparate mai multe defecte în perioada critică de livrare% cu at#t cresc şansele ca livrarea să fie am#nată -> costuri de penalizare

(ivrare 'ezvoltare Cerinţe$ Specificaţii

t

un defect detectat din timp reduce costurile proiectului de & ori faţă de un defect detectat t#rziu

1

Testarea Aplicaţiilor Software

)educerea costurilor

se caută defecte în cerinţe$specificaţii ! cel mai ieftin la momentul proiectării (costuri foarte mici ! se evită propa"area erorii

detectarea unui defect de către pro"ramator înainte testor ! reduce costurile considera*il (timp% *ani% persoane implicate

defecte înainte de livrare influenţează -> divizia de mar+etin" (nu se pot realiza la timp pliante% demo-uri % divizia de documentare (documentaţie% tutoriale % divizia de v#nz#ri

după livrare costurile pot creşte e,ponenţial% dacă nu este specificat altfel în contract- .rodusul software este actualizat (client unic vs- milioane de clienţi% e-mail$we* vs- mail

2

Testarea Aplicaţiilor Software

/,treme pro"rammin" ! soluţie de reducere a costurilor 0
reduce considera*il costurile de rezolvare a unui defect înainte de livrare

procesul de dezvoltare a proiectului ! divizată în cicluri de scurtă durată (pro"ramare% testare% verificare client% proiectare ! interacţiune continuă cu clientul

metodă de dezvoltare software A"ile

3

Testarea Aplicaţiilor Software

Costuri le"ate de calitatea produsului
4 categorii de costuri prevenire verificare defecte interne defecte e,terne

4

/.emple ● şcolarizarea celor implicaţi în proiect analiza cerinţelor proiectare tolerantă la defecte claritatea specificaţiilor documentarea internă a proiectului ● ● ● ● evaluarea anticipată a fia*ilităţii utilitarelor necesare în dezvoltarea produsului ● 5 .Testarea Aplicaţiilor Software Costuri de prevenire.

/.Testarea Aplicaţiilor Software Costuri de verificare.emple ● revizuirea proiectării inspectarea codului testare w1ite *o. şcolarizarea testorilor testare *eta testarea funcţionalităţii din punct de vedere al utilizatorilor propriu-zişi testarea produsului de către client% înainte de livrare ● ● ● ● ● ● 6 . 2 *lac+ *o.

/.Testarea Aplicaţiilor Software Costul defectelor interne.emple ● )ezolvarea defectelor Testarea prin re"resie Timp pierdut în interiorul companiei (pro"ramator% testor Timp pierdut în mar+etin" şi v#nzări Timp pierdut în pu*licitate .enalizări le"ate de livrarea înt#rziată ● ● ● ● ● 7 .

Testarea Aplicaţiilor Software Costul defectelor e./.ierderea *unăvoinţei clientului Telefoane pentru suport te1nic Scrierea documentaţiei 3uestions 2 Answers 4nvesti"area pro*lemelor raportate de către client 5ferirea suportului pentru mai multe versiuni 6aranţie% restituirea anumitor sume către client (ivrarea produselor actualizate ● ● ● ● ● ● 8 .emple ● .terne.

Testarea Aplicaţiilor Software 7otivarea necesităţii rezolvării defectului alături de părţile interesate pe *aza costurilor estimate Părţi interesate ● /c1ipa de documentare /c1ipa de suport te1nic /c1ipa de mar+etin" /c1ipa de v#nzări 7ana"erii de proiect ● ● ● ● 9 .

Testare dinamică nu se rulează software-ul -> se verfică *ucăţi de cod produce avertismente înainte de compilare ● ● ● ● ● 10 .Testarea Aplicaţiilor Software Testare$Analiză$8erificare statică ● îm*unătăţeşte calitatea codului defecte software (implementare% editare verifică codul pe anumite şa*loane standardizate la nivelul or"anizaţiei Testare statică vs.

aminează codul ● ● ● Criterii Control-Flow Data-Flow 11 .Testarea Aplicaţiilor Software Testare$Analiză$8erificare statică ● 9u e.ecutate în timpul testării /.complementare 'etecţia *locurilor e.ecută codul sursă 7etode manuale (la inceput% costuri reduse 2 automate .

acoperirea ramurilor .muc1ii .acoperirea deciziilor și a condiţiilor -> independenţa su*e.necesitatea înțele"erii codului de către testor pt. flu.ecuţia codului sursă ● ● /.acoperirea rutelor de e.multe linii de cod (module$unități -> numărul mare de cazuri de test 12 ● . operaţii$condiții e.ecuta*ile .Testarea Aplicaţiilor Software Criteriul Control-:low ● )eprezentarea "rafului Control-:low .ul de control dintre operaţii Scopul ! acoperirea "rafului C-:% prin reducerea cazurilor de test ● Tipuri de acoperire< .< condiţii% cicluri% ieşire din condiţie$ciclu%--'ezavanta=e< .ecuție -> posi*ilele rute activate în e.noduri .acoperirea operaţiilor e.presiilor .producerea "rafului C-: .ecutate secvenţial .

b=-3 b<0 x-=2 . a>10 Acoperire completă a operațiilor e. x+=2 a=11.Acoperirea >??% a operațiilor e.ecuta*ile Acoperire incompletă a rutelor de e. if (b<0) x-=2.Testarea Aplicaţiilor Software Criteriul Control-:low.ecuțieComportamentul codului poate fi diferit pentru alte perec1i (a%* 13 .ecuta*ile if (a>10) x+=2.

Testarea Aplicaţiilor Software Criteriul Control-:low. 14 a=5. b=2 a>10 x+=2 b<0 x-=2 . a>10 x+=2 Acoperire incompletă a rutelor de e. b=-7 if (a>10) x+=2.Acoperirea >??% a deciziilor a=12.ecuție'in @ rute au fost acoperite Ab<0 x-=2 . if (b<0) x-=2. .

ecuție'in @ rute au fost acoperite Ac<0 || d>=0 x-=2 . c=-2. a>10 && b==0 x+=2 Acoperire incompletă a rutelor de e. b=0.Testarea Aplicaţiilor Software Criteriul Control-:low.Acoperirea >??% a condițiilor a=12. 15 a=1. c=2. if (c<0 && d>=0) x-=2. d=-3 if (a>10 && b==0) x+=2. d=-3 a>10 && b==0 x+=2 c<0 || d>=0 x-=2 . . b=0.

Cicluri ! număr foarte mare de teste 16 .ecuție .Testarea Aplicaţiilor Software Criteriul Control-:low.Acoperirea >??% a rutelor de e.

Comple.ității Ciclomatice (C selectarea unei mulțimi de rute de *ază (început$sf#rșit crearea unui caz de test pentru fiecare rută de *ază e.Testarea structurată.itate ciclomatică BTom 7cCa*eC ● o*ținerea "rafului Control-:low din codul software calcularea Comple.ecutarea testelor ● ● ● ● 17 .Testarea Aplicaţiilor Software Criteriul Control-:low.

F C . muc1ii ! noduri D A sau C .clusiv *inare C .tipuri de decizii e. p D > $ p ! numărul de decizii *inare (vala*il pt. A@ . numărul minim de rute de *ază independente neciclice% care împreună traversează toate muc1iile% av#nd proprietatea că oricare două rute au cel puțin o muc1ie diferită6arantează >??% acoperirea operațiilor e.ecuta*ile și a condițiilor 18 .Testarea Aplicaţiilor Software Comple. F sau C.itate ciclomatică (C C .>E D A .GD>.

if (c1) *)+. ). 44 5nd of 6a)e-" ca)e-63 )+0. )+1.itate ciclomatică (C . )5. if (c+) * )32. b'ea&..emplu BHrown 2 'onaldsonC boolean eval a!e" #$ell (%ic&e'$#(bol !)) * )1. ). )3+.44 5nd $/i!c0 ). )21.1./0ile (c2) * )1.el)e *)7.1. 44 5nd of 6a)e-7 . )22.b'ea&. )71. . b'ea&. if (c5) *)70. el)e * )35.2.Testarea Aplicaţiilor Software Comple. )i = o9e'ația i ). )10. )33.0. )31. )11.44 5nd 80ile )10. ). b'ea&./. )/i!c0 (c3) * ca)e-23 )20. - 19 . ). 44 5nd of 6a)e-2 ca)e-"3 )30. 'e! 'n 'e) l!. )3.. ). )2. c: = condiția : .0. )12. 44 5nd of 6a)e-6 ca)e-73 )50.

C = 22 – 16 + 2 = 8 20 .

N. 21 .AH'/:J(75'. I.AH'/:475'. G. F.AH'/:675'. L. @.AH'/:M75'. A.Variantă 8 rute de bază >.AH'/:JK75'.AC'.AH'.AH'/:4795'.

Cazuri de test / condiții Test Case > A I @ L G F N C> :alse True :alse :alse :alse :alse :alse :alse CA :alse :alse True True True True True True CI 9$A 9$A A H C ' H C C@ 9$A 9$A 9$A :alse 9$A 9$A True 9$A CL 9$A 9$A :alse :alse :alse :alse :alse True 22 .

44 5nd /0ile .44 .44 5nd if )7. . )2. if (c.... 5nd /0ile el)e if (c+) * el)e * )3...Testarea Aplicaţiilor Software Comple.) ). )10. )+. el)e ). b'ea&.. "'ea&. if (c1) * /0ile (c2) * if (c3) * )1.Temă . if (c5) )5. )i = o9e'ația i c: = condiția : 23 .. )1..itate ciclomatică (C .

Testarea Aplicaţiilor Software Criteriul 'ata-:low <incl de <)!dio.x). detectează utilizarea eronată a varia*ilelor în codul sursă 24 .0> (ain() * in! x. )ezultat0 Testarea 'ata-:low . 9'in!f (=>d=.

istă% apoi este distrusă (k Perec"i #d$u$%& dd – definire succesivă -> posibil eroare de codare du – definire apoi utilizare -> corect dk – definire apoi distrugere -> posibil eroare de codare ud – utilizare apoi (re)definire -> ok uu – utilizare succesivă -> ok uk – utilizare apoi distrugere -> ok kd – distrugere apoi (re)definire -> ok ku – distrugere apoi utilizare -> eroare majoră kk – distrugere succesivă -> posibil eroare de codare 25 0 .~d varia*ila nu e.istă (notat prin ~ % apoi este definită (d A.Testarea Aplicaţiilor Software Criteriul 'ata-:low Posibilități de primă apariție a unei ariabile !n cod >. ~k varia*ila nu e.~u varia*ila nu e.istă% apoi este utilizată (u 3.

anumite rute ce conțin perec1i eronate (d%u%+ nu sunt folosite niciodată -> cod nu neaparat incorect ..> Criteriul 'ata-:low ('inamic 26 .ok dk ! eroare 8aria*ila z ~k ! eroare ku – eroare uu – ok ud ! o+ kk ! eroare d(x) (x) (?) (#) &(?) d(#) (?) (#) (?) &(#) d(?) &(?) (x) d(?) du ! o+ Cazuri particulare) .Testarea Aplicaţiilor Software Criteriul 'ata-:low (Static d(x) 8aria*ila ' ~d ! corect dd – eroare du – ok 8aria*ila ( ~u ! eroareO ud – ok du – ok uk .utilizarea vectorilor ( aB=C ! depinde de conte.t .

Testarea Aplicaţiilor Software Criteriul 'ata-:low ('inamic perec1e def-use utilizare varia*ilă definiţie computaţională Se *azează pe Control-:low predicat ● ● Pentru *iecare ariabilă se de*inește cel puțin un caz de test pentru *iecare perec"e +de*-use. !"ang #iu$ %&eac"ing '(ata )lo* &esting' in an +oft*are.ngineering and &ec"nolog/ 27 .uss !ollege of .ngineering !ourse-$ .

Pn caz de test poate acoperi mai multe varia*ileint factorial (int n) 0 int ans*er$ counter1 ans*er 2 31 counter 2 31 loop4 if (counter > n) return ans*er1 ans*er 2 ans*er 5 counter1 counter 2 counter 6 31 goto loop1 7 28 .Testarea Aplicaţiilor Software Criteriul 'ata-:low.Temă Creați cazuri de test pe *aza criteriului 'ata-:low pentru fiecare varia*ilă din funcția factorial de mai =os.

!&-34 foo 2 calc8foo8met"od83()1 break1 7 s*itc" foo 0 case )::-34 bar 2 calc8bar8met"od83()1 break1 case )::-94 bar 2 calc8bar8met"od89()1 break1 7 return foo.Testarea Aplicaţiilor Software Criteriul 'ata-:low.!&-34 foo 2 calc8foo8met"od83()1 break1 case +.#.!&-94 foo 2 calc8foo8met"od89()1 break1 case +.#.#.Temă Creați cazuri de test 'ata-:low% pe *aza căilor Control :low< int module( int selector) 0 int foo$ bar1 s*itc" selector 0 case +.bar1 7 29 .

erl<<Critic ● ● ● 30 .Testarea Aplicaţiilor Software Testare statică.Analiză statică ● :indHu"s% C1ec+stQle Splint% :rama-C% H(AST CppC1ec+ .

. .tQpos Comparaţii între o*iecte diferite /vitarea erorii 9ull.% .ointer/.Testarea Aplicaţiilor Software /.ception Cod redundant 31 ● ● ● ● ● .emple de analiză statică ● )ecursivitate infinită 5 sin"ură instrucţiune return la nivel de funcţie ! depanare uşoară 6reşeli de editare (.

Testarea Aplicaţiilor Software /.emple de analiză statică -einiţializarea ariabilei int f( *ool * R int iS if ( * R i .!66 >arnings 32 . ?S T return iS $$ i este neiniţializată dacă * . false T <isual +tudio &eam +/stem$ !ode =nal/sis for !.

( c1ar W malloc ( >? S if ( p R Wp .!66 >arnings 33 .emple de analiză statică Dere*erenţierea pointerului -. ( c1ar W malloc( >? S Wp .Testarea Aplicaţiilor Software /. XY?XS $$ --free( p S T <isual +tudio &eam +/stem$ !ode =nal/sis for !.// Uinclude Vmalloc-1> void f( R c1ar Wp . XY?XS $$ --free( p S T T Uinclude Vmalloc-1> void f( R c1ar Wp .

emple de analiză statică 0ngnorarea alorii returnate Uinclude Vstdio-1> Uinclude Vstdio-1> void f( R fopen( Ztest-cZ% ZrZ S $$ valoarea returnată i"norată $$ --T void f( R :4(/ WstreamS if((stream .. 9P(( <isual +tudio &eam +/stem$ !ode =nal/sis for !. fopen( Ztest-cZ% ZrZ returnS $$ --T .!66 >arnings 34 .Testarea Aplicaţiilor Software /.

Testarea Aplicaţiilor Software /.emple de analiză statică /ipsă argument Uinclude Vstrin"-1> void f( R c1ar *uffB>LCS sprintf(*uff% Z%s %sZ% ZJello% [orldOZ S T Uinclude Vstrin"-1> void f( R c1ar *uffB>LCS sprintf(*uff% Z%s %s Z% ZJelloZ%Z[orldZ S T <isual +tudio &eam +/stem$ !ode =nal/sis for !.!66 >arnings 35 .

?S iV. ?S $$ --T T int *uffB>@CS $$ arraQ of ?-->I elements void f( R for ( int i.Testarea Aplicaţiilor Software /.>@SiDD R *uffBiC. ?S $$ --T T <isual +tudio &eam +/stem$ !ode =nal/sis for !.emple de analiză statică 0ndice depă1it int *uffB>@CS $$ arraQ de ?-->I elemente void f( R for (int i.!66 >arnings 36 .?S i V >@S iDD R *uffBiC.

!66 >arnings 37 ./ A void f(int n R if(49.emple de analiză statică Comparaţie 23 cu o constantă45 Udefine 49.PT\T]. A R puts(Zcomparaţie A9' pe *iţi adevăratăZ S T else R puts(Zcomparaţie A9' pe *iţi falsăZ S T T <isual +tudio &eam +/stem$ !ode =nal/sis for !./ ^^ n R puts(ZîntotdeaunaZ S T else R puts(ZniciodatăZ S T T Udefine 49.Testarea Aplicaţiilor Software /.PT\T].PT\T]..PT\T]./ 2 n ./ A void f(int n R if((49.

.!66 >arnings 38 .Testarea Aplicaţiilor Software /.emple de analiză statică 2perator incorect void f( int i R w1ile (i . L R $$ --T T <isual +tudio &eam +/stem$ !ode =nal/sis for !. L R $$ --T T void f( int i R w1ile (i .

>??S i >. >??S i >.!66 >arnings 39 .Testarea Aplicaţiilor Software /. ?S iDD R $$ --T T T void f( R int iS for (i .emple de analiză statică 0ncrementare eronată a contorului void f( R int iS for (i . ?S i-R $$ --T <isual +tudio &eam +/stem$ !ode =nal/sis for !.

emple de analiză statică Comparaţie !ntre bit *ield 1i tipul boolean struct mQHits R s1ort fla" < >S s1ort done < >S $$--T *itTQpeS void f( R if (*itTQpe-fla" ..*itTQpe-done R $$ --T T 40 ..!66 >arnings void f ( R if(*itTQpe-fla". > R $$ --T T <isual +tudio &eam +/stem$ !ode =nal/sis for !.Testarea Aplicaţiilor Software /.

Testarea Aplicaţiilor Software /..tilizare sizeo* pentru o e'presie void f( R size\t .@ S $$ --T T void f( R size\t .!66 >arnings 41 .S c1ar aB>?CS .emple de analiză statică .S c1ar aB>?CS .. sizeof (a . sizeof (a .@S $$ --- <isual +tudio &eam +/stem$ !ode =nal/sis for !.

.Testarea Aplicaţiilor Software /.nWf(n-> S T 42 .nWf(n-> S T void f(int n R f.> return >S else f.emple de analiză statică 3ecursi itate in*inită void f(int n R if (n.

i este modificat T w1ile (true R $$ --if (.Q *rea+S T w1ile (true R $$ --.istă condiţie de ieşire break T 43 .emple de analiză statică Ciclu in*init int i.AS w1ile (i R $$ --...i nu este modificat T int i.nu e.AS w1ile (i R $$ --.Testarea Aplicaţiilor Software /.

Testarea Aplicaţiilor Software )ezumat 2 _ntre*ări 44 .

Sign up to vote on this title
UsefulNot useful