Documente Academic
Documente Profesional
Documente Cultură
Echipa de autori:
Gremalschi Anatol
Nastasenco Veaceslav
Spnu Valentina,
Prvan Eugen
Bagrin Diana
Recenzeni:
Pentru a asigura calitatea i sigurana aplicaiilor prduse soft se pune un accent deosebit pe testarea
acestor din urm. Testarea de produse soft a devenit o profesie tehnic foarte important.
Urmtoare exemple pot ilustra foarte bine necesitatea testrii produselor soft:
Dezvoltarea aplicaiilor soft implic o serie de activiti, n care posibilitatea erorii umane este
foarte ridicat. Testarea este un element-cheie n procesul de dezvoltare, i reprezint o ultim
recapitulare a specificaiilor, design-ului i codului.
Testarea produselor soft, prin definiie, urmrete focalizarea pe procesul de identificare a
posibilelor erori de program, erori, care ar putea avea un impact negativ asupra produsului, i prin
urmare asupra clienilor. Satisfacia clienilor este cheia reuitei oricrei afaceri, i asta nu mai este
o necunoscut.
Aceasta presupune c produsul oferit s fie de calitate ridicat, i s nu produc erori n timpul
utilizrii de ctre client. Calitatea ridicat nu poate fi obinut doar cu ajutorul unei echipe de
programatori de excepie. Este deja bine tiut faptul c orict de bine pus la punct ar fi produsul
dezvoltat, totui acesta va conine erori.
Implicarea testrii n procesul de producie aduce urmtoarele avantaje:
Organizare disciplinat a procesului de dezvoltare i testare matur a procesului de
producie.
Responsabilii i Managerii de proiect induc o linie bine trasat n scopul urmririi exacte a
procesului de producie.
nelegerea importanei calitii n procesul de producie, calitate care poate fi obinut doar
n urma unei testri profesionale.
Impunerea unor reguli i standarte care n timp vor duce la livrarea unor produse de cea
mai nalt calitate, i a unor soluii de cea mai nalt calitate pentru clienii organizaiei.
fiabilitate siguran
3
2. Racheta Ariane 5
- Autodistrugerea dup o defeciune la 40 s de la lansare (1996)
Cauza: conversia 64-bit float 16-bit int genereaz o excepie de depire, netratat n
programul ADA
Cost: 500 milioane dolari (racheta), 7 miliarde dolari (proiectul)
Analiz retrospectiv
principala cauz: reutilizarea nejudicioas a produsului soft
cod preluat de la Ariane 4, fr re-analiz corespunztoare.
De obicei orice eroare a produsului soft este numit bug, ns acest termen nu poate fi acceptat
cnd se completeaz diferite rapoarte despre testarea softului. n cadrul acestui curs vom folosi
termenul: eroare a produsului soft.
nainte de a formula definiia erorii a produsului soft avem nevoie de un document de reper:
specificaia produsului soft.
Specificaia produsului este un acord al echipei de dezvoltare a produsului soft, n care este defini:
cum ar trebui el s fie, cum este ntr-adevr, ce trebuie s fac i ce nu trebuie s fac acest produs.
Definiie. Erorile produsului soft apar cnd una sau mai multe dintre urmtoarele afirmaii sunt
adevrate:
1.
2.
3.
4.
5.
Aceast definiie a erorilor acoper o mare parte de probleme, deacea testorii folosesc aceste reguli
pentru a identifica diferite tipuri de probleme n aplicaiile soft.
1.1.Cauzele apariiei erorilor
Poate fi surprinztor, dar cel mai mic procent de erori sunt cele provenite de programare.
Cele mai multe erori sunt cauzate de deficienele din specificaie ( 60%), uneori
specificaia pur i simplu nu este scris. Alte motive specificaia nu este sufucient de
complet, a fost incontinuu modificat i nu a fost adus la cunotina ntregii echipe de dezvoltare.
Alt surs de erori este etapa de proiectare ( 30%). Cauzele apariiei erorilor aici sunt
similare cu cele din specificaii ( modificri, comunicarea rea etc.).
Relativ puine (uneori sub 15%) sunt erorile directe de programare. Ele pot aprea din cauza
complexitii softului, a documentaiei insuficiente (n special n codul, care a fost modificat), a
timpului insuficient planificat pentru programare sau a erorilor de proiectare. Uneori programatorii
nu neleg corect cerinele, sau cerinele nu sunt formulate bine.
1.2.Costul erorilor
Erorile depistate i fixate in faza de scriere a specificaiilor nu cost practic nimic, cele care nu au
fost depistate nainte de faza implementrii i testrii pot ajunge la sute de dolari. Dac ns clientul
a gsit defecte dup livrarea i lansarea produsului, costul erorilor poate crete de la mii la milioane
de dolari. Deci, costul erorilor poate crete exponenial avansnd n procesul de producie de la
specificare pn dup livrare.
1.3. Rolul i scopurile testerului n procesul de dezvoltare produse soft
Definiia 1. Scopul testorului este de a depista erorile softului.
Se poate rula programul i confirma c el funcioneaz, fr a pune accentul pe detectarea erorilor.
Dac se testeaz doar componentele funcionale, pot fi omise multe erori. n cazul, n care erorile
nu au fost depistate lpromt, clientul risc s piard muli bani. Deci, testorul nu trebuie s se
concentreze doar pe detectarea erorilor, el trebuie s se gndeasc cum s fac acest lucru ct mai
curnd posibil.
5
De aici avem:
Definiia 2. Scopul testorului este de a depista erorile softului ct mai devreme posibil.
Dar nici aceasta nu este suficient. Testorul este ochiul clientului, primul care ncearc produsul i
el dorete calitate.
Deci:
Definiia 3. Scopul testorului este de a depista erorile softului ct mai devreme posibil i a se
asigur c ele au fost fixate i luate msuri n legtur cu aceasta.
Aceast definiie final este foarte important. La fel este important faptul c fixarea defectelor nu
implic neaprat corectarea softului. n legtur cu aceasta poate fi adugat un comentariu n
manualul utilizatorului sau poate fi fcut un seminar special cu utilizatorii.
Calitile unui testor bun
Cum am menionat mai sus testarea produsului soft este o profesie tehnic. Testorii trebuie
implicai n procesul de dezvoltare a produsului soft nc din fazele incipiente, pentru a asigura
calitatea bun a produsului. Pentru a fi angajat i preuit un testor trebuie s posede urmtoarele
caliti:
1. Trebuie s fie un explorator. Testorul produselor soft este cel care experimenteaz cu softuri noi ncercndu-le funcionalitile.
2. Trebuie s fie nenduplecat. Testorul produselo soft este mereu n cutare. El caut erori
prin toate cile posibile.
3. Trebuie s fie creativ. Testarea superficial nu este suficient pentru testor. El trebuie s
gndeasc creativ i s intuiasc unde poate gsi erori.
4. Trebuie s fie perfecionist. Testorii tind spre perfeciune, cu toate c neleg c n industria
produselor soft ea este de neatins.
5. Trebuie s posede o bun judecat. Ei trebuie s decid ce trebuie de testat, ct timp i dac
o oarecare problem este ntr-adevr o eroare sau nu.
6. Trebuie s aib tact i s fie bun diplomat. El este cel care aduce vetile rele
programatorului.
7. Trebuie s fie perseverent. Erorile gsite nu totdeauna sunt vizibile i uneori sunt greu de
descris. Testorul trebuie s-i poat expune punctul de vedere i s poat demonstra
necesitatea fixrii i posibil corectrii erorilor gsite.
Un testor nu trebuie s fie numaidect un programator, cunotinele din diferite domenii
(economie, nvmnt, aviaie, medicin, culinrie, construcii) pentru care sunt dezvoltate
produse produse soft vor fi de un imens ajutor pentru un testor.
1.4. Termeni i definiii ale testrii
Psihologia testrii
Testarea produselor soft este o disciplin tehnic, ns ea implic importante consideraii
economice i psihologice.
Ideal ar fi testarea tuturor combinaiilor posibile ale intrrilor i ieirilor programului. ns n cele
mai multe cazuri aceasta este imposibil, deoarece chiar i un program simplu poate avea sute i
chiar mii de combinaii ale intrrilor i ieirilor.
6
Crearea cazurilor de test pentru toate combinaiile este nepractic, pentru ca aceasta va cere resurse
umane i financiare enorme, iar procesul poate dura timp ndelungat. Plus la aceasta mai trebuie
de luat n consideraie i viziunea testorului fa de crearea unui test de succes. Atitudinea
testorului fa de produs este de asemenea foarte important. Pentru ca procesul de testare s nu se
transforme ntr-o goan haotic dup erori este benefic de respectat unele principii ale testrii pe
care le-a artat practica testrii i timpul i de cunoscut nite tehnici de testare, pentru a sistematiza
acest proces.
Definiii ale testrii
O cauz important a calitii proaste a produselor soft este definirea incorect a procesului de
testare. De exemplu se spune c:
1. Testarea e procesul de a demonstra c programul nu are erori (or acest lucru este imposibil
folosind doar testarea)
sau
2. Scopul testrii este de a arta c produsul este performant i funcioneaz corect
sau
3. Testarea este procesul prin care se demonstreaz c produsul face ceea ce trebuie s fac
Aceste definiii nu sunt rele doar c sunt cam pe dos. Este cunoscut c aciunea de testare a unui
program se deosebete de celelalte faze prin care acesta trece (specificare, proiectare, programare)
prin caracterul su n aparen "demolator". ntr-adevr, n timp ce alte faze au o esen
constructiv, testarea are n aparen un caracter mai degrab distructiv, deoarece scopul acestei
aciuni este de a pune n eviden proasta funcionare a produsului obinut. Din punct de vedere
psihologic programatorul trebuie s adopte n aceasta etap o atitudine "dumnoas" fa de
creaia sa i s-i expun defectele.
Esena procesului este fr ndoial tot constructiv, scopul su fiind de a pune n operare real un
produs la parametrii prevzui.
Deci cele mai adecvate definiii ale testrii ar fi:
1. Testarea e procesul prin care se execut un program cu intenia de a gsi erori (Myers) sau
mai mult ca att:
2. Testarea este utilizata pentru a semnala prezena defectelor unui program, fr a garanta
absena lor (Dijkstra).
3Un test de succes (test concludent) e acela care descoper (i localizeaz) o eroare.
Principii ale testrii (Myers)
Continund ideea acestei teme observm c cea mai important problem n testare este cea
psihologic. Reieind din aceasta pot fi formulate nite principii ale testrii.
Principiul 1: Un caz de test trebuie sa defineasc neaprat ieirea sau rezultatul dorit.
Formularea acestui principiu este bazat pe psihologia uman. Dac rezultatul corect nu este
predefinit , ansa c orice rezultat va fi interpretat ca corect este destul de mare. Avem aici
fenomenul Vedem ceea ce dorim s vedem. Cu alte cuvinte noi subcontient ateptm rezultatul
corect. O cale de combatere a acestui fenomen este ncurajarea examinrii detaliate a tuturor
ieirilor. Conform acestui principiu un caz de test trebuie s fie compus din:
Exemplul calculatorului
2. Testarea produsului soft este un exerciiu de apreciere a riscurilor.
Dac ai luat decizia s nu testezi toate scenariile de test posibile, atunci i-ai asumat un oarecare
risc. De exemplu, dac ai decis s nu testezi n calculator cazul 1024+1024=2048, iar
programatorul accidental a greit aceast combinaie, nimerind acest produs la consumator, care
este un contabil i a gsit aceast eroare, ce se va ntmpla n aa caz? Aceast eroare va costa
foarte mult. Sun destul de urt aceasta, dar pe de alt parte este imposibil de testat tot, dar dac
nu se testeaz totul este posibil s se strecoare diferite erori. Ce se poate de fcut n astfel de cazuri?
Un element important este c testorul trebuie s nvee cum se poate reduce domeniul imens a
datelor de intrare pn la nite seturi realizabile de teste i cum s ia decizii ce este important de
testat i ce nu este.
3. Testarea nu poate arta c produsul nu are erori.
Testarea poate arta c erorile exist ntr-un produs, dar nu poate arta c ele nu sunt n el. Pot fi
perfecionate testele, pot fi gsite i raportate erorile, dar nu este posibil de garantat c erori n
produs nu se vor mai gsi. Unicul lucru care se poate de fcut este de a continua testarea i posibil
se vor mai gsi erori.
9
7. Trebuie s fie perseverent. Erorile gsite nu totdeauna sunt vizibile i uneori sunt greu de
descris. Testorul trebuie s-i poat expune punctul de vedere i s poat demonstra
necesitatea fixrii i posibil corectrii erorilor gsite.
Un tester nu trebuie s fie numaidect un programator, cunotinele din diferite domenii
(economie, nvmnt, aviaie, medicin, culinrie, construcii ) pentru care sunt dezvoltate
produsele soft vor fi de un imens ajutor pentru un tester.
Principii ale testrii (Myers)
Principiul 1: Un caz de test trebuie sa defineasc neaprat ieirea sau rezultatul dorit.
Principiul 2: Un programator ar trebui s evite i s testeze propriul program.
Principiul 3: Companiile de programare nu ar trebui s-i testeze produsele proprii.
Principiul 4: Fiecare rezultat al testului trebuie examinat foarte minuios.
Principiul 5: Cazurile de test trebuie s fie scrise att pentru condiii de intrare valide ct i
pentru cele invalide i neateptate.
Principiul 6: Trebuie testat c produsul face ce trebuie i nu face ce nu trebuie.
Principiul 7: Trebuie de pstrat i refolosit cazurile de test.
Principiul 8: Nu se planific procesul de testare presupunnd c nu vor fi gsite erori.
Principiul 9: Probabilitatea de a gsi erori ntr-un fragment de cod este proporional cu numrul
de erori deja gsite.
Principiul 10:Testarea este un lucru extrem de creativ i intelectual.
Axiomele testrii (Patton)
1. Este imposibil testarea complet a unui program.
2. Testarea produselor soft este un exerciiu de apreciere a riscurilor.
3. Testarea nu poate arta c produsul nu are erori.
4. Cu ct mai multe erori gseti, cu att mai multe sunt.
5. Paradoxul pesticidelor: erorile devin rezistente la teste
6. Nu toate erorile gsite vor fi corectate.
7. E greu de spus cnd o eroare e o eroare ...
8. Specificaiile produselor nu sunt niciodat definitive.
9. Testerii nu sunt cei mai populari membri ai echipei de proiect.
Tema 3: Planul de testare
Unitatea de nvare: Planificarea procesului de testare
Fazele procesului de testare sunt:
1.
2.
3.
4.
planificarea,
analiza i proiectarea,
implementarea,
execuia i evaluarea testelor.
13
1. Planificarea testelor
Planificarea testelor se realizeaz n strns legtur cu planificarea derulrii proiectului. n faza
de planificare a proiectului pentru testare se aloc resurse, specificndu-se bugetul i perioada de
timp n care se va derula testarea. Pe baza acestora se realizeaz planificarea detaliat a procesului
de testare. Pe baza acestora se realizeaz planificarea detaliat a procesului de testare.
Planificarea testrii are scopul de a determina ce s testeze i ct s testeze, astfel nct procesul
de testare s se ncadreze n limitele resurselor alocate. n urma planificrii testrii rezult planul
de test, un document pe baza cruia se desfoar celelalte faze ale testrii. n aceast faz se
identific i obiectivele testrii.
Planul de test este un document important, fiind utilizat ca baz pentru desfurarea ntregului
proces de testare. n plus, trebuie identificate i sursele de risc n testare. Planificarea testrii poate
s nceap din momentul n care au fost elaborate cerinele aplicaiei soft.
n planul de test sunt descrise:
aria de cuprindere;
responsabilitile fiecrui membru al echipei de testare;
resursele umane necesare;
desfurarea n timp a testelor;
descrierea i configurarea mediului specific aplicaiei;
lista echipamentelor care trebuie achiziionate;
crearea i managementul datelor de test;
criteriile de acceptare a testelor.
Deoarece este foarte dificil s se stabileasc momentul n care se va ncheia testarea, n planul de
test se specific o serie de criterii care constituie o baz pentru determinarea finalizrii testrii.
2. Analiza testelor
Analiza testelor rafineaz metodele prezentate n planul de test. Sunt prezentate etapele fazelor
de analiz i proiectare a testelor.
Astfel, n etapa de analiz se identific urmtorii pai:
1. identificarea scopurilor, obiectivelor i a strategilor testrii de ctre echipa de testare;
2. metodele de verificare sunt asociate cerinelor sistemului sau cazurilor de utilizare i sunt
documentate n cadrul unei matrice de urmrire a cerinelor;
14
n faza de analiz a procesului de testare, un aspect important l ocup analiza cerinelor pentru
testare. Cerinele testrii trebuie s fie identificate i documentate astfel nct toate persoanele
implicate n procesul de testare s fie contiente de scopul acestuia. Analiza se desfoar din mai
multe puncte de vedere, depinznd de faza de testare. Astfel se identific o abordare structural i
o abordare bazat pe comportament.
Faza de proiectare a testelor urmeaz dup ncheierea analizei. n faza de proiectare, apar
urmtorii pai:
definirea modelului programului de test astfel nct acesta s reflecte tehnicile de testare
utilizate;
definirea arhitecturii de test;
definirea procedurilor de test;
luarea deciziei de automatizare a anumitor teste i de testare manual a altor componente;
asocierea datelor de test astfel nct fiecare cerin pentru datele de test s se reflecte pentru
fiecare procedur de test.
Programul de test se elaboreaz fie la nivelul proiectrii, fie la nivelul tehnicilor de testare. n
primul caz, procedurile de test sunt asociate componentelor hardware i produselor soft ale
aplicaiei, iar n al doilea caz procedurile de testare sunt vzute la nivelul tehnicilor de testare.
Proiectarea procedurilor de test ncepe dup determinarea cerinelor testrii. Proiectarea
procedurilor de test const n:
3. Implementarea testelor
n etapa de implementare a testelor sunt construite cazurile de test i procedurile de test, pe baza
rezultatelor fazei de proiectare. Cazurile de test descriu att parametrii de intrare ct i rezultatele
ateptate dup execuie utiliznd acei parametri. Realizarea de cazuri de test ct mai complete duce
15
la descoperirea unui numr mai mare de erori. Procedurile de test identific toi paii necesari
pentru executarea cazurilor de test specifice.
Primul pas n faza de implementare este iniializarea mediului de implementare prin punerea la
punct a arhitecturii dezvoltrii testelor.
Un alt aspect important este identificarea standardelor pe care se bazeaz elaborarea secvenelor
de test. Dac au fost definite astfel de standarde de implementare, atunci implementarea se
realizeaz pe baza acestora. Dac nu exist standarde, n cadrul acestei faze, la nceput, se stabilesc
convenii de scriere a programelor de test (alinieri, comentarii, prefixe pentru date).
Implementarea secvenelor de test se realizeaz n limbaje specifice mediilor de testare
(asemntoare Visual Basic) sau se utilizeaz limbaje de programare evoluate (C++, Java).
Prin reutilizare se folosesc proceduri de test din proiectele anterioare sau din cadrul aceluiai
proiect pentru module care au pri comune.
16
CONCLUZIE
Testarea este un proces costisitor, nsa este necesar pentru asigurarea unui ncrederi mai mare n
aplicatia soft. Identificarea costurilor n procesul de testare reprezinta un aspect important pentru
problematica minimizarii costului ntregului proiect al produsului soft. Prin analiza surselor
cheltuielilor n procesul de testare pot fi gasite modalitati pentru reducerea acestora. Astfel,
scaderea cheltuielilor cu testarea se poate realiza prin:
efectueze nregistrari de consumuri si de performanta pentru a putea obtine la timp baza de date
solicitata n procesul de estimare a coeficientilor pentru modelele testarii.
TEMA 4: Cazul de testare
Unitatea de nvare: Realizarea procesului de testare
TEMA4: Cazuri de testare
Competene elementare formate n cadrul modului:
CE2.
Abiliti formate:
A8.
A9.
A10.
Termeni cheie:
Test condition;
Test case;
Test suite;
Test case generation;
Test case execution
Test condition ( condiia, starea) - un element ori un eveniment al componentei sau
sistemului care poate fi verificat de unul sau mai multe cazuri de test, de exemplu o funcie, o
tranzacie, o trsturi, un atribut de calitate sau element structural.
Cu alte cuvinte condiia de test e o caracteristic a softului care poate fi verificat printrun test sau un set de teste.
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. Cazurile
de test se aleg astfel nct sa fie puse n eviden, dac este posibil, situaiile de funcionare
necorespunztoare.
Alte definiii:
Standardul IEEE 610 - 1990: Un set de intrri ale testului, condiii de execuie i
rezultate ateptate, dezvoltat pentru un obiectiv anume, cum ar fi s exercite o anume cale a unui
program sau s verifice corespondena cu o cerin specific;
Ron Patton ( 2001): Cazurile de testare sunt intrrile specifice pe care le vei ncerca si
procedurile ce vor urma cnd testai produsul soft.
Test case - un set de valori incluse, executarea precondiiilor, rezultatele ateptate i
executarea postcondiiilor, dezvoltate pentru un obiectiv particular sau pentru condiia de test,
18
astfel nct s solicite o anumita parte a programului sau s verifice concordana cu o cerin
specific.
Cu alte cuvinte, un test case: aduce sistemul la un punct de start a testului (executarea
precondiiilor); apoi aplica un set de date de intrare care trebuie s genereze un anume rezultat
(rezultatul ateptat), i prsete sistemul la un moment dat (executarea postcondiiilor).
Activitile de proiectare vor genera un set de valori de intrare (input values) care vor
genera un anumit rezultat, de ex. stabilirea de ctre specificai ce se va ntmpla cnd se vor aplica
datele de intrare.
Trebuie s definim starea sistemului n care el este pregtit s primeasc intrri, i trebuie
s decidem n ce stare va fi el dup testare astfel nct s putem verifica daca se finiseaz n locul
potrivit.
Selectarea cazurilor de test este unicul pas important pe care testorii de soft-uri l fac.
Selectarea incorecta a acestora induce la testarea prea ndelungata, prea puina sau testarea unor
lucruri eronate. Estimnd inteligent riscurile i reducnd infinitatea de posibiliti la un set eficient
i administrabil de date.
Procedura de testare - identific toate aciunile necesare executrii testului ntr-o anumit
ordine. Procedura de testare - deseori e numita test script (sau manual test script pentru al deosebi
de automated scripts care se execut cu diferite instrumente)
Specificaia cazurilor de test este a doua etap n procesul fundamental de testare.
Proiectarea testelor conin 3 etape:
1. Identificarea condiiilor de testare.
2. Specificarea cazurilor de test.
3. Specificarea procedurilor de testare.
Pornind de la cele trei etape ale procesului, noi:
decidem o condiie de testare, care va fi o mic parte a specificaiei softului testat;
proiectm un test case care va verifica condiia de testare;
scriem o procedur pentru executarea testului, de exemplu: alegei o stare de start
corect, introducei datele de intrare (input values), verificai rezultatele obinute.
n pofida limbajului tehnic, e un set simplu de pai. Desigur va trebui sa utilizm de mai
multe ori aceti pai pentru a testa ntregul sistem, dar procesul de baz este acelai. Pentru a testa
tot sistemul scriem planul de executare a testului, care plaseaz procedurile individuale de testare
n ordinea adecvat i seteaz sistemul aa nct s fie posibil executarea testului.
Exemplu:
Unui testor, nou angajat, i se propune spre realizare urmtorul test-case:
Plata poate fi efectuata cu cartela VISA
19
Deschide www.magazin.md
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<numarul comenzii>;
Rezultatul ateptat: 10
Este evident, ca acest test-case poate fi realizat de oricine, ce are abiliti de lucru la
calculator.
n acest exemplu la rezultatul ateptat s-au adugat pai (steps), care ar trebui sa ne conduc
la rezultatul real, pentru a cunoate dac este prezent bagul sau nu. Totalitatea acestor pai se
numete procedura (procedure).
Dup analogie:
Pai - trepte ale unei scri;
Rezultat ateptat - un oarecare obiect, pe care noi ar trebui s-l gsim, dup ridicarea
pe aceste trepte;
20
Rezultat real - este ceea ce noi am gsit n realitate dup ce ne-am ridicat pe aceste
trepte.
Implementarea testelor
n etapa de implementare a testelor sunt construite cazurile de test i procedurile de test, pe
baza rezultatelor fazei de proiectare. Cazurile de test descriu att parametrii de intrare cat i
rezultatele ateptate dup execuie utiliznd aceti parametri. Realizarea de cazuri de test cat mai
complete duce la descoperirea unui numr mai mare de erori. Procedurile de test identific toi
paii necesari pentru executarea cazurilor de test specifice.
Rularea testelor.
Faza de rulare a testelor are ca intrri planul de test i orarul execuiei procedurilor de test,
mediul de test fiind pregtit corespunztor. Ieirile fazei de execuie a testelor sunt rezultatele
testelor, leciile nvate i orarul modificat al testelor. Execuia modulelor se realizeaz n
conformitate cu planul de test. Procedurile de test descriu intrrile i ieirile ateptate dup
execuie.
n aceast etap din cadrul procesului de testare sunt rulate secvenele de test. Execuia
secvenelor de test se realizeaz pe ct posibil n mediul specific aplicaiei iar daca nu este posibil,
acest mediu este simulat.
Rezultatele execuiei secvenelor de test sunt evaluate pentru a determina dac produsul a
trecut testul cu succes. Evaluarea rezultatelor testelor se face de ctre o persoana sau un instrument
automat, care pe baza specificaiilor determin dac rezultatele execuiei testelor sunt corecte sau
nu.
Rezultatele execuiei testelor se vor memora ntr-o baza de date care conine i alte
informaii referitoare la aplicaia soft realizata.
Execuia i evaluarea testrii de integrare necesit noi secvene de test pe msura ce se
adaug module n cadrul structurii programului care se testeaz. Aprobarea de ctre beneficiar a
rapoartelor testrii de modul i ale testrii de integrare constituie ncheierea acestor faze.
In execuia i evaluarea testrii de sistem, beneficiarul aplicaiei se implica mai mult dect
n celelalte faze. In mod asemntor, acesta trebuie s semneze raportul de test pentru a considera
ncheiata aceasta faza de testare.
21
Diagrama
strilor
aciuni
snt
strii
rezultatelor:
PASS/FAIL/Blocat/Invalid
System:
Subsystem:
Designed by:
Design Date:
Executed by:
Execution Date:
Page: 1 of ..
Short Description:
Nr. ID
Descriere
Rezultate
ateptate
Rezultate
reale
Co
Pass me
/Fail nta
rii
Lansarea aplicatiei:
1.
AD_lansare
Dublu clic pe ari Aparitia
e_dreptunghi. exe aplicatiei:
2.
ferestrei Apare
fereastra
Pass
aplicatiei.
AD_interfata_t Denumirea
Bara de titlu:
Bara de titlu: Aria
itlu
aplicatiei pe bara Aria
DREPTUN
Pass
de titlu.
DREPTUNGHIUL
GHIULUI
UI
Greeli frecvente la elaborarea cazurilor de testare:
Cazurile de testare sunt prea lungi;
Precondiii incomplete, incorecte sau neclare;
Omiterea unui pas;
Numirea unor cmpuri care s-au schimbat sau nu mai exista;
Neclaritatea daca testul a trecut sau a picat.
Concluzie:
Nu exista o formula simpla sau reet pentru a genera un caz de testare bun.
Unele teste sunt bune pentru scopul pe care l avem, pentru a afla tipul de informaie
pe care l dorim.
23
Tema
5:
Ciclul
de
via
al
elaborrii
produsului
program
Analiza cerinelor
Proiectarea sistemului
Implementarea lui
Operarea i ntreinerea
Corectiv;
Adaptiv;
Perfectiv.
Dimensiunea proiectului.
V-model
Incremental (spiraliform)
Modelul Waterfall
Modelul Waterfall Cerine sistem Cerine produs soft Design arhitectural (cerine
tehnice) Design detaliat(cerine program) Implementare (Coding) Testare.
Este lansat la nceputul anilor 70 ai secolului al XX-ea de ctre W.W. Royce
Presupune parcurgerea secvenial a etapelor (de la analiza cerinelor i pn la livrarea produsului
ctre client), cu reveniri, eventual doar la etapa precedent (model teoretic)
n realitate, parcurgerea etapelor este un proces iterativ, desfurat adesea n paralel la mai multe
activiti, cu retur napoi la etape nenvecinate.
Fiecare faz corespunde unei activiti i trebuie s se termine la o anumit dat prin producerea
anumitor documente sau programe.
Rezultatele fazei sunt supuse unei revizii aprofundate i nu se trece la faza urmtoare dect atunci
cnd sunt considerate satisfctoare.
Este aplicat unor sisteme de mic complexitate.
V-model
V-model
Este o variant a modelului cascad, care pune n eviden corelarea dintre activitile de
specificare i cele de testare, nlturarea n timp a activitilor fiind aceeai.
V-modelul presupune un ciclu de via secvenial.
Planificrile se fac o dat cu parcurgerea primei ramuri.
nceperea activitilor de testare n fazele incipiente ale ciclului de viaa.
Planul de testare afecteaz planul de dezvoltare.
Modelul Incremental
Modelul Incremental
Pentru modelul iterativ cerinele nu trebuie s fie definite n ntregime nainte de nceperea
codificrii. O versiune de lucru a produsului este construit, n cteva etape, sau iteraii. Acest tip
25
de dezvoltare este adesea menionat ca ciclic n cadrul proiectului. Proiectul va avea definit un
interval de timp i costuri. Fiecare ciclu va avea, de asemenea, un interval de timp i de cost.
Ciclurile sunt denumite n mod obinuit time-boxes. Pentru fiecare time-box este definit o cerin
i este produs o versiune a codului, care va permite testarea de ctre utilizatori. La sfritul
fiecrui time-box, va fi luat o decizie n privina funcionalitii i dac e necesar se va dezvolta
funcionalitatea n urmtoarea iteraie. Acest proces se repet pn cnd sistemul complet va
realiza produsul.
Modele:
Modificrile ce au fost fcute n sistem vor trebui testate, retestate i deasemenea se vor efectua
teste de regresie, pentru a se asigura c sistemul nu a fost afectat.
Testarea care are loc pe un sistem ce funcioneaz real este numit mentenana testrii.
Concluzii
Etapele procesului de dezvoltare a soft-ului sunt cunoscute ca faze al e ciclului de via a
produsului soft.
Fazele ciclului de via sunt: analiza cerinelor, proiectarea sistemului, implementarea, integrarea
i instalarea, operarea i mentenan.
Modelele ciclului de via pot fi mprite n:
Spiral,
Agile.
erori legate de alegerea i descrierea algoritmului: algoritm incorect, sau corect dar
inadecvat problemei;
erori produse n tehnica de programare cum sunt variabile i structuri de date globale,
acces necontrolat la zone de memorie partajate;
erori produse din neatenie caz n care logica de control e defectuoas, salt n afara
limitelor programului, condiii logice compuse sau incorect negate;
erori produse n tehnica de programare cum sunt variabile i structuri de date globale,
acces necontrolat la zone de memorie partajate;
erori produse din neatenie caz n care logica de control e defectuoas: condiii logice
compuse sau incorect negate, neprelucrarea primei sau ultimei nregistrri, neluarea n
considerare a posibilitii de existen a fiierelor vide;
crearea minimului de cod necesar (compilabil, dac limbajul folosit este compilat) pe baza
design-ului;
scrierea unuia sau mai multor teste care codeaz ceea ce trebuie s fac design-ul;
Test Driven Development (TDD) este o alt metod de a scrie teste. De fapt, TDD este o metod
de a face design incremental.
Greeli comune
Cteva greeli comune legate de unit testing sunt:
Scrierea multor teste de integrare(care implic mai multe clase sau module) lente i fragile
n detrimentul testelor unitare mici, rapide i uor de ntreinut;
Abandonarea dublelor de testare, sau folosirea lor n scopuri pentru care nu au fost create.
Dublele de testare ajut la obinerea unor teste scurte i rapide;
Numele testelor nu exprim comportamentul testat. Numele testului poate da foarte multe
informaii atunci cnd testul pic;
Folosirea intensiv a debugger-ului (depnarea) pe teste. Testele bine scrise vor spune
imediat unde este problema n cazul n care pic. Debugging-ul este n continuare util n
situaii exotice;
Cod de testare nengrijit. Codul de testare este cel puin la fel de important ca i codul de
producie, i trebuie ntreinut cu aceeai grij.
2.Testarea integrrii
Dup ce unitile au fost scrise, urmtoarea etap ar fi s le nteracionm pentru a crea sistemul.
Aceasta se numete integrare.
Scopul testrii de integrare este de a expune defectele interfeelor.
Testarea de integrare include:
3.Testarea de acceptare
28
Testarea de acceptare este o testare care are n vedere nevoile i cerinele utilizatorilor. Este o
metod menit s determine dac un sistem ndeplinete sau nu criteriul de acceptare. In acelai
timp, utilizatorul, clientul sau orice alt entitate asociat determin dac accepta sau nu sistemul.
n cazul testarii de acceptare gsirea de defecte nu este scopul principal i nu este neaprat
ultimul nivel al testarii.
Testarea de acceptare se poate realiza pe mai multe nivele.
Forme obisnuite de testare de acceptare:
1. Testare de acceptare a utilizatorului: utilizatorul unui produs final efectueaz testele. Setrile
lor vor reprezenta un mediu de lucru i acopera toate ariile poriectului, nu numai ale sistemului.
2. Testarea de lucru presupune testarea unei rezerve(backup), refacerea n caz de dezastru,
mentenana task-urilor i verificri periodice ale vulnerabilitii securitii.
3. Testarea privind acordul si reglementrile reprezint o demonstraie a criteriului de acceptare
care a fost definit n contract. nainte ca produsul soft sa fie acceptat, este necesar s vizibil ca el
ndeplinete condiiile aa cum sunt specificate n contract. Acest tip de testare este efectuat contrar
oricrei reglementri la care produsul trebuie s adere cum ar fi guvernamentale, legale sau de
siguran.
4. Testarea Alpha permite testrii de ctre client. Oamenii care reprezint inta folosesc produsul
n acelai fel ca i cum ar fi cumparat versiunea final. Aceast testare se realizeaz n cas (pe
site-ul dezvoltatorilor).
5. Testarea Beta se aseamana cu testarea Alpha, numai c utilizatorii efectueaz testarea pe
propriile site-uri.
4.Testarea sistemului
Dup ce s-a verificat c componentele toate lucreaz mpreun la nivel de unitate, pasul urmtor
este de a lua n considerare funcionalitatea din perspectiva end-to-end. Aceast activitate este
numit testarea sistemului.
Testele de sistem sunt teste ale sistemului de programe i echipamente complet. Sistemul este
instalat i apoi testat n mediul su real de funcionare.
Acesta se realizeaz de obicei prin o echipa care este independent de procesul de dezvoltare.
Avantajul acestei independene este c o evaluare obiectiv a sistemului poate fi fcut, n baza
specificaiilor scrise, i nu a codului.
Sunt teste n conformitate cu specificaia cerintelor de sistem (produs soft):
de performan,
de fiabilitate,
de securitate, etc.
Adesea, testele de sistem ocup cel mai mult timp din ntreaga perioad de testare
Exemple de cerine non-funcionale:
Procedurile de instalare - Installability.
Mentenabilitate - capacitatea de a introduce modificri ale sistemului.
29
A3.
A4.
A5.
A9.
A10.
Termeni cheie:
Testare static
Inspecie/ revizuire (review)
Grad de formalitate
Eroare de sintax
Eroare semantic
Metodele statice testeaz produsul program fr ca el s fie executat. Totui prezint
important deosebit prin abilitatea de a depista erorile i defectele nainte de executarea codului,
n primele etape ale desfurrii proiectului, facilitnd i reducnd din cheltuielile necesare pentru
depistarea i corectarea aceleiai greeli ntr-o etap mai avansat. Printre aceste metode se
regsete i tehnicile de inspecie (review).
n aceast tem vom cerceta i analiza static a codului dezvoltat, considerat o tehnic de
examinare a codului fr activarea lui pentru a identifica problemele actuale sau poteniale.
Testarea static deseori este imposibil de realizat manual, astfel vom cerceta tipurile testrii statice
care solicit anumite mijloace (instrumente).
Generaliti despre tehnicile statice
Tehnicile testrii statice presupun tehnicile de testare a soft-ului care nu implic executarea
codului. Aceasta include:
testarea produsului soft diferit de cod: cerinele tipice ori documentele ce conin
specificaiile;
30
caracteristici
prin
care
se
figura
demonstreaz
alturat
etapele
cheie
se
ale
revizuirii formale:
Planificarea:
Selectarea
personalului
i analiza fiecrei pri de persoane diferite pentru a se asigura c documentul este revizuit n
ntregime).
Startul: distribuirea documentelor, explicarea obiectivelor, procesului i documentelor
participanilor, verificarea criteriului de intrare. Aceasta poate fi desfurat ca o ntrunire sau
simplu prin distribuirea detaliilor revizorilor. Metoda utilizat depinde de limitele temporale i de
volumul de informaie. Un volum impuntor de informaie poate fi mprit mai bine la o ntlnire
dect prin citirea paginilor de ctre utilizatori.
Pregtirea individual: munca efectuat individual de fiecare participant naintea
ntrunirii, care presupune citirea documentelor surs, consemnarea potenialelor defecte, ntrebri
i comentarii. Aceasta este principala surs i poate fi constrns de timp, participanii primesc 2
ore pentru a-i definitiva pregtirea.
ntrunirea de revizuire: aceasta poate include discuiile referitoare la orice defect gsit.
Inspecia, un tip de revizuire mai formal, va documenta rezultatele. Participanii edinei pot doar
nota defectele care urmeaz s fie corectate de autor. De asemenea pot face recomandri pentru
corectarea defectelor .Determinarea abordrii se bazeaz pe unul sau pe toi factorii de mai jos:
Timpul disponibil - dac dispunem de puin timp ntrunirea poate doar colecta defectele.
Cerinele autorului - dac autorul accept ajutor la corectarea defectelor.
Tipul revizuirii - n cazul inspeciei se permite doar colectarea nu exist nici o discuie.
Refacerea: dup ntrunirea de revizuire autorul va avea mai multe defecte de corectat,
corectarea defectelor se numete refacere. Autorul va nltura problemele depistate i va confirma
necesitatea rectificrii.
Continuarea: liderul reexaminrii va verifica dac defectele acceptate au fost localizate i
va determina de ct timp a fost nevoie pentru revizuire i ct de multe defecte au fost depistate.
Acesta va mai verifica criteriile de ieire (pentru inspecie) pentru a garanta ndeplinirea lor.
Rolurile i responsabilitile
Rolul revizorilor rezid n cercetarea documentelor din perspectiva oferit; aceasta include
utilizarea listei. Pentru identificarea defectelor se poate folosi o list bazat pe perspective
particulare (utilizatorul, mecanicul, testerul sau operatorul) sau una mai general (ca problemele
tipice ale cerinelor).
n afar de acestea procesul de revizuire definete el singur roluri specifice i
responsabiliti care trebuie ndeplinite pentru revizuirea formal:
Managerul: el decide ce trebuie de revizuit (dac nu era definit nc), se asigur dac
timpul alocat n planul proiectului va fi suficient pentru toate activitile de reexaminare necesare,
i determin dac au fost realizate obiectivele analizei. Managerul nu se implic n procesul actual
de revizuire dect n cazul cnd poate aduga ceva important, de exemplu dac el posed
cunotine tehnice importante pentru activitatea respectiv.
34
Analiza codului de obicei exploreaz scenariul, ori aplic o execuie artificial a codului
ori a procesului.
Este documentat i utilizeaz un proces bine definit de detectare a erorilor care include
att colegi ct i experi tehnici.
Se ntocmete raportul privind inspecia, cu lista celor depistate, care include date
(metricile) utile la mbuntirea procesului, precum i la corectarea defectelor n
documentul analizat.
36
ntrunirea este urmat de un proces care asigur c aciunea s-a ncadrat n timp i e
definitivat.
n realitate hotarele dintre diferite tipuri de revizuiri sunt vagi. Ceva tratat de o companie
ca o revizie tehnic, e privit de alta ca o inspecie. Aceasta este viziunea clasic asupra revizuirii.
Esenialul pentru fiecare companie este stabilirea obiectivelor i avantajelor revizuirii plnuite.
Factorii care asigur succesul revizuirii.
Cnd contm pe succesul unei revizuiri trebuie s avem n vedere urmtorii factori:
Orice defect depistat e binevenit i exprimat obiectiv, iar liderul revizor se asigur c
problemele persoanelor i aspectele psihologice sunt tratate adecvat. ( ex. o experien
pozitiv pentru autor i ceilali participani).
Suportul managerial este esenial pentru un proces reuit de revizuire (prin acordarea
timpului necesar revizuirii adecvat programului).
37
Codul surs este orice secven de instruciuni scrise n unul din limbajele de programare,
limbaj ce poate fi citit de persoane, i care poate fi convertit apoi ntr-un cod echivalent executabil
pentru computer - creat de dezvoltator.
Un model produsul soft este imaginea unei soluii finale dezvoltate utiliznd tehnici ca
Unified Modeling Language (UML) - Limbajul de Modelare Unificat (LMU); generat de
designerul produsului soft.
Analiza static poate depista defectele dificil de depistat la executarea testului prin
analizarea codului programei, exemplu: instruciunile pot avea forma unui control flow graph
(cum se realizeaz controlul printre module) i data flow ( asigurarea c datele sunt identificate i
utilizate corect).
Prevenirea unor aspecte suspicioase codului sau design-ului, prin calcularea datelor,
astfel ca msurarea extra-complicat. Dac codul e prea complex poate fi predispus
greelilor sau mai puin dependent de orientarea atribuit codului de ctre developator.
Dac ei neleg c, codul trebuie s fie complex, apoi ei mai mult ca probabil vor verifica
de mai multe ori, dar dac codul este extrem de complex, atunci exist mai multe anse
c el va conine defecte.
Corelarea inconsecvent dintre module i componente, ex. modulul X cere trei valori
de la modulul Y, care are doar 2 rezultate (outputs).
Variabilele care nu sunt utilizate niciodat. Nu au erori stabile, dar dac programatorul
declar o variabil n program i nu se folosete de ea, aceasta presupune ca unele pri
necesare ale programei s fie ntmpltor omise.
39
Programul ntr-un moment anumit nu mai poate prelungi executarea ( apare aa numita
ntrerupere forat a programului, de obicei cu indicarea locului n program, care a
generat aceast ntrerupere);
Programul afieaz rezultatele i finiseaz lucrul, dar aceste rezultate corespund parial
sau totalmente nu corespund cu rezultatele de
control;
adugarea
informaiei
de
depnare,
40
(cum ar fi trasarea programului, ce permite s verificam, dac toate ramurile programului au fost
implicate n rezolvarea problemei cu setul de date iniial).
n mediul Visual Studio (redacia Ultimate) exist instrumentul de analiz arhitectural:
Arhitecture Explorer, care permite crearea i vizualizarea grafurilor diagramelor aplicaiei.
Analiza metricilor codului aplicaiei i multe alte faciliti pentru analiza static a codului
aplicaiei.
Cerine slabe
Specificaii incomplete
Dac se oprete testarea prea devreme, se risc apariia de erori la rularea propriu-zis a sistemului.
Dac testarea continu pentru o perioad prea lung se poate amna lansarea produsului, fapt ce
poate duce la degradarea imaginii companiei sau chiar pierderi de venituri.
Corectarea erorilor descoperite pe parcursul integrrii necesit repetarea procesului de
proiectare, codificare i testare a modulelor. Principalele erori de proiectare sunt descoperite de
abia la sfrit, cnd sunt testate modulele principale ale programului, ceea ce conduce la
reproiectare i reimplementare. Scopul primordial pentru procesul de testare este identificarea
erorilor de produse soft, izolarea i corectarea defectelor care au cauzat aceste erori. Este un
exerciiu non-trivial, deoarece testarea nu poate demonstra cu certitudine de 100 % c produsul
41
funcioneaz corect n orice condiii; testarea doar poate demonstra c produsul nu funcioneaz
corect n anumite condiii.
Testarea regresiv prezint testele executate dup corectarea erorilor, pentru a se verifica dac n
cursul corectrii nu au fost introduse alte erori. Aceste teste sunt efectuate de regul n timpul
ntreinerii. Pentru uurarea lor este necesar s se arhiveze toate testele efectuate n timpul
dezvoltrii programului, ceea ce permite, n plus, verificarea automat a rezultatelor testelor
regresive. Testarea regresiei reprezint testarea unui program testat anterior care a suferit
modificri pentru a se asigura c nu au fost introduse sau ascunse defecte ca rezultat a modificarilor
fcute. Acest tip de testare este realizat atunci cnd este schimbat soft-ul sau mediul. Msura n
care se realizeaz testarea regresiei este bazat pe riscul negsirii defectelor n soft-ul care a
funcionat anterior. Acest tip de testare este la toate nivele de testare. Testrile sunt necesar de
reluat atunci cnd se verfic actualizrile soft-ului. Aceste teste trebuie reluate atunci cnd se
semnaleaz o modificare n produs soft sau mediu i sunt utilizate pentru a se dovedi c nu au fost
schimbate aspecte ale sistemului sau componentelor. Selecia cazurilor de test pentru testarea
regresiei cuprinde:
*Testarea
regresiei
reprezint
un
candidat
ideal
pentru
Automatizare.
Testarea regresiva se efectueaza pentru a ne da seama daca o schimbare aplicata unui produs soft
reprezinta
un
pas
inapoi
sau
un
pas
inainte.
Ea se foloseste pentru a determina daca o schimbare nu cumva aduce mai mult rau decat bine: daca
acea
schimbare
duce
la
regres
sau,
dimpotriva,
la
progres.
Testarea regresiva se efectueaz pentru a vedea dac schimbrile aduse unei componente a
produsului soft au creat noi defecte sau au redus fiabilitatea, performanta sau funcionalitatea
produsului soft din care face parte componenta respectiva.
BUG (defect, greeal, problem) - este un defect ntr-un sistem sau o component care cauzeaz
ca sistemul sau componentele respective s nu reueasc s i ndeplineasc funcia. Un defect,
dac este ntlnit la execuie, poate avaria ntregul sistem.
Termenul de bug este adesea folosit pentru a descrie o problem ntr-un calculator. Exist dou
tipuri de bug-uri: cele de produs soft i cele de hardware. n aceast privin testarea produsului
soft nu ar trebui asociat cu debugging. Debugging-ul este procesul de analiz i localizare a
bugului atunci cnd produsul nu se comport conform ateptrilor. Erorile de programare n
produsul soft, aa-numitele bug-uri, au cauzat de-a lungul timpului pagube uriae, de la pierderea
de viei omeneti n aplicaii militare pn la milioane i miliarde de dolari pe burs sau n misiuni
de explorare a spaiului.
Managementul proiectelor reprezint o nou tiin, rezultat al sintezei unor domenii diferite,
avnd ca obiectiv maximizarea eficienei sociale, indiferent de produsul/serviciul ce trebuie
realizat.
Obiectivul de baza al managementului de proiect este minimizarea risipei generate de serviciile
asupra unor operaii ncheiate, inserarea de operaii noi ntre operaii executate, repetarea execuiei
de operaii, gestiunea riscului i meninerea sub control a elementelor de noncaliti. Toate acestea
se concretizeaz prin definirea de termene, durate, cantiti, niveluri de calitate, momente de start
i de fini, durate i obiective de stationare.
42
Conformitatea
Conformitatea
Conformitatea
Conformitatea
Oportunitatea si efortul necesar pentru a folosi produsul in locul altui produs intr-un mediu
particular
Conformitatea
Un grad inalt de incredere include atribute ca: toleranta la defecte, siguranta I functionare,
securitatea, utilizabilitatea.
Sisteme inteligente si bazate pe cunostinte:
Proprietatea oricand (garanteaza raspunsul cel mai bun care poate fi obtinut intr-un timp
dat daca se cere un raspuns in intervalul de timp respectiv)
Sisteme informationale
o
Usurinta de interogare
Stilul codului
Reutilizabilitatea codului
In proiectele mici asigurarea calitatii poate fi efectuata de echipa de dezvoltare, dar in proiectele
mari trebuie sa fie realizata de o echipa speciala.
Activitatile de asigurare a calitatii sunt documentate in Planul de Asigurare a Calitatii (Software
Quality Assurance Plan (SQAP).
Prin activitatile de asigurare a calitatii se urmareste:
Cele bazate pe cazuri de testare care rezult direct dintr-o specificaie, cum ar fi tehnici
black-box;
Cele bazate pe cazuri de testare care deriv direct din structura unei componente sau a unui
sistem, cunoscut sub numele de tehnici de structur white-box;
Cele bazate pe cazuri de testare care rezult din experiena testerului, sistemelor similare
i experiena general de testare, cunoscut sub numele de tehnici bazate pe experien.
Black Box
Testarea domeniilor de valori, testarea funcional, testarea bazat pe specificaii, testarea axat
pe riscuri, testarea la limit, testarea de regresie, testarea bazat pe scenarii.
Este o tehnic de testare a produsului soft care se bazeaz n ntregime pe cerinele fa de produs
i specificaiile acestuia.
Tipuri de testare Black Box
Testarea de regresie;
Intrrile sistemului sau al produsului soft sunt mprite n grupuri pentru care se ateapt
un comportament similar;
Identificarea de partiii echivalente (sau clase) pentru: date valide i date invalide;
Se aplic i pentru: ieiri, valori interne, valori cu referire la timp (ce se modific nainte
sau dup apariia unui eveniment), parametri ai interfeei;
Pentru un interval: va avea o clas de valori valide(n interior) i dou clase de valori
invalide(din ambele pri);
Pentru un numr specificat: un caz valid i dou cazuri invalide(mai mare, mai mic)
apariia unui mare numr de combinaii n care instruciunile elementare ale programului (atribuiri,
instruciuni de intrare/ieire, apeluri de proceduri) pot fi executate. Ideal ar fi ca testul s solicite
executarea fiecrei combinaii posibile cel puin o dat. Din punct de vedere practic acest lucru nu
este realizabil, chiar n cazul programelor de dimensiune relativ mic. De pild, n cazul
while a do
if b then M
else P
dac se execut n iteraii, sunt posibile 2n combinaii n care se execut instruciunile M i P. n
testare exhaustiv ar trebui ca setul de date s conin 2n eantioane.
n realitate nu se testeaz dect un numr limitat de astfel de combinaii, considerate mai
importante. n stabilirea acestui numr de combinaii se utilizeaz diferite criterii de acoperire,
dintre care cele mai importante sunt:
1)
2)
3)
testarea condiiilor:
testarea condiiilor de ramificare;
testarea combinaiilor condiiilor de ramificare;
4)
neconcludente deoarece acelai eantion de date poate provoca executarea mai multor instruciuni;
este deci foarte probabil s putem minimiza numrul eantioanelor din test, meninnd criteriul de
acoperire a instruciunilor.
Pentru a trece prin toate nodurile, laturile grafului vor trebui traversate n urmtoarea
ordine:
a, b, f, g, h, d, e
Criteriul 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.
1.2 Acoperirea tuturor ramurilor.
Condiiile din instruciunile de decizie i iterative provoac ramificri la executarea
programului. Dup cum acestea sunt adevrate sau false. Aceste ramificri pot fi puse n eviden
prin aa numitul graf de control al programului. Acest graf poare fi construit inductiv pentru
programe ce conin instruciuni elementare (adic atribuiri, instruciuni de intrare/ieire, apeluri de
proceduri), instruciuni de decizie (if - then - else, if - then) i instruciuni iterative (while, repeat
etc.).
Criteriul de acoperire a tuturor arcelor cere ca testul s fie astfel ales nct pentru orice
arc din graf (multigraf) s existe eantioane care s provoace parcurgerea ramului la executarea
programului.
Observaie 1. Criteriul de acoperire a tuturor arcelor este mai tare dect criteriul de
acoperire a tuturor instruciunilor.
Observaie 2. Criteriul de acoperire a tuturor arcelor are calitatea c impune alegerea unui
test care s provoace evaluarea fiecrei condiii cel puin o dat att cu rezultatul true ct i cu
rezultatul false.
Exemplu:
-
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.
Apare o anumit redundan datorit necesitii de a parcurge anumite ramuri n cadrul mai
Este un criteriu mai bun dect acoperirea instruciunilor deoarece garanteaz i acoperirea
acestora, dar preul de cost este mai mare.
50
Permite testarea tuturor condiiilor simple dar nu implic neaprat testarea condiiilor
complexe.
1.3 Acoperirea tuturor condiiilor simple
n cazul cnd n program exist condiii compuse de forma C and D sau C or D, acoperirea
tuturor arcelor nu conduce totdeauna la evaluarea condiiilor C i D att cu rezultatul false ct i
cu rezultatul true.
Este util prin urmare s considerm un criteriu mai tare dect cel al acoperirii tuturor arcelor, prin
care se cere ca testul s acopere toate arcele i s asigure evaluarea tuturor condiiilor simple att
cu rezultatul true ct i cu rezultatul false. Acest criteriu este echivalent cu acoperirea tuturor
arcelor, dac programul conine doar condiii simple, n care nu apar operatorii logici and sau or.
Cazuri particulare:
1. Se formuleaz urmtorul criteriu, numit acoperire multipl a tuturor condiiilor simple:
testul trebuie s asigure evaluarea condiiilor simple cu rezultatul true i false n toate
combinaiile cerute de structura condiiei compuse n care ele apar. De pild, n cazul C and D se
obine pentru perechea de condiii simple (C, D) patru combinaii: (false, false) , (false, true) etc.
Acest criteriu este strict mai tare dect acoperirea tuturor condiiilor simple.
Exemplul. Fie instruciunile
if (x <> 0) and (y <> 0) then z :=
1 else z := 1 / (xy + x + y)
Testul { (x = l, y = 0) ; (x = 0, y =1); (x =l, y =l)} acoper toate condiiile simple dar nu
provoac evaluarea (false; false). El este de altfel neconcludent. Eroarea este descoperit chiar prin
eantionul (x = 0, y = 0) care adugat la testul considerat acoper multiplu toate condiiile simple.
Pentru acest program, acest criteriu este mai bun dect acoperirea tuturor condiiilor simple.
2. Se consider un program P n care executarea este dirijat doar prin expresii logice
(condiii), alte mecanisme (precum instruciunea case) sunt excluse. Fie C1, ..., C toate condiiile
care apar n P. Se consider toate sistemele de valori logice w = (v1, ., v), unde vi e {true, false}
pe care le pot lua aceste condiii. Se formuleaz urmtorul criteriu, numit acoperirea tuturor
atribuirilor logice: testul trebuie s asigure evaluarea condiiilor astfel nct s se obin toate
sistemele w. Acest criteriu este strict mai tare dect acoperirea tuturor arcelor.
Exemplul 2. Fie instruciunile
if x = 0 then z : = 0 else z := l;
if y = 0 then z := 0 else z := l / (x + y)
Testul { (x = 0, y = l) ; (x = l, y = 0) } acoper toate arcele dar nu acoper toate atribuirile
logice; sistemele (true, true) i (false, false) nu sunt evaluate. Testul trebuie completat cu alte dou
eantioane, de pild (x = 0, y = 0) i (x = 1, y = l). Primul face ca testul s devin concludent
(criteriul este mai bun).
1.4 Acoperirea tuturor drumurilor
n conformitate cu acest criteriu, pentru fiecare drum al grafului de control testul conine
eantioane prin prelucrarea crora executarea programului s urmeze drumul ales.
Acest criteriu este strict mai tare dect cele prezentate nainte i exprim un deziderat greu
de realizat n practic datorit instruciunilor iterative. Criteriul poate fi ns aplicat n forme mai
slabe, selectnd pentru testare doar anumite drumuri considerate critice. Dei aceast selecie este
dependent de problem, ea poate fi totui ghidat de sugestia ca datele de test s provoace
parcurgerea unor drumuri ce corespund:
numrului minim de iteraii (adic nici o iteraie n cazul while i o iteraie n cazul
51
repeat);
numrului maxim de iteraii;
numrului mediu de iteraii, dac acesta poate fi stabilit ntr-un fel oarecare; n caz
contrar se accept o executare cu un numr semnificativ de iteraii.
Exemplul 3. S considerm cazul unui algoritm de cutare secvenial a unei valori x
printre componentele v[i] , . . .v[n] ale vectorului v. Se presupune 0 < n < dmax.
const
dmax
type index = 1..dmax;
numar_componente
=
element
=
vector
=
array[index]
of
function secvential ( x : element; v : vector; n : numar_componente ) :
var gasit : boolean;
pozitie
:
begin
gasit := false; pozitie := 1;
while (not gasit) and (pozitie < n) do
begin
gasit := (v[pozitie] = x ) ;
pozitie
:=
pozitie
+
1
end;
=100;
0..dmax;
integer;
element;
boolean;
index;
Fig. 1.
Graful asociat acestui algoritm este prezentat n figura 1.
TESTARE: Este important ca setul de date de test s asigure:
-
parcurgerea unui drum n care instruciunea while se execut n zero iteraii (n = i);
- parcurgerea unui drum n care instruciunea while se execut n cteva iteraii, distingnd
situaiile n care x face sau nu parte din secvena v[1]. . .v [n] .
Considerm testul :
Nr.
Rezultat
10
()
10
(10)
10
20
52
30
(10)
Acesta este un test concludent, deoarece n cazurile 2 i 5 este semnalat o eroare. Aceste
eantioane au valoarea x pe ultima poziie a vectorului. Depanarea algoritmului const n
nlocuirea condiiei (poziie < n) prin (poziie <=n).
2. Numrul ciclomatic al grafului fluxului de control
Nici o discuie la testarea fluxului de control poate fi ncheiat fr a prezenta testarea
structurilor, cunoscut i sub numele de testarea cilor principale. Testarea structurat este bazat
pe munca de pionier al lui Tom McCabe. Aceasta folosete analiza topologiei grafului fluxului de
control pentru a identifica cazuri de teste.
Procesul de testare structural const din urmtorii pai:
Extragem graful fluxului de control din modelul produsului soft;
Calculam numrul ciclomatic al grafului (C);
Selectm un set de C ci de baz;
Cream un caz de testare pentru fiecare cale de baz;
Executam aceste teste.
Complexitatea ciclomatic, calculat cu formula lui McCabe:
1.
2.
3.
4.
5.
V(G)=E-N+2
unde:
E - numrul ramurilor din graf;
N - numrul nodurilor grafului.
Numrul Ciclomatic este exact numrul minim de ci independente, ci fr bucle (numite
ci de baz) care pot, n combinaie linear, s genereze toate cile posibile dintr-un modul. n
termeni de flux grafic, fiecare cale de baz traverseaz mcar o ramur pe care no traverseaz
celelalte ci.
Tehnica de testare McCabe creeaz C cazuri de testare, cte unul pentru fiecare cale. Acest
set de teste garanteaz att acoperirea pe instruciuni ct i pe ramuri. Seturile de ci de baz nu
sunt neaprat unice.
Exemplu Acoperirea cilor.
Fie c avem o funcie ce calculeaz preul n baza mai multor criterii: discount, cantitate.
function calculare_pret(baseprice, specialprice, extraprice, discount: real;
extras: integer): real;
var
addon_discount, res: real;
begin
if (extras >= 3) then addon_discount := 10 else
if (extras >= 5) then addon_discount := 15 else
addon_discount := 0;
res := baseprice / 100.0 * (100 - discount) +
specialprice + extraprice / 100.0 * (100 - addon_discount);
calculare_pret := res;
end;
53
V(G)=14-12+2=4
1. a-b-c-j-k-l-n
2. a-b-c-j-m-n
3. a-d-e-f-i-j-m-n
4. a-d-g-h-i-j-m-n
//testcase 01
price=calculate_price(10000.00, 2000.00,
1000.1. 3.0);
test_ok=test_ok&&(abs(price-12900.00)<0.01); a,
b, c, j, m, n
//testcase 02
price=calculate_price(25500.00, 3450.00,
6000.1. 6.0);
test_ok=test_ok&&(abs(price-12900.00)<0.01);
a, b, c, j, m, n
acoperire_ramuri=6/14*100%=43%
//testcase 03
price=calculate_price(10000.00,
2000.00,
1000.00,0,10);
test_ok=test_ok&&(abs(price-12900.00)<0.01);
a, d, g, h, i, j, k, l, n
//testcase 04
price=calculate_price(25500.00, 3450.00,
6000.00, 6,0);
test_ok=test_ok&&(abs(price-12900.00)<0.01);
a, b, c, j, k, l, n
acoperire_ramuri=12/14*100%=86%
Observaie! Ramurile e i f nu pot fi testate
deoarece nu este posibil ca simultan extras<3 i
extras>=5
Testarea ciclurilor:
Dac ciclul are de la 0 la n iteraii, cazurile de test dezvoltate vor fi:
0 iteraii;
iteraie;
dou iteraii;
k iteraii k<n;
n iteraii
n+1 iteraii (dac este posibil).
Dac ciclul are de la ni la n2 iteraii, se va testa i pentru k=n1 -1.
Dac este posibil, se va testa i pentru n2+1.
Se vor avea n vedere i valori negative ale variabilei de ciclare.
Concluzii:
AVANTAJE
DEZAVANTAJE
Numrul drumurilor poate fi foarte mare
specifice:
p=q/r se execut corect pentru
White-box
este
bazat
pe
55
programului
cerinelor
Exerciii:
Exerciiul 1:
Fie este dat urmtoarea secven de cod:
1. void foo(int a,b,x);
2. {
3. if (a>1 && b==0)
4. x/=a;
5. if (a==2 || x>1)
6. x++;
7. }
Care dintre grafurile reprezentate mai jos corespunde acestei secvene de cod?
56
Exerciiul 2.
Pentru algoritmul de mai jos indicai toate ramurile posibile i toate cile posibile:
57
RAMURI
CALE
58
59
Rspuns:
Exerciiu 1:
60
RAMURI
CALE
1-3-2
1-2-4
1-2
1-3-2-4
2-5-4
1-2-5-4
2-4
1-3-2-5-4
Factori organizaionali;
Legate de furnizori;
Legate de specialiti;
Riscurile produsului:
Specificaii incomplete;
61
Managementul testrii
Testarea independent
Cauza:
Puncte de vedere diferite: Un dezvoltator percepe rezultatul final ca fiind corect, pe cnd
un tester, va considera c orice produs final are greeli i va cuta cu srguin identificarea
i localizarea lor.
Dezvoltatorii;
Scrierea de rapoarte;
Automatizarea testelor;
Strategii de testare
Este un punct de pornire pentru planificarea testrii prin tehnici de proiectare, tipuri de
testare i angajaii ce vor fi implicai;
Instrumente
Definiie Un produs soft care realizeaz una sau mai multe activiti de testare cu ar fi:
planificarea i controlul, ntocmirea specificaiilor, elaborarea fiierelor iniiale, execuia i analiza
testrii.
Tipuri de instrumente:
Instrumente de modelare;
Instrumente de monitorizare . a.
Daca trebuiesc repetate aceleasi teste de multe ori automatizarea prezinta un mare avantaj
4. Permite rularea mai multor teste de regresie pe un cod care se schimba des
5. Pot fi rulate simultan pe mai multe masini astfel scazand timpul de testare
6.
Dezavantaje:
1. E mult mai scump sa automatizezi, Investitiile initiale sunt mai mari decat in cazul testarii
manuale
2. Nu se poate automatiza totul, anumite teste trebuiesc facute manual
Testarea regresiv
Testarea regresiv reprezint o treapt deosebit de important pentru echipele care doresc s
dezvolte procese accelerate. Ca modalitate de lucru, prevede repetarea testrii cu date de test i n
condiii identice, pentru fiecare nou versiune intern a unui produs soft. Prin compararea
rezultatelor testrii i identificarea diferenelor se depisteaz erorile nou aprute; acest lucru este
deosebit de util pentru maniera actual de dezvoltare a aplicaiilor RAD - Rapid Application
Development, care implic utilizarea instrumentelor vizuale de programare i se caracterizeaz
prin apariia unui numr mare de modificri ntr-un interval scurt de timp.
Se apreciaz c utilizarea instrumentelor de testare aduce beneficii comparativ cu efectuarea
manual a testelor, deoarece:
64
testarea manual, chiar n cazul unei planificri riguroase, prezint riscul neidentificrii
erorilor din neatenie sau din cauza nerespectrii riguroase a cazurilor de test prevzute;
testarea manual solicit un consum intens de resurse umane, care sunt costisitoare i nu
ntotdeauna disponibile;
testarea manual este nceat comparativ cu testarea automatizat; adesea apare problema
dezvoltrii unor noi versiuni interne ale componentelor nainte de testarea complet a
versiunilor precedente;
Aanalizor de acoperire evalueaz gradul n care structura codului testat a fost acoperit
prin cazurile de test, astfel de instrumente sunt utile pentru identificarea poriunilor de cod
netestate;
Generator de cazuri de test este un instrument care, pe baza unor informaii precum
cerine, modele ale datelor, modele obiectuale; generaz cazuri de test semnificative,
avantajul este eliminarea redundanei n testare, prin determinarea cazurilor de test care
asigur acoperirea ct mai mare a codului; aceast activitate, executat manual, este
dificil;
Instrumente Case
Prin instrumente CASE nelegem aplicaiile soft care-i sprijin pe analiti, proiectani,
programatori, inclusiv personalul de testare i ntreinere, s analizeze, s proiecteze, s
implementeze (cel puin parial), s modifice (extind), respectiv s construiasc teste pentru
sistemele informatice.
65
Un produs de tip CASE reprezint, aadar, o colecie de metode, instrumente i procese utilizate
n ingineria soft-ului asistat de calculator. Aceste produse ofer suport pentru automatizarea
metodelor i tehnicilor folosite pe parcursul ciclului de dezvoltare de sisteme informatice, de
aplicaii, de programe.
Utilizarea instrumentelor CASE nu este astzi o problema de mod, ci de eficien n activitatea
de proiectare, realizare i/sau dezvoltare de produse soft. ntr-un domeniu dinamic si inovator
apare permanenta nevoie de adaptare a proceselor de desfurare a afacerilor i a soluiilor care le
implementeaz. Meninerea sistemelor existente devine din ce n ce mai costisitoare, mai riscant
i mai ineficient.
A28.
A29.
A30.
A31.
A32.
Termeni cheie:
Testare automatizat
Script de testare
Instrument specific de testare (Test Tool)
Coded UI
Selenium IDE
Cerinele moderne fa de elaborarea produselor program constau n:
Elaborare n termeni minimali;
Elaborare cu resurse minimale;
Investete ct mai puin => Venituri ct mai mari
Acest deziderat aduce la aceea c:
90% din proiecte nu sunt finisate la timp;
67% de dezvoltatori regulat nu se includ n termeni;
66
teorii coerente a testrii automate. Creterea gradului de generalitate este o chestiune legat de
experiena acumulata n procesul testrii, coroborat cu utilizarea unor tehnici i metode evoluate
de extragere a informaiilor dintr-un text sursa devenit intrare pentru un produs soft orientat pe
testare automat.
Mecanismele necesare testrii automate vizeaz de la problem la problem realizarea unor
componente care s efectueze i prelucrrile inverse proceselor pentru care s-a elaborat produsul
soft. n aceste situaii speciale, mecanismul de testare automat este cel prezentat n figura
alturat.
Din figur se identific urmtoarele elemente care apar n testarea automat a produselor
soft specializate:
G generatorul de date de intrare;
D datele de intrare generate;
P programul supus testrii;
R rezultate obinute prin programul P cu datele de intrare D;
P programul care implementeaz un algoritm invers celui implementat n
programul P sau un algoritm pentru verificare;
D rezultate obinute de programul P;
V program care compar rezultatele generate cu rezultatele obinute.
n funcie de specificul aplicaiei, fluxurile prezentate n figura dat variaz, ns principiul
acestui mecanism de testare automat rmne acelai.
Cele mai importante ntrebri la automatizarea testelor:
De ce s automatizm?
Ce s automatizm;
Cum s automatizm.
68
69
71
72
74
8. Modificm
proprietatea
Copy
to
output
Microsoft.VisualStudio.TestTools.UITesting.WinControls;
10. Modificm metodele de testare:
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\data.csv",
"data#csv",
DataAccessMethod.Sequential),
DeploymentItem("data.csv"), TestMethod]
public void CodedUITestMethod1()
{
this.UIMap.UICalculatorWindow.UIItemWindow.UIItem7Button.SearchProperties[Win
Button.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();
this.UIMap.UICalculatorWindow.UIItemWindow2.UIItem8Button.SearchProperties[Wi
nButton.PropertyNames.Name] = TestContext.DataRow["Num2"].ToString();
this.UIMap.AddTwoNumbers();
this.UIMap.ValidateSumTwoNumbersExpectedValues.UIItem15TextDisplayText1
=
TestContext.DataRow["Sum"].ToString();
this.UIMap.ValidateSumTwoNumbers();
}
75
Instrumentele pentru testarea performanelor aplicaiilor web sunt folosite pentru a testa
aplicaii web i interfee legate de web. Aceste instrumente sunt folosite pentru performan,
sarcin, i teste de stres pentru aplicaii web, site-uri web, servere web i alte interfee web.
Instrumentele pentru testarea performanelor aplicaiilor web simuleaz utilizatori virtuali. Astfel,
instrumentul este util pentru a verifica strangulrii n trafic i probleme de performan ale siteului sau aplicaiei web n curs de testare.
Un astfel de instrument se confrunt cu diverse provocri n timpul testrii i ar trebui s
fie n msur s efectueze teste pentru:
Compatibilitate browser
Compatibilitate sistem de operare
Compatibilitate aplicaie Windows, n cazul n care este necesar
Selenium IDE (Integrated Development Environment) este un utilitar folosit la dezvoltarea
cazurilor de test Selenium. Este un plug-in pentru Firefox, eficient n dezvoltarea cazurilor de
testpentru testarea aplicaiilor web.
Cele mai folosite comenzi n Selenium IDE sunt:
open
click/clickAndWait
verifyTitle/assertTitle
verifyTextPresent
verifyElementPresent
verifyText
verifyTable
waitForPageToLoad
waitForElementPresen
77
78
Item 2
configurarea testrii
specificarea testrii
nregistrarea testrii
planificarea testrii
Item 3
79
1)
2)
3)
4)
5)
Item 6
Invalid
Fail
Blocat
Pass
80
Item 7
81
nUnit
Selenium
Coded UI
TestTopia
Visio
Item 11
Dintre grafurile fluxului de date, propuse mai jos, selectai graful pentru
urmtoarea secven de cod:
/* Funcia calculeaz puterea nenegativ n a numrului x */
1 double Power (double x, int n) {
2 double z= 1; int i;
3 for ( i = 1;
4
i <= n;
5
i++ )
6
{z = z * x;}// intoarcere la rindul 4
7 return z;
}
Selectai unul din 5 variantele de rspuns:
1)
2)
3)
82
4)
5)
Item 12
Programare extremal
Agile
Code-and-Fix
Spirall
Waterfall
Item 13
Care dintre fazele ciclului de via a produsului program enumerate mai jos
urmeaz dup etapa de proiectare a produsului program:
Selectai unul din 5 variantele de rspuns:
1)
2)
3)
4)
5)
ntreinere
analiz
implementare
specificarea cerinelor
testare
Item 14
Funcionalitate
Fiabilitate
Eficien
Portabilitate
1)
2)
3)
4)
5)
Maturitate
Securitate
Timp de execuie
Co-existen
Putere de atracie
Item 15
Waterfall
Spiral
Agile
V-model
Item 16
2)
Verificare c produsul
realizeaz ceea ce trebuie s
realizeze
Verificarea situaiilor de
excepie ale produsului
program.
Negativ
1)
Pozitiv
2)
3)
Excepional
Item 17
5)
1)
2)
3)
4)
5)
6)
7)
Analiza cerinelor
Realizarea testelor
Testare de sistem
Depnarea testelor
Planificarea
verificrilor
Exploatare i
mentenan
Proiectarea testelor
1)
2)
Item 19
Dintre afirmaiile de mai jos selectai de ctre cine este efectuat testarea
Beta?
Selectai unul din 4 variantele de rspuns:
84
1)
2)
3)
4)
2)
3)
4)
85
Rapunsuri:
#1 (2 p.)
#2 (1 p.)
#3 (1 p.)
#4 (1 p.)
#5 (1 p.)
#6 (1 p.)
#7 (3 p.)
#8 (3 p.)
2, 4, 5
#9 (1 p.)
#10 (1 p.)
1, 2, 3
86
#11 (2 p.)
#12 (1 p.)
#13 (1 p.)
#14 (1 p.)
#15 (2 p.)
2, 3
#16 (2 p.)
1=2, 2=1
#17 (1 p.)
2, 4, 5
#18 (3 p.)
#19 (1 p.)
#20 (1 p.)
2, 3
87