Вы находитесь на странице: 1из 21

TESTAREA PROGRAMELOR 1.

Introducere
Un test const n execuia programului pentru un set de date de intrare convenabil ales, pentru a verifica dac rezultatul obinut este corect. Un caz de test este un set de date de intrare mpreun cu datele de ieire pe care programul ar trebui s le produc. De exemplu, valorile coeficienilor a,b,c ai unei ecuaii de gradul doi mpreun cu valorile x1, x2, n testul unui program de rezolvare a ecuaiilor de gradul doi. azurile de test se aleg astfel nc!t s fie puse n eviden, dac este posibil, situaiile de funcionare necorespunztoare. "estarea este activitatea de concepie a cazurilor de test, de execuie a testelor i de evaluare a rezultatelor testelor, n diferite etape ale ciclului de via al programelor. "e#nicile de testare sunt mult mai costisitoare dec!t metodele statice $inspectrile i demonstrrile de corectitudine%, de aceea n prezent se apreciaz c te#nicile statice pot fi folosite pentru a le completa pe cele dinamice, obinndu&se astfel o reducere a costului total al procesului de verificare i validare. 'etodele traditionale de verificare(validare presupun realizarea verificrii(validrii prin inspectri i teste. )ceste activiti ocup circa *+&,+- din efortul total de dezvoltare, n funcie de natura aplicaiei. .rin testare nu se poate demonstra corectitudinea unui program. )ceasta deoarece n cele mai multe cazuri este practic imposibil s se testeze programul pentru toate seturile de date de intrare care pot conduce la execuii diferite ale programului. "estarea poate doar s demonstreze prezena erorilor ntr&un program. /ntr&un sens, testarea este un proces distructiv, deoarece urmrete s determine o comportare a programului neintenionat de proiectani sau implementatori. Din acest punct de vedere testarea nu trebuie s fie fcut de persoanele care au contribuit la dezvoltarea programului. .e de alt parte conoaterea structurii programului si a codului poate fi foarte utila pentru alegerea unor date de test relevante. 1

"estarea n vederea verificrii programului folosete date de test alese de participanii la procesul de dezvoltare a programului. 0a este efectuat la mai multe nivele1 la nivel de unitate funcional, de modul, de subsistem, de sistem. "estarea n vederea validrii programului, numit i testare de acceptare, are drept scop stabilirea faptului c programul satisface cerinele viitorilor utilizatori. 0a se efectueaz n mediul n care urmeaz s funcioneze programul, deci folosindu&se date reale. .rin testarea de acceptare pot fi descoperite i erori, deci se efectueaz i o verificare a programului.

2. Testarea pe parcursul ciclului de via al unui pro ra!.


2.1. "estele 2unitare2 "estarea unui modul $o funcie, o clas, unitate .ascal, un pac#et )D), etc.% este realizat de programatorul care implementeaz modulul. "oate celelalte teste sunt efectuate, n general, de persoane care nu au participat la dezvoltarea programului. 3copul testarii unui modul este de a se stabili ca modulul este o implementare corecta a specificatiei sale $conforma cu specificatia sa%. 3pecificatia poate fi neformala sau formala. De exemplu1 & o specificaie de pre i post condiii pentru o funcie sau procedur4 & un invariant al clasei, care specific mulimea strilor posibile ale fiecrui obiect din clasa respectiv, mpreun cu specificaii de pre i post condiii la nivelul funciilor membru4 & o specificaie algebric a clasei4 & o specificaie 5(566 etc. 7n cursul testarii unui modul, modulul este tratat ca o entitate independent, care nu necesit prezena altor componente ale programului. "estarea izolat a unui modul ridic dou probleme1 simularea modulelor apelate de cel testat4 2

simularea modulelor apelante. 'odulele prin care se simuleaz modulele apelate de modulul testat se numesc

