Sunteți pe pagina 1din 44

Testarea Aplicaiilor Software

Costurile pe care le implic detecia i rezolvrea defectelor


costurile cresc odat cu evoluia n timp a dezvoltrii proiectului

costuri

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

contractele ntre client i dezvoltator ! penalizri 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 Cerine$ Specificaii

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

Testarea Aplicaiilor Software

)educerea costurilor

se caut defecte n cerine$specificaii ! cel mai ieftin la momentul proiectrii (costuri foarte mici ! se evit propa"area erorii

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

defecte nainte de livrare influeneaz -> divizia de mar+etin" (nu se pot realiza la timp pliante% demo-uri % divizia de documentare (documentaie% tutoriale % divizia de v#nz#ri

dup livrare costurile pot crete e,ponenial% dac nu este specificat altfel n contract- .rodusul software este actualizat (client unic vs- milioane de clieni% e-mail$we* vs- mail

Testarea Aplicaiilor Software

/,treme pro"rammin" ! soluie 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 ! interaciune continu cu clientul

metod de dezvoltare software A"ile

Testarea Aplicaiilor Software

Costuri le"ate de calitatea produsului


4 categorii de costuri prevenire verificare defecte interne defecte e,terne

Testarea Aplicaiilor Software

Costuri de prevenire- /,emple

colarizarea celor implicai n proiect analiza cerinelor proiectare tolerant la defecte claritatea specificaiilor documentarea intern a proiectului

evaluarea anticipat a fia*ilitii utilitarelor necesare n dezvoltarea produsului

Testarea Aplicaiilor Software

Costuri de verificare- /,emple

revizuirea proiectrii inspectarea codului testare w1ite *o, 2 *lac+ *o, colarizarea testorilor testare *eta testarea funcionalitii din punct de vedere al utilizatorilor propriu-zii testarea produsului de ctre client% nainte de livrare

Testarea Aplicaiilor 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#nzri Timp pierdut n pu*licitate .enalizri le"ate de livrarea nt#rziat

Testarea Aplicaiilor Software

Costul defectelor e,terne- /,emple

.ierderea *unvoinei clientului Telefoane pentru suport te1nic Scrierea documentaiei 3uestions 2 Answers 4nvesti"area pro*lemelor raportate de ctre client 5ferirea suportului pentru mai multe versiuni 6aranie% restituirea anumitor sume ctre client (ivrarea produselor actualizate

Testarea Aplicaiilor Software

7otivarea necesitii rezolvrii defectului alturi de prile interesate pe *aza costurilor estimate
Pri interesate

/c1ipa de documentare /c1ipa de suport te1nic /c1ipa de mar+etin" /c1ipa de v#nzri 7ana"erii de proiect

Testarea Aplicaiilor Software

Testare$Analiz$8erificare static

m*untete calitatea codului defecte software (implementare% editare verific codul pe anumite a*loane standardizate la nivelul or"anizaiei Testare static vs- Testare dinamic nu se ruleaz software-ul -> se verfic *uci de cod produce avertismente nainte de compilare

10

Testarea Aplicaiilor Software

Testare$Analiz$8erificare static

9u e,ecut codul surs 7etode manuale (la inceput% costuri reduse 2 automate - complementare 'etecia *locurilor e,ecutate n timpul testrii /,amineaz codul

Criterii

Control-Flow

Data-Flow

11

Testarea Aplicaiilor Software

Criteriul Control-:low

)eprezentarea "rafului Control-:low - noduri ; operaii$condiii e,ecutate secvenial - muc1ii ; flu,ul de control dintre operaii Scopul ! acoperirea "rafului C-:% prin reducerea cazurilor de test

Tipuri de acoperire< - acoperirea operaiilor e,ecuta*ile - acoperirea ramurilor - acoperirea deciziilor i a condiiilor -> independena su*e,presiilor - acoperirea rutelor de e,ecuie -> posi*ilele rute activate n e,ecuia codului surs

/,< condiii% cicluri% ieire din condiie$ciclu%--'ezavanta=e< - necesitatea nele"erii codului de ctre testor pt- producerea "rafului C-: - multe linii de cod (module$uniti -> numrul mare de cazuri de test
12

Testarea Aplicaiilor Software

Criteriul Control-:low- Acoperirea >??% a operaiilor e,ecuta*ile


if (a>10) x+=2; if (b<0) x-=2; x+=2 a=11, b=-3 b<0 x-=2 .

a>10

Acoperire complet a operaiilor e,ecuta*ile Acoperire incomplet a rutelor de e,ecuieComportamentul codului poate fi diferit pentru alte perec1i (a%*

13

Testarea Aplicaiilor Software

Criteriul Control-:low- Acoperirea >??% a deciziilor


a=12, b=-7 if (a>10) x+=2; if (b<0) x-=2; a>10 x+=2 Acoperire incomplet a rutelor de e,ecuie'in @ rute au fost acoperite Ab<0 x-=2 . .
14

a=5, b=2

a>10 x+=2 b<0 x-=2

Testarea Aplicaiilor Software

Criteriul Control-:low- Acoperirea >??% a condiiilor


a=12, b=0, c=2, d=-3 if (a>10 && b==0) x+=2; if (c<0 && d>=0) x-=2; a>10 && b==0 x+=2 Acoperire incomplet a rutelor de e,ecuie'in @ rute au fost acoperite Ac<0 || d>=0 x-=2 . .
15

a=1, b=0, c=-2, d=-3 a>10 && b==0 x+=2 c<0 || d>=0 x-=2

Testarea Aplicaiilor Software

Criteriul Control-:low- Acoperirea >??% a rutelor de e,ecuie

Cicluri ! numr foarte mare de teste

16

Testarea Aplicaiilor Software

Criteriul Control-:low- Testarea structurat- Comple,itate ciclomatic BTom 7cCa*eC

o*inerea "rafului Control-:low din codul software calcularea Comple,itii Ciclomatice (C selectarea unei mulimi de rute de *az (nceput$sf#rit crearea unui caz de test pentru fiecare rut de *az e,ecutarea testelor

17

Testarea Aplicaiilor Software

Comple,itate ciclomatic (C
C ; muc1ii ! noduri D A sau C ; p D > $ p ! numrul de decizii *inare (vala*il pt- tipuri de decizii e,clusiv *inare C ; A@ - >E D A ; F sau C;GD>;F C ; numrul minim de rute de *az independente neciclice% care mpreun traverseaz toate muc1iile% av#nd proprietatea c oricare dou rute au cel puin o muc1ie diferit6aranteaz >??% acoperirea operaiilor e,ecuta*ile i a condiiilor
18

Testarea Aplicaiilor Software

Comple,itate ciclomatic (C - /,emplu BHrown 2 'onaldsonC


boolean eval a!e" #$ell (%ic&e'$#(bol !)) * )1; )2; )3; if (c1) *)+; )5; ),;el)e *)7; ).;/0ile (c2) * )1; )10; )/i!c0 (c3) * ca)e-23 )20; )21; )22; b'ea&; 44 5nd of 6a)e-2 ca)e-"3 )30; )31; if (c+) * )32; )33; )3+; el)e * )35; - b'ea&; 44 5nd of 6a)e-" ca)e-63 )+0; )+1; b'ea&; 44 5nd of 6a)e-6 ca)e-73 )50; b'ea&; 44 5nd of 6a)e-7 - 44 5nd $/i!c0 ),0; ),1; ),2; if (c5) *)70; )71; )i = o9e'aia i ).0; ).1; c: = condiia : - 44 5nd 80ile )10; )11; )12; 'e! 'n 'e) l!; -