module 2ciot2 $n englez, 2stub2% . Un modul 2ciot2 are aceeai interfa cu modulul testat i realizeaz n mod simplificat funcia sa. De exemplu, dac modulul testat apeleaz o funcie de sortare a unui vector, cu antetul1 void sortare$int n, int 8lista%4 se poate folosi urmtoarea funcie 2ciot21 void sortare$int n, int 8lista% 9 int i4 printf$2 :n ;ista de sortat este12%4 for$i<+4 i=n4 i66% printf$2-d2, lista>i?%4 (( se citeste lista sortata, furnizata de testor for$i<+4 i=n4 i66% scanf$2-d2, lista>i?%4 @ Un modul 2ciot2 se poate reduce eventual la o tabel de perec#i de forma1 2valori ale parametrilor de intrare la un apel & rezultatul prevzut2. azurile de apel ale modulului testat de ctre celelalte module ale programului sunt simulate n cadrul unui 2modul driver2. 'odulul driver apeleaz modulul testat furnizndu&i ca date de intrare datele de test ale modulului. Datele de test pot fi generate de modulul driver, pot fi preluate dintr&un fiier sau furnizate de testor ntr&o manier interactiv. 'odul driver

'odulul testat

'odul ciot

'odul ciot

Aigura "1. 3tructura programului executabil pentru testarea izolata a unui modul. *

2.2. "estele de integrare

3unt dedicate verificrii interaciunilor dintre module, grupuri de module, subsisteme, p!n la nivel de sistem. 0xist mai multe metode de realizare a testelor de integrare. "estele de integrare presupun, ca i testele unitare, realizarea de module 2ciot2 i module 2driver2. Bumrul de module 2driver2 i de module 2ciot2 necesare n testele de integrare depinde de ordinea n care sunt testate modulele $metoda de integrare%. "estele de integrare necesit de asemenea instrumente de gestiune a versiunilor i a configuraiilor. 2.2.1. 'etoda 2big&bang2 3unt integrate ntr&un program executabil toate modulele existente la un moment dat. 'odulele 2driver2 i 2ciot2 necesare sunt de asemenea integrate. 'etoda este periculoas cci toate erorile apar n acelai timp i localizarea lor este dificil. 2.2.2. 7ntegrare progresiva 'etodele de integrare progresiv sunt mult mai eficiente. 7n fiecare moment se adaug ansamblului de module integrate numai un singur modul. )stfel, erorile care apar la un test provin din modulul care a fost ultimul integrat. 2.2.2.1. 7ntegrarea ascendent $2de Cos n sus2% 3e ncepe prin testarea modulelor care nu apeleaz alte module, apoi se adaug progresiv module care apeleaz numai modulele deCa testate, p!n c!nd este asamblat ntregul sistem. 'etoda necesit implementarea c!te unui modul 2driver2 pentru fiecare modul al programului $i nici un modul 2ciot2%. )vantaCele testrii de Cos n sus

Bu sunt necesare module 2ciot2. 'odulele 2driver2 se implementeaz mult mai uor dec!t modulele 2ciot2. 0xist c#iar instrumente care produc automat module 2driver2. DezavantaCele testrii de Cos n sus 1. .rogramul pe baza cruia se efectueaz validarea cerinelor este disponibil numai dup testarea ultimului modul. 2. orectarea erorilor descoperite pe parcursul integrrii necesit repetarea procesului de proiectare, codificare i testare a modulelor. .rincipalele erori de proiectare sunt descoperite de abia la sf!rit, c!nd sunt testate modulele principale ale programului. ceea ce, n general, conduce la reproiectare i reimplementare. 2.2.2.2. 7ntegrarea descendent $2de sus n Cos2% 3e ncepe prin testarea modulului principal, apoi se testeaz programul obinut prin integrarea modulului principal i a modulelor direct apelate de el, i aa mai departe. 'etoda presupune implementarea unui singur modul 2driver2 $pentru modulul principal% i a c!te unui modul 2ciot2 pentru fiecare alt modul al programului. 7ntegrarea descendent poate avea loc pe parcursul unei implementri descendente a programului. 'odulul principal este testat imediat ce a fost implementat, moment n care nu au fost nc implementate modulele apelate de el. De aceea, pentru testare este necesar s se implementeze module 2ciot2. 7n continuare, pe msur ce se implementeaz modulele de pe nivelul ierar#ic inferior, se trece la testarea lor folosind alte module EciotF, .a.m.d. 7n fiecare pas este nlocuit un singur modul 2ciot2 cu cel real. )vantaCele testrii de sus n Cos 1. 0rorile de proiectare sunt descoperite timpuriu, la inceputul procesului de integrare, atunci c!nd sunt testate modulele principale ale programului. )ceste erori fiind corectate la nceput, se evit reproiectarea i reimplementarea maCoritii componentelor de nivel mai cobor!t, aa cum se nt!mpl c!nd erorile respective sunt descoperite la sf!ritul procesului de integrare. 2. .rogramul obtinut este mai fiabil caci principalele module sunt cel ,

mai mult testate. *. .rin testarea modulelor de nivel superior se poate considera c sistemul n ansamblul su exist dintr&o faza timpurie a dezvoltrii i deci se poate exersa cu el n vederea validrii cerinelor4 acest aspect este de asemenea, foarte important n privina costului dezvoltrii sistemului. DezavantaCele testrii de sus n Cos 1. 0ste necesar s se implementeze c!te un modul 2ciot2 pentru fiecare modul al programului, cu excepia modulului principal. 2. 0ste dificil de simulat prin module 2ciot2 componente complexe i componente care conin n interfa structuri de date. *. /n testarea componentelor de pe primele nivele, care de regul nu afieaz rezultate, este necesar s se introduc instruciuni de afiare, care apoi sunt extrase, ceea ce presupune o nou testare a modulelor. )ceste dezavantaCe pot fi reduse aplicand te#nici #ibride, de exemplu, folosind n locul unor module 2ciot2, direct modulele reale testate. 7ntegrarea nu trebuie sa fie strict descendenta. De exemplu, experienta arata ca este foarte util sa se nceapa prin integrarea modulelor de interfa utilizator. )ceasta permite continuarea integrrii n condiii mai bune de observare a comportrii programului.

2.*. "estele de sistem

)cestea sunt teste ale sistemului de programe i ec#ipamente complet. 3istemul este instalat i apoi testat n mediul su real de funcionare. 3unt teste de conformitate cu specificaia cerintelor de sistem $softGare% 1 teste functionale, prin care se verifica satisfacerea cerintelor functionale teste prin care se verifica satisfacerea cerintelor ne&functionale 1 o de performan, o de fiabilitate, o de securitate, etc. )desea, testele de sistem ocup cel mai mult timp din ntreaga perioad de testare. H

2.D. "estele de acceptare $validare%

3unt teste de conformitate cu produsul solicitat, conform contractului cu clientul $& I3pecificatia cerintelor utilizatorilor%. )ceste teste sunt uneori conduse de client. .entru unele produse softGare, testarea de acceptare are loc n dou etape1 1."estarea alfa1 se efectueaz folosindu&se specificaia cerinelor utilizatorilor, p!n c!nd cele dou pri cad de acord c programul este o reprezentare satisfctoare a cerinelor. 2."estarea beta1 programul este distribuit unor utilizatori selecionai, realiz!ndu& se astfel testarea lui n condiii reale de utilizare.

2.,. "estele regresive. 3e numesc astfel testele executate dup corectarea erorilor, pentru a se verifica dac n cursul corectrii nu au fost introduse alte erori. )ceste teste sunt efectuate de regul n timpul ntreinerii. .entru uurarea lor este necesar s se ar#iveze toate testele efectuate n timpul dezvoltrii programului, ceea ce permite, n plus, verificarea automat a rezultatelor testelor regresive

". #eter!inarea ca$urilor de test


"estarea unui modul, a unui subsistem sau c#iar a ntregului program presupune stabilirea unui set de cazuri de test. Un caz de test cuprinde1 & un set de date de intrare4 J