19

C = 22 16 + 2 =

20

Variant 8 rute de baz

>- AH'. A- AC'. I- AH'/:675'. @- AH'/:JK75'. L- AH'/:475'. G- AH'/:M75'. F- AH'/:J(75'. N- AH'/:4795'.

21

Cazuri de test / condiii

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

Testarea Aplicaiilor Software

Comple,itate ciclomatic (C - Tem


...

...

if (c1) * /0ile (c2) * if (c3) * )1; )2; if (c5) )5; el)e ),; "'ea&;- 44 ; 5nd /0ile el)e if (c+) * el)e * )3; )+; b'ea&;- 44 5nd /0ile - 44 5nd if )7; if (c,) ).; )1; )10;

)i = o9e'aia i c: = condiia :

23

Testarea Aplicaiilor Software

Criteriul 'ata-:low

<incl de <)!dio.0> (ain() * in! x; 9'in!f (=>d=,x); )ezultat0

Testarea 'ata-:low ; detecteaz utilizarea eronat a varia*ilelor n codul surs

24

Testarea Aplicaiilor Software

Criteriul 'ata-:low
Posibiliti de prim apariie a unei ariabile !n cod >- ~d varia*ila nu e,ist (notat prin ~ % apoi este definit (d A- ~u varia*ila nu e,ist% apoi este utilizat (u 3. ~k varia*ila nu e,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

Testarea Aplicaiilor Software

Criteriul 'ata-:low (Static


d(x) 8aria*ila ' ~d ! corect dd eroare du ok 8aria*ila ( ~u ! eroareO ud ok du ok uk - 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)

- utilizarea vectorilor ( aB=C ! depinde de conte,t - anumite rute ce conin perec1i eronate (d%u%+ nu sunt folosite niciodat -> cod nu neaparat incorect ;;> Criteriul 'ata-:low ('inamic
26

Testarea Aplicaiilor Software

Criteriul 'ata-:low ('inamic


perec1e def-use utilizare

varia*il

definiie

computaional Se *azeaz pe Control-:low

predicat

Pentru *iecare ariabil se de*inete cel puin un caz de

test pentru *iecare perec"e +de*-use,

!"ang #iu$ %&eac"ing '(ata )lo* &esting' in an +oft*are,ngineering !ourse-$ .uss !ollege of ,ngineering and &ec"nolog/

27

Testarea Aplicaiilor Software

Criteriul 'ata-:low- Tem


Creai cazuri de test pe *aza criteriului 'ata-:low pentru fiecare varia*il din funcia factorial de mai =os- 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 Aplicaiilor Software

Criteriul 'ata-:low- Tem


Creai cazuri de test 'ata-:low% pe *aza cilor Control :low<
int module( int selector) 0 int foo$ bar1 s*itc" selector 0 case +,#,!&-34 foo 2 calc8foo8met"od83()1 break1 case +,#,!&-94 foo 2 calc8foo8met"od89()1 break1 case +,#,!&-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;bar1 7 29

Testarea Aplicaiilor Software

Testare static- Analiz static

:indHu"s% C1ec+stQle Splint% :rama-C% H(AST CppC1ec+ .erl<<Critic

30

Testarea Aplicaiilor Software

/,emple de analiz static

)ecursivitate infinit 5 sin"ur instruciune return la nivel de funcie ! depanare uoar 6reeli de editare (;% ;; - tQpos Comparaii ntre o*iecte diferite /vitarea erorii 9ull.ointer/,ception Cod redundant
31

Testarea Aplicaiilor Software

/,emple de analiz static


-einiializarea ariabilei

int f( *ool * R int iS if ( * R i ; ?S T return iS $$ i este neiniializat dac * ; false T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

32

Testarea Aplicaiilor Software

/,emple de analiz static


Dere*erenierea pointerului -.// Uinclude Vmalloc-1> void f( R c1ar Wp ; ( c1ar W malloc ( >? S if ( p R Wp ; XY?XS $$ --free( p S T T

Uinclude Vmalloc-1> void f( R c1ar Wp ; ( c1ar W malloc( >? S Wp ; XY?XS $$ --free( p S T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

33

Testarea Aplicaiilor Software

/,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 ; fopen( Ztest-cZ% ZrZ returnS $$ --T

;; 9P((

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

34

Testarea Aplicaiilor 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

Testarea Aplicaiilor Software

/,emple de analiz static


0ndice dep1it int *uffB>@CS $$ arraQ de ?-->I elemente void f( R for (int i;?S iV;>@SiDD R *uffBiC; ?S $$ --T T int *uffB>@CS $$ arraQ of ?-->I elements void f( R for ( int i;?S i V >@S iDD R *uffBiC; ?S $$ --T T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

36

Testarea Aplicaiilor Software

/,emple de analiz static


Comparaie 23 cu o constant45 Udefine 49.PT\T]./ A void f(int n R if(49.PT\T]./ ^^ n R puts(ZntotdeaunaZ S T else R puts(ZniciodatZ S T T Udefine 49.PT\T]./ A void f(int n R if((49.PT\T]./ 2 n ;; A R puts(Zcomparaie A9' pe *ii adevratZ S T else R puts(Zcomparaie A9' pe *ii falsZ S T T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

37

Testarea Aplicaiilor Software

/,emple de analiz static


2perator incorect void f( int i R w1ile (i ; L R $$ --T T void f( int i R w1ile (i ;; L R $$ --T T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

38

Testarea Aplicaiilor Software

/,emple de analiz static


0ncrementare eronat a contorului void f( R int iS for (i ; >??S i >; ?S iDD R $$ --T T T void f( R int iS for (i ; >??S i >; ?S i-R $$ --T

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

39

Testarea Aplicaiilor Software

/,emple de analiz static


Comparaie !ntre bit *ield 1i tipul boolean struct mQHits R s1ort fla" < >S s1ort done < >S $$--T *itTQpeS void f( R if (*itTQpe-fla" ;; > R $$ --T T
<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

void f ( R if(*itTQpe-fla";;*itTQpe-done R $$ --T T

40

Testarea Aplicaiilor Software

/,emple de analiz static


.tilizare sizeo* pentru o e'presie void f( R size\t ,S c1ar aB>?CS ,; sizeof (a - @ S $$ --T T void f( R size\t ,S c1ar aB>?CS ,; sizeof (a - @S $$ ---

<isual +tudio &eam +/stem$ !ode =nal/sis for !;!66 >arnings

41

Testarea Aplicaiilor Software

/,emple de analiz static


3ecursi itate in*init void f(int n R if (n;;> return >S else f;nWf(n-> S T

void f(int n R f;nWf(n-> S T

42

Testarea Aplicaiilor Software

/,emple de analiz static


Ciclu in*init int i;AS w1ile (i R $$ --- i nu este modificat T int i;AS w1ile (i R $$ --- i este modificat T w1ile (true R $$ --if (,;;Q *rea+S T

w1ile (true R $$ --- nu e,ist condiie de ieire break T

43

Testarea Aplicaiilor Software

)ezumat 2 _ntre*ri

44

S-ar putea să vă placă și