& funcia ( funciile exersate prin datele respective4 & rezultatele $datele de ieire% ateptate4 /n principiu $teoretic% testarea ar trebui s fie ex#austiv, adic s asigure exersarea tuturor cilor posibile din program. )desea o astfel de testare este imposibil, de aceea trebuie s se opteze pentru anumite cazuri de test. .rin acestea trebuie s se verifice rspunsul programului at!t la intrri valide c!t i la intrri nevalide. 3unt dou metode de generare a cazurilor de test, care nu se exclud, de multe ori fiind folosite mpreun. )mbele metode pot sta la baza unor instrumente de generare automat a datelor $cazurilor% de test1 1. azurile de test se determin pe baza specificaiei componentei testate, fr cunoaterea realizrii ei4 acest tip de testare se numete testare Ecutie neagraF $EblacK boxF%. 2. azurile de test se determin prin analiza codului componentei testate . )cest tip de testare se mai numete i testare Ecutie transparentF, sau testare structural. *.1. "estarea Ecutie neagrF. azurile de test trebuie s asigure urmtoarele verificri1 & reacia componentei testate la intrri valide4 & reacia componentei la intrri nevalide4 & existena efectelor laterale la execuia componentei, adic a unor efecte care nu rezult din specificaie4 & performanele componentei $dac sunt specificate%. Deoarece n marea maCoritate a cazurilor testarea nu poate fi efectuat pentru toate seturile de date de intrare $testare ex#austiv%, n alegerea datelor de test plec!nd de la specificaii se aplic unele metode fundamentate teoretic precum i o serie de euristici. )legerea cazurilor de test folosind clasele de ec#ivalen

azurile de test pot fi alese partiion!nd at!t datele de intrare c!t i cele de ieire ntr&un numr finit de clase de ec#ivalen. 3e grupeaz ntr&o aceeai clas datele care, conform specificaiei, conduc la o aceeai comportare a programului. M dat stabilite clasele de ec#ivalen ale datelor de intrare, se alege c!te un eantion $de date de test% din fiecare clas. De exemplu, dac o dat de intrare trebuie s fie cuprins ntre 1+ i 1N, atunci clasele de ec#ivalen sunt1 1% valori = 1+ 2% valori ntre 1+ i 1N *% valori I 1N 3e pot alege ca date de test1 N, 1,, 2+. 0xperiena arat c este util s se aleag date de test care sunt la frontiera claselor de ec#ivalen. )stfel, pentru exemplul de mai sus ar fi util s se testeze programul pentru valorile de intrare 1+ i 1N. )lte cazuri de test se aleg astfel nc!t la folosirea lor s se obin eantioane din clasele de ec#ivalen ale datelor de ieire $dun interiorul si de la frontierele lor%. 0xemplu1 Aie un program care trebuie s produc ntre * i H numere cuprinse ntre 1+++ i 2,++. )tunci se vor alege intrri astfel nc!t ieirea programului s fie1 & * numere egale cu 1+++ & * numere egale cu 2,++ & H numere egale cu 1+++ & H numere egale cu 2,++ & rezultat eronat1 mai puin de * numere sau mai mult de H numere sau valori n afara intervalului >1+++..2,++? & ntre * i H numere cuprinse ntre 1+++ i 2,++ 7n alegerea datelor de test trebuie s se elimine redundanele rezultate din considerarea at!t a claselor de ec#ivalen de intrare c!t i a celor de ieire. Unele programe trateaz datele de intrare n mod secvenial. /n aceste cazuri se pot detecta erori n program test!ndu&l cu diverse combinaii ale intrrilor n secven. 'etoda de partiionare n clase de ec#ivalen nu aCut n alegerea unor astfel de N

combinaii. Bumarul de combinaii posibile este foarte mare c#iar i pentru programe mici. De aceea nu pot fi efectuate teste pentru toate combinaiile. n aceste cazuri este esenial experiena celui care alctuiete setul de cazuri de test. "estarea 2cutie neagr2 este favorizat de existena unei specificaii formale a componentei testate. 0xemplu1 Aie o funcie de cutare a unui numr ntreg ntr&un tablou de numere ntregi, specificat astfel1 int cauta $int x>?, int nrelem, int numar%4 pre 1 nrelem I + and e%ist i in >+..nrelem&1? 1 x>i? < numar post 1 x E>cauta$x,nrelem,numar%? < numar and xO < xPP error 1 cauta$x,nrelem,numar% < &1 and xO < xPP 7ntrrile valide sunt cele care satisfac pre&condiia. 0fectele laterale ale funciei 2cauta2 s&ar putea reflecta n modificarea unor variabile globale. .entru evidenierea lor ar trebui ca la fiecare execuie de test a funciei s se vizualizeza valorile variabilelor globale nainte i dup apelul funciei. )ceste verificri pot fi limitate, nlocuindu&se cu inspectarea codului funciei, din care rezult evantualitatea modificrii unor variabile globale. 3etul minim de date de test trebuie s verifice funcia n urmtoarele situaii1 1% tablou vid $nrelem<+% 2% tablou cu un singur element $nrelem<1% a% valoarea parametrului 2numar2 este n tablou b% valoarea parametrului 2numar2 nu este n tablou *% tablou cu numr par de elemente $2nrelem2 este un numr par% a% 2numar2 este primul n tablou b% 2numar2 este ultimul n tablou c%2numar2 este ntr&o poziie oarecare a tabloului d%2numar2 nu este n tablou D% tablou cu numr impar de elemente $2nrelem2 este impar% i a,b,c,d ca la punctul *. 1+

Din specificaie rezult c funcia nu trebuie s modifice tabloul4 de aceea, apelul su n programul de test trebuie s fie precedat i urmat de vizualizarea parametrului tablou. 3etul cazurilor de test ar putea fi1 1% intrri1 orice tablou nrelem<+ orice numr ieiri 1 valoarea funciei < &1 tabloul nemodificat 2% intrri1 x>+? < 1+ nrelem<1 numr < 1+ ieiri 1 valoarea funciei < + tabloul nemodificat1 x>+?< 1+ *% intrri1 x>+?< 1+ nrelem<1 numr < 1, ieiri 1 valoarea funciei < &1 tabloul nemodificat1 x>+? < 1+ D% intrri1 x>+? < 1+, x>1? < 2+ nrelem<2 numr < 1+ ieiri 1 valoarea funciei < + tabloul nemodificat1 x>+? < 1+, x>1? < 2+ ............................................................................................................ 7n alegerea cazurilor de test s&au folosit urmtoarele euristici1 programele de cutare prezint erori atunci c!nd elementul cutat este primul sau ultimul in structura de date4 de multe ori programatorii negliCeaz situaiile n care colecia prelucrat n program are un numr de elemente neobinuit, de exemplu zero sau unu4 11

uneori, programele de cutare se comport diferit n cazurile1 numr de elemente din colecie par, respectiv numr de elemente din colecie impar4 de aceea sunt testate ambele situaii oncluzii1 1. 3etul de cazuri de test a fost determinat numai pe baza specifica iei componentei i a unor euristici $este vorba de experien a celui care efectueaz testele%, deci fr s se cunoasc structura intern a componentei, care este tratat ca o Ecutie neagrF. 0ventuala examinare a codului surs nu urmrete analiza fluxului datelor i a cilor de execuie, ci doar identificarea variabilelor globale cu care componenta interacioneaz. 2. lasele de ec#ivalen se determin pe baza specificaiei. *. 3e aleg drept cazuri de test eantioane din fiecare clas de ec#ivalen a datelor de intrare. 0xperiena arat c cele mai utile date de test sunt acelea aflate la frontierele claselor de ec#ivalen. D. azurile de test alese verific componenta doar pentru un numr limitat de eantioane din clasele de ec#ivalen ale datelor de intrare4 faptul c din testare a rezultat c ea funcioneaz corect pentru un membru al unei clase nu este o garanie c va funciona corect pentru orice membru al clasei. ,. 3e determin de asemenea clasele de ec#ivalen ale datelor de ieire i se aleg pentru testare datele de intrare care conduc la date de ieire aflate la frontierele acestor clase. H. .artiionarea n clase de ec#ivalen nu aCut la depistarea erorilor datorate secvenierii datelor de intrare. 7n aceste cazuri este util experiena programatorului. Qeprezentarea comportrii programului printr&o diagram de stri&tranziii poate fi folositoare n determinarea secvenelor de date de intrare de utlizat n testarea programului. "estele Ecutie neagrF, numite i teste funcionale sunt utile nu numai pentru testarea programului. 0le pot fi utilizate $ca teste statice% pentru verificarea unei specificaii intermediare fa de o specificaie de nivel superior. E3lbiciunileF testelor funcionale1

12

Bu este suficient s se verifice c programul satisface corect toate funciile specificate4 unele proprieti interne, nespecificate, ca de exemplu timpul de rspuns, nu sunt verificate4 .rogramul este testat pentru Eceea ce trebuie s facF conform specificaiilor i nu i pentru ceea ce face n plus, de exemplu pentru ca implementarea s fie mai eficient sau pentru a facilita reutilizarea4 7n absena unui standard n privina specificaiilor formale, te#nicile de testare functional sunt eterogene

Testarea structural
)cest tip de testare se bazeaz pe analiza fluxului controlului la nivelul componentei testate. .rincipalul instrument folosit n analiz este graful program sau graful de control. )cesta este un graf orientat, ale crui noduri sunt de dou tipuri1 noduri care corespund Eblocurilor de instruciuni indivizibile maximaleF i noduri care corespund instruciunilor de decizie. Rlocurile de instruciuni indivizibile maximale sunt poriuni liniare maximale de instruciuni care se execut ntotdeauna n aceeai secven. Aiecare bloc are un singur punct de intrare i un singur punct de ieire. )rcele reprezint transferul controlului ntre blocurile(instruciunile componentei program. Sraful program are un nod unic de intrare i un nod unic de ieire. Dac exist mai multe puncte de intrare sau mai multe puncte de ieire, acestea trebuie s fie unite ntr&unul singur$care se adaug suplimentar%. Bodul de intrare are gradul de intrare zero, iar cel de ieire are gradul de ieire zero. Aie urmtorul text de program1 f1<fopen$T.%4 f2<fopen$T.%4 fscanf$f1, F-fF, x%4 fscanf$f1, E-fF, U%4 z<+4 G#ile$xI<U% 9 x&<U4 z664 @ 1*

fprintf$f2, E-dF, z%4 fclose$f1%4 fclose$f2%4 "extul este decupat n urmtoarele blocuri1 1. f1<fopen$T.%4 f2<fopen$T.%4 fscanf$f1, F-f, x%4 fscanf$f1, E-f, U%4 z<+ 2. G#ile$xI<U% *. x&<U4 z664 D. fprintf$f2, E-dF, z%4 fclose$f1%4 fclose$f2%4 Sraful de control este redat n figura "2.

3tart 1 2 xI<U * D

3top
Aigura "2 3e consider cile care ncep cu nodul de intrare i se termin cu nodul de ieire. "estarea structural const n execuia componentei testate pentru date de intrare alese astfel nc!t 1D

s fie parcurse unele dintre aceste ci. Bu este necesar, i n general este imposibil, s se execute toate cile de la intrare la ieire ale unui program sau ale unei componente program. .rezena ciclurilor conduce la un numr foarte mare $deseori infinit% de ci. De asemenea, anumite ci sunt ne&executabile. "estele structurale favorizeaz evidenierea urmtoarelor tipuri de erori logice1 1. i absente n graful program & ca urmare a ignorrii unor condiii $de exemplu1 test de mprire la zero%4 2. 3electarea unei ci necorespunztoare & datorit exprimrii incorecte $de multe ori incomplete% a unei condiii4 *. )ciune necorespunztoare sau absent$de exemplu1 calculul unei valori cu o metod incorect, neatribuirea unei valori unei anumite variabile, apelul unei proceduri cu o list de argumente incorect, etc.%. Dintre acestea, cel mai simplu de depistat sunt erorile de tip *. .entru descoperirea lor este suficient s se asigure execuia tuturor instruciunilor programului. )legerea cilor de testat are loc pe baza unor Ecriterii de acoperireF a grafului de control. Dintre acestea cele mai cunoscute sunt1 0xecuia tuturor instruciunilor azurile de test se aleg astfel nc!t s se asigure execuia tuturor instruciunilor componentei testate. )cesta este un criteriu de testare minimal. 0l nu este ntotdeauna satisfctor. De exemplu, pentru testarea componentei cu graful de mai Cos, pe baza criteriului execuiei tuturor instruciunilor, este suficient s se aleag date de test care asigur execuia conditiei si a instruciuilor 71 i 72. Bu se testeaz cazurile n care condiia are valoarea A);30. "ransferul controlului pentru astfel de cazuri poate fi eronat.

A);30 condiie

"QU0

71

1,

Aigura "*.
"raversarea tuturor arcelor azurile de test se aleg astfel nc!t s se asigure traversarea fiecrui arc al grafului program cel puin pe o cale. .e baza acestui criteriu se va putea verifica dac transferul controlului este corect pentru valoarea A);30 a condiiei, n exemplul de mai sus. 7n acelai timp, criteriul nu impune traversarea mai mult de o dat a unui ciclu. )numite erori apar numai atunci c!nd un ciclu este traversat de mai multe ori. "raversarea tuturor cilor .e baza acestui criteriu ar trebui ca testele s asigure traversarea tuturor cilor componentei testate. .entru maCoritatea programelor nu se poate aplica acest criteriu, deoarece numrul de ci de execuie este infinit. constant dat. .roblema alegerii cazurilor de test const din trei subprobleme distincte1 selectarea cilor de testat4 alegerea datelor de test pentru execuia fiecrei ci selectate4 determinarea rezultatelor care trebuie s se obin la fiecare test. 7n continuare prezentm o metod de alegere a datelor de test pe baza criteriului traversrii tuturor arcelor grafului de control. 'etoda presupune parcurgerea urmtoarelor etape1 1. 3e determin setul cilor de testat, , astfel nc!t1 a% c este o cale de la nodul de intrare la nodul de iesire4 riteriul poate fi restricionat, de exemplu asigur!nd traversarea tuturor cilor cu o lungime mai mic sau egal cu o

b% fiecare arc din graful de control este cuprins ntr&o cale c c% lung $c% < minima 1H

c 2. 3e determin predicatul fiecrei ci, c , Qc$7%, unde 7 < $i1, i2, T, in% este vectorul variabilelor de intrare4 *. .entru fiecare Qc$7%, c , se determin un set de atribuiri Vc pentru variabilele de intrare care satisfac predicatul cii1 Qc$Vc% < true )tunci setul datelor de test este1 D" < 9 Vc W c , Vc D7, Qc$Vc% < true @, n unde D7 < V DiK iar DiK este domeniul de valori al variabilei de intrare iK. K<1 D. .entru fiecare Vc D", se determina valorile corecte ale variabilelor de iesire E%e!plu Aie urmatorul graf program 1

Aigura "D Mbs1 testul v2Iv1 trebuie inlocuit cu v2Ii1. 1J

1% )legerea cailor 1 3e poate alege setul de ci 1 < 9c1, c2 @, unde c1 < 91,2,*,D,,,*,H,J@ c2 < 91,2,*,H,J@ 7n afara condiiilor menionate s&au mai avut n vedere urmtoarele criterii1 alegerea unei ci care s nu conina ciclul alegerea unei ci care s conina ciclul, parcurg!ndu&l o singura dat, pentru ca lungimea cii s fie minim.

2% Determinarea predicatelor de cale

M metod de determinare a predicatului unei ci const n concatenarea condiiilor de ramificare de pe calea respectiv pe msura ce sunt nt!lnite atunci c!nd calea este parcursa de la nodul de ieire pan la cel de intrare. "otodat, la nt!lnirea unei atribuiri, U 0, dac U face parte din expresia curent a predicatului, se substituie U cu 0. 7n unele cazuri, predicatul obinut printr&o singur parcurgere a unui ciclu este fals pentru orice atribuire a variabilelor de intrare. Un astfel de caz corespunde unei ci neexecutabile. 7n consecint se va alege un predicat n care ciclul este parcurs de dou sau de mai multe ori. onstruirea predicatelor de cale Qc1 < v2 I i1 * se substituie v2 cu $v2 6 v*% Qc1 < $v26 v*% I i1 , Qc1 < $v26 $v*62%% I i1 D Qc1 < $v26 v*62% I i1 X$v2 I i1% * Qc1 < $$v26 v*%6v*62% I i1 X$$v26 v*% I i1% 1L

2 Qc1 < $D I i1% X $1 I i1% 1 Qc1 < $D I i1% $i1 I< 1% $i1 I< +% =<I Qc1 < $1 =< i1 = D% . alea c1 este executat pentru orice valoare a lui i1 care satisface acest predicat. 3tabilirea rezultatelor execuiei fiecrei ci pentru fiecare set de date de test ales, necesit cunoaterea transformrii realizate de componenta analizat asupra datelor de intrare. )ceasta rezult din specificaia componentei. 7n cazul de fa trebuie s se stabileasc ce valoare trebuie sa aib iesirea e1 pentru fiecare valoare aleas pentru i1. .rogramul reprezentat prin graful de control analizat calculeaz numarul maxim de termeni ai sumei 16*6,6T6$2C61%, C I< +, care pot fi adunati a.. suma lor s fie mai mica dec!t i1. )stfel se poate verifica c pentru orice 1=< i1 =<D, e1 < 1, cci dac s&ar aduna doi termeni, 16* < D, DIi1. azul de test al cii c1 poate fi1 i1<2, e1 < 1. alea c2 < 91,2,*,H,J@ Qc2 < v2 I i1 * Qc2 < $v26 v*% I i1 2 Qc2 < + 6 1 I i1 1 Qc2 < $i1 = 1% $i1 I< +% =<I Qc2 < $+ =< i1 = 1% <I Qc2 < $i1 < +%

azul de test1 i1 < +, e1 < +.

E3labiciunileF testelor structurale sunt1 1N

testele selectionate depind numai de structura programului4 ele trebuie recalculate la fiecare modificare4 nu pot fi reutilizate eficient de la o versiune la alta testele selecionate acoper cazurile legate de ceea ce EfaceF componenta testat i nu de ceea ce Etrebuie s facF4 astfel, dac un caz particular a fost uitat in faza de implementare, testul structural nu releva aceasta deficien4 el trebuie deci completat cu testul funcional. 'ai exact trebuie s se nceap cu testarea funcional care se completez cu testarea structural.

Testele statistice "estele statistice se efectueaza in timpul testarii de sistem. 3e numesc astfel testele n care datele de test se aleg aleator, dup o lege de probabilitate care poate fi1 uniform pe domeniul datelor de intrare al programului testat& aceste teste se mai numesc teste statistice uniforme4 similar cu distribuia datelor de intrare estimate pentru exploatarea programului Y aceste teste se mai numesc teste statistice operaionale. Qezultatele experimentale ale testelor statistice uniforme sunt inegale. .entru unele programe s&au dovedit foarte eficiente, ele conduc!nd la descoperirea unor erori nsemnate. .entru altele s&au dovedit ineficiente. M posibil explicaie ar consta n faptul c ele asigur o bun acoperire n cazul programelor pentru care domeniile de intrare ale cilor de execuie au o probabilitate comarabil. 0le nu acoper cile care corespund tratrii excepiilor. De aceea trebuie completate cu teste folosind date de intrare n afara domeniului intrrilor. "estele statistice operaionale sunt n general teste de fiabilitate. .rin ele nu se urmrete n general descoperirea de erori ci mai ales comportarea programului n timp. '"RA $'ean "ime RetGeen Aailures%. derile observate n timpul acestor teste permit estimarea masurilor de fiabilitate, cum ar fi

2+

21

Вам также может понравиться