Documente Academic
Documente Profesional
Documente Cultură
INGINERIE SOFTWARE
Studenti:
Damian Alexandra
Nae Daniel Madalin
Paun Florin
Grupa 441A
Cuprins
Testarea etap a ciclului de dezvoltare software.......................................2
Fazele procesului de testare software..........................................................8
Testarea funcional...................................................................................11
Testarea software orientat obiect...............................................................15
Testarea sistemelor distribuite bazate pe tehnologia Internet..................19
Modele de organizare a aplicaiilor distribuite...........................................20
Avantajele sistemelor distribuite................................................................23
Testarea sistemelor distribuite bazate pe componente.............................27
BIBLIOGRAFIE.............................................................................................32
Stundeti:
Nae Daniel Madalin:
Testarea etap a ciclului de dezvoltare software
Fazele procesului de testare software
Testarea sistemelor distribuite bazate pe componente
Damian Alexandra:
Testarea funcional
Testarea software orientat obiect
Paun Florin:
Testarea sistemelor distribuite bazate pe tehnologia Internet
Modele de organizare a aplicaiilor distribuite
Avantajele sistemelor distribuite
Introducere:
Testarea reprezint o etap important n procesul de realizare a produselor
software. Ponderea cheltuielilor cu testarea reprezint ntre 30% i 50% din totalul
cheltuielilor pentru dezvoltarea unei aplicaii software.
Tehnicile i metodele moderne de elaborare a produselor software acord o
importan deosebit efortului de nlturare a erorilor de analiz, proiectare i programare
prin folosirea unor mijloace evoluate de testare.
Aceasta lucrare Tehnici de testare software prezint procesul de testare, tehnicile i
metodele de testare specifice aplicaiilor software. Sunt avute n vedere aplicaiile clasice,
aplicaiile realizate utiliznd tehnologii orientate obiect i aplicaiile distribuite. n lucrare sunt
fcute referiri la utilizarea tehnicilor de testare pentru aplicaia e-DSI (electronic Domestic
Services Integration - aplicaia de servicii casnice electronice)
procesului de V & V.
Validarea este mulimea activitilor care asigur c o aplicaie software
realizat este n concordan cu cerinele beneficiarului. Pe msura dezvoltrii
incrementale aplicaiei e-DSI rezultatele din
fazele intermediare sunt
validate de ctre beneficiar.
Testarea sau analiza static are ca scop examinarea aplicaiilor software
fr a fi executate i cuprinde activiti precum inspeciile, execuia simbolic i
verificarea. Aceste activiti fac parte din categoria evalurile tehnice [MYER79].
Inspeciile codului presupun citirea sau inspecia vizual a codului surs de
ctre un grup de persoane. Avnd la dispoziie codul surs i specificaiile de
proiectare, grupul de persoane din echipa de inspecie urmrete explicaiile
programatorului legate de logica programului, instruciune cu instruciune. n acest
mod se descoper o serie de erori specifice acestei metode cum ar fi: declararea
datelor, referirea datelor, erorile de calcul, erorile de comparare, erorile de logic,
erorile de intrare/ieire, erorile de interfa etc.
Parcurgerile constau n citirea sau inspecia vizual a codului surs de ctre
un grup de persoane, ns procedura de lucru este diferit avnd ca scop execuia
logic a fiecrei secvene de cod de testat pe baza unor seturi de test pregtite
anterior. Prin urmrirea programului pas cu pas sunt identificate erori care apar la
acest nivel. Rezultatele acestei activiti de verificare depind, ca i n cazul
inspeciilor codului, de atitudinea echipei fa de persoana care a scris programul,
avnd n vedere faptul c atenia trebuie acordat programului care se verific i nu
celui care l-a scris.
Verificarea de birou este o tehnic de analiz static n care listingurile
codurilor sau rezultatele testelor sau alte documente sunt examinate vizual, de
obicei de persoana care le-a realizat, pentru a identifica erorile sau abaterile de la
standardele de dezvoltare sau alte probleme.
Testarea dinamic presupune examinarea aplicaiilor software n scopul
generrii datelor de test cu care acestea vor fi executate i rularea aplicaiilor cu
seturile de date de test obinute. Se observ c spre deosebire de testarea static,
testarea dinamic presupune execuia aplicaiei care se testeaz. Exist dou
strategii de dezvoltare a cazurilor de test: o strategie bazat pe structura
programelor i o alta, bazat pe funcionalitatea acestora.
n dezvoltarea unui produs software testarea se realizeaz pe mai multe
niveluri: testarea de module, testarea de integrare, testarea de sistem i testarea
de acceptare (validare). n figura 2.2 este prezentat procesul de verificare i
validare n cadrul ciclului de dezvoltare a unui produs software [TEST90]. Se
identific etapele de realizare a aplicaiei precum i etapele i nivelurile procesului
de testare software.
Testarea funcional
Testarea funcional (black-box testing) este o strategie de testare care necesit
cunoaterea comportamentului extern al programului pe baza specificaiilor. Testarea
funcional nu necesit cunoaterea structurii interne a programului sau cunotine
despre modul n care este implementat programul sau modulul.
11
12
Testarea structural se realizeaz pentru fiecare fiier Java generat. Pentu testare se
utilizeaz instrumentele Jakarta Cactus, HttpUnit i Junit..Este analizata cu precadere
metoda
_jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
13
14
-Cale
de
testare
-Fluxul
de
date
Exist trei aspecte ale codului, care sunt validate de tester n caseta de culoare alb, i
anume:
->n cazul n care software-ul a fost conceput ca in design-ul original al software-ului.
->n cazul n care msurile de securitate au fost puse n aplicare n software i este robust.
->Aflai
vulnerabiliti
n
software-ul
descris.
Avantajele
de
Testare
White
Box:
1.Deoarece cunoaterea structurii interne de codificare este condiie prealabil, devine foarte
uor a afla ce tip de date de intrare pot ajuta la testarea aplicatiei in mod eficient.
2.Cu toate acestea, un alt avantaj de testare white box este acela c ajut la optimizarea
codului.
3.El ajut la eliminarea liniilor suplimentare de cod, care pot introduce defecte n cod.
Dezavantaje
de
Testare
White
Box:
1. Pe msur ce cunoaterea de cod i structura intern este o condiie esenial, un tester
de calificare este necesar pentru a efectua acest tip de testare, i acest lucru, la rndul su,
crete
costul
software-ului.
2.Este aproape imposibil s se uite n fiecare bit de cod pentru a afla de erori ascunse, care
pot crea probleme, rezultnd n insuficiena cererii.
Tipuri
de
testare
care
au
la
baza
aceasta
metoda:
1.Unitatea
de
testare
Dezvoltatorul efectueaz unitatea de testare, n scopul de a verifica dac modulul special
sau unitatea de cod lucreaza bine. Unitatea vine de la testarea la nivel foarte de baz, dup
cum se desfoar i n cazul n care unitatea de cod este dezvoltata sub o funcie
speciala.
2.Analiza statice si dinamice
n timp ce analiza statica presupune parcurgerea codului n scopul de a afla orice defect este
posibil n cod, analiza dinamic implic execuia i analiza codului de la ieire.
3.
Acoperirea
declaratiilor
n acest tip de testare, codul este executat n aa fel nct fiecare declaraie a cererii este
executata cel puin o dat. Ajut la asigurarea c toate declaraiile sunt executate fr nici
un efect secundar. Diferite instrumente de management de acoperire sunt utilizate pentru a
evalua procentul de elemente executabile, care sunt n prezent testate. (Aceste instrumente
sunt
folosite
att
pentru
situaie,
precum
i
acoperirea
legaturilor).
4
Acoperire
Filiala
Nici o cerere de software nu poate fi scrisa ntr-un mod continuu de codificare. La un
moment dat avem nevoia de a ramifica n codul descris sau de a efectua o anumit
funcionalitate. Sucursala de acoperire a testarii ajut la validarea tuturor ramurilor n cod i
ajut asigurand c nici o ramificare nu duce la un comportament anormal a cererii.
5.Scurgeri
de
memorie
a
testarii
Atunci cnd un cod este scris, exist posibilitatea de a exist o problem de scurgere de
memorie n cod, ceea ce face codul sa fie defect. Prin urmare, n timpul fazei de testare
white box de cod este testat pentru a verifica, dac exist scurgeri de memorie n cod. n
caz de scurgere de memorie, mai mult memorie este necesara pentru software-ul i acest
lucru
afecteaz
viteza
de
software
aceasta
fiind
foarte
mica.
6.
Testarea
securitii
15
Testarea securitii se efectueaz n scopul de a afla cat de bine sistemul se poate proteja
mpotriva accesului neautorizat, hacking , care se ocup cu codul de aplicare. Acest tip de
testare
are
nevoie
de
tehnici
sofisticate
de
testare.
7.
Testarea
Mutatiei
Este un fel de testare, n care, cererea este testata de codul ce a fost modificat dup
stabilirea unui anumit bug / defect. De asemenea, ajut n a afla care cod i care strategia de
codificare poate ajuta n curs de dezvoltare funcionalitatea n mod eficient.
Pe langa toate tipurile de testare de mai sus, exist unele tipuri, care intr sub incidena att
cutiei neagr i a strategiilor de testare white-box, cum ar fi: testarea funcional (care se
ocupa cu codul, pentru a verifica performanele sale funcionale), testarea de integrare
elementara (care se ocup cu testarea de cod nou adugat n cerere), performan i
testare de ncrcare (care ajut n a afla modul n care gestioneaz resursele un anumit cod
i ofer performan), etc Din moment ce acestea se ncadreaz n caseta de culoare alb,
precum i cutie neagra este dificil s se clasifice n oricare dintre cele dou tipuri generale
de testare software.
16
membre. Metodele unei clase nu mai pot fi testate izolat, ci n contextul clasei creia
aparin.
Testarea software orientat obiect are pe lng obiectivul general al stabilirii
msurii n care produsul software realizeaz sarcinile prezentate n specificaii, obiective
specifice legate de:
testarea funciilor membre ale fiecrei clase;
testarea gradului de ncapsulare i a efectelor acestuia;
testarea efectelor induse de nivelurile de motenire i de derivare;
testarea efectelor induse de polimorfismul funciilor membre;
testarea interaciunilor dintre clase.
Spre deosebire de aplicaiile software dezvoltate prin alte metode, n cazul
programrii orientate obiect testarea vizeaz i msura n care clasele sunt proiectate n
vederea reutilizrii. Astfel, se evideniaz gradul de generalitate i, mai ales, concordana
ntre specificaiile fiecrei funcii i ceea ce funcia realizeaz efectiv.
Rezultatul testrii vizeaz dou aspecte:
secvena referirilor determin pentru exemplele de test rezultate acceptabile sau
nu, ceea ce se rsfrnge asupra produsului ca atare;
rezultate privind msura n care clasele definite sau referite acoper cerinele
unei reutilizri confortabile, fr nevoia de a construi interfee sau de a realiza
derivri n obinerea de clase noi cu un nivel de saturare redus, create n mod
special i destinate unor utilizri cu totul particulare.
Dac produsul este acceptat pentru calitile lui n raport cu problema de rezolvat,
nu este obligatorie i acceptarea claselor definite. n acelai fel, clasele definite pot
ndeplini condiiile de reutilizare, fr ca programul s fie acceptat n urma testrii.
n ciuda avantajelor pe care limbajele i metodologiile orientate obiect le ofer,
testarea rmne necesar. Destul de des sistemele complexe produc rezultate
neanticipate. Rolul testrii n domeniul orientat obiect deriv din mai multe lucruri, dar n
principal din faptul c acele componente realizate pentru reutilizare trebuie s fie de
nalt fiabilitate. O testare extensiv trebuie asigurat atunci cnd este destinat
reutilizrii. Testarea este necesar pentru a obine o nalt fiabilitate n sistemele
orientate obiect.
Paradigmele ingineriei software orientate obiect sunt ascunderea informaiei, motenirea
i polimorfismul. Acestea influeneaz modul n care se testeaz aplicaiile orientate
obiect fa de aplicaiile clasice.
Ascunderea informaiei presupune c sunt vizibile doar acele informaii care sunt
necesare la un moment dat n scopul atingerii unor obiective specifice. Dac sunt
accesibile mai multe informaii dect este necesar, crete posibilitatea apariiei erorilor. n
msura n care limiteaz domeniul de accesibilitate, ncapsularea cu ascunderea
informaiei este un obstacol pentru testare, innd cont de faptul c strile implementate
nu mai sunt controlabile i observabile. Pentru clasa CosCumparaturi, accesul la data
membr n ar fi imposibil dintr-o funcie de test dac n clas nu ar exista metoda care
returneaz valoarea acestui membru.
Motenirea se definete ca fiind o relaie ntre clase n cadrul creia o clas
partajeaz structura sau comportamentul definite ntr-o alt clas (motenire simpl) sau
n mai multe clase (motenire multipl) [BOOC91]. Noi oportuniti de eroare vin odat
cu puterea crescut a limbajelor orientate obiect. Fiecare nivel nou n ierarhia de
moteniri este un nou context pentru caracteristicile motenite. Comportamentul corect la
un nivel superior al ierarhiei nu garanteaz n nici un fel comportamentul corect la un
nivel inferior.
17
Polimorfismul este exemplul cel mai practic al reutilizrii, fiind prin definiie
capacitatea unei entiti de a lua mai multe forme. Legarea dinamic joac un rol n
determinarea cerinelor testrii, dar numai n contextul testrii de integrare. Legarea
dinamic creeaz posibilitatea unui set de mesaje (combinaii de obiecte emitoare i
receptoare de mesaje), ceea ce nseamn c va fi nevoie de mai multe teste (n locul
unuia singur) pentru a testa un mesaj specific. Polimorfismul i legarea dinamic cresc
foarte mult numrul cilor posibile de execuie. Analiza static a codului surs pentru
identificarea cilor nu mai este de mare ajutor n acest nou context.
Sunt prezentate nivelurile la care sunt testate programele orientate obiect:
nivel algoritmic; metodele claselor sunt tratate independent; aplicarea tehnicilor de
testare clasice se realizeaz fr probleme;
nivelul clasei; clasa este testat ca o entitate de sine stttoare; sunt integrate
metodele care au fost testate la nivelul anterior;
nivel de grup (cluster); testarea se concentreaz asupra integrrii claselor; se au n
vedere apelurile de metode efectuate ntre clase i sincronizrile dintre obiectele
concurente;
nivel de sistem; sunt testate interaciunile dintre grupurile de clase.
Este prezentat o metod de testare ierarhic a aplicaiilor software orientate
obiect. Aceast metod de testare se utilizeaz i se construiete pe baza unor tehnici
de testare cunoscute, legate mpreun ntr-un sistem de testare corespunztor. Metoda
definete i aplic standarde de testare pentru cteva niveluri ale componentelor
software: obiecte, clase, componente de baz i sisteme.
Metoda de testare ierarhic const n desemnarea ca fiind corespunztoare acele
componente care ndeplinesc standardele de testare pentru tipul respectiv de
component. Odat ce o component a fost calificat drept corespunztoare prin
testare, aceasta va fi integrat cu alte componente care au fost desemnate ca fiind
corespunztoare, pentru a realiza mpreun componentele de pe nivelul urmtor.
Starea de a fi corespunztor pentru o component este relativ i depinde foarte
mult de standardele utilizate pentru realizarea aplicaiei, de atitudinea fa de risc, de
riscurile specifice i de practicile de management al riscului adoptate n cadrul
proiectului.
Metoda ierarhic elimin obligativitatea testrii tuturor combinaiilor de stri n
timpul testrii de integrare, ceea ce duce la creterea productivitii prin accesarea doar
a interconexiunilor dintre componentele de baz i orice funcionalitate complex nou.
Metoda de testare ierarhic este reprezentat grafic n figura 2.10.
Testarea ierarhic este utilizat pentru software cu grad de complexitate ridicat.
Aplicaiile distribuite dezvoltate folosind tehnologii orientate obiect intr n aceast
categorie n cadrul testrii ierarhice, sunt utilizate urmtoarele suite de teste:
suita de teste condiionale care const din testarea claselor utiliznd modelul de
testare condiional i aseriunile, excepiile, operaiile de testare concurente
adiionale;
suita de teste ierarhice incrementale utilizat pentru testarea componentelor de
baz prin diverse modele de testare i scenarii;
suita de teste de integrare pentru testarea combinaiilor de componente de baz
utiliznd modelul ierarhic incremental cu scenarii care utilizeaz toate
componentele, nu doar module vide;
suita de teste de sistem care are ca scop testarea sistemelor componentelor de
baz utiliznd modele de testare de sisteme;
suita de teste de regresie pentru a testa componentele de baz i sistemul.
18
Testarea
sistemelor
distribuite
tehnologia
Internet
bazate
pe
20
1. Sistemele conin resurse fizice sub forma procesoarelor, imprimante, etc. precum i
resurse logice sub forma proceselor, fiierelor etc.
2. Strategia folosit pentru controlul resurselor poate fi centralizat ierarhic sau s permit
o
autonomie complet a procesoarelor individuale peste resursele locale. Aceast ultim
abordare necesit o cuplare slab ntre componentele sistemului (de exemplu reelele de
calculatoare).
3. n multe cazuri se ncearc obinerea unei transparene, n sensul c sistemul apare ca un
sistem unic, uniform, ascunznd distribuia fizic i neomogenitatea componentelor sale.
Datele distribuite
1. Una din resursele majore ce necesit control i din partea sistemului i din partea
aplicaiei
sunt datele.
2. Datele n curs de procesare pot fi distribuite prin: replicare (copii multiple la locaii
diferite); partiionare (pri ale lor sunt stocate n diferite locaii).
3. Datele sunt adesea distribuite att pentru a crete tolerana la defecte, ct i pentru a
permite creterea perfor
4. manei prin stocarea datelor n apropierea zonelor unde sunt produse sau folosite.
21
foarte puternice i distribuite pe o arie mare, pentru rezolvarea unor probleme de o mare
complexitate.
Modele arhitecturale specifice. Modelul cu acces neuniform la memorie NUMA (Non
Uniform
Memory Acces). NUMA cu memorii locale distribuite este o structur de sistem strns cuplat
folosit de obicei n cazul supercalculatoarelor. NUMA ierarhic cu clustere (ciorchine sau
grupare de staii de lucru legate printr-o reea care coopereaz la realizarea unui el comun).
Clusterul poate fi de tip NUMA sau UMA. Cazul conectrii tip Butterfly local este cel mai
rapid,
iar cel la distan cel mai lent.
22
4. modelul ierarhic: resursele de prelucrare sunt organizate (fizic sau logic) ntr-o reea de
prelucrare arborescent. n mod curent, nivelurilor mai nalte ale ierarhiei le sunt asociate
resurse de prelucrare mai puternice.
5. modelul cache: se bazeaz pe prelucrri realizate etap cu etap, efectuate de diverse
elemente de calcul, i pe combinarea rezultatelor pariale pe un alt element de calcul, de
regul mai puternic. O strategie de partajare a operaiunilor este adecvat n acest caz.
1. n sistemele de operare pentru reele de calculatoare se utilizeaz de cele mai multe ori
modelul client-server.
2. n acest caz sistemul de operare conine, n afar de nucleu, un grup de procese numite
servere, care ofer servicii proceselor utilizator, acestea devenind astfel clieni.
3. Exist procese specializate care realizeaz diferite servicii, cum ar fi: lucrul cu fiiere,
compilare, tiprire etc. Un proces care are nevoie de o astfel de aciune, o cere de la unul din
serverele care sunt dedicate pentru respectivul tip de problem.
4. n timpul execuiei diferite procese pot fi att client, ct i server; de exemplu serverul de
fiiere poate deveni client pentru serverul care ofer timpul curent.
5. Dac att serverele, ct i clienii se execut n spaiul de memorie utilizator, structura
nucleului se simplific mult, rolul acestuia din punctul de vedere al comunicaiei
restrngndu-se la trimiterea i recepionarea de mesaje.
6. Dac realizarea comunicaiei se bazeaz pe operaii de tipul transmisie sau recepie,
nseamn c elementele principale utilizate n programare sunt de tip operaie de
intrareieire.
7. Activitile din timpul execuiei unei aplicaii distribuite sunt asociate de obicei,
abstractizrii
de proces si ele nu vor putea s existe dect ca pri ale aplicaiei.
8. Un sistem client-server este realizat pe trei nivele, cel al prezentrii, cel al aplicaiei i cel
alaccesului la date. Separarea fizic a celor trei nivele se numete partiionarea aplicaiei.
23
Fig1.Arhitectura client/server
Aplicaiile distribuite acioneaz ntr-un mediu foarte diferit de cel al aplicaiilor client/server.
In paradigma client/server, componentele aplicaiei software sunt folosite de ctre
calculatorul client si calculatorul server. In mediul aplicaiilor distribuite, aplicaia poate avea
componente care s ruleze pe mai multe calculatoare din reea. Diferena dintre client i
server dispare. n mod evident, o component a unei aplicaii distribuite acioneaz att drept
client, ct i ca server.
permite ca, n cazul defectrii sau blocrii unei resurse, sistemul s continue activitatea
resurselor critice, n acest caz, pot avea control dublu sau triplu dac softul este proiectat n
stil tolerant la erori, sistemul poate continua absolut toate calculele n curs, prin redirectarea
taskurilor de calcul care nu mai rspund spre alte procesoare
5. Performana este n general definit n termenii timpului de rspuns la un anumit grad de
ncrcare timpul de rspuns poate fi sczut, n mod particular dac majoritatea procesrii
este fcuta local paralelismul datorat nodurilor multiple reduce defeciunile i ncetinirile ce
pot aprea la nivelul proceselor de calcul i genereaz o cretere a performanei globale
software-ul local poate fi folosit i la preprocesarea sau compactarea datelor, reducndu-se
astfel ncrcarea pe reeaua de comunicaie i crescnd performanele sistemului.
25
Baza de
date
Server
Server
Navigator
De
Web
Aplicatii
Baza de
date
B
27
Testarea
sistemelor
componente
distribuite
bazate
pe
28
Dac pentru parametrul de ieire r nu se specific atributul out, atunci dei la compilarea
interfeei cu compilatorul MIDL nu se va constata nici o eroare, la utilizarea metodei se
va constata c r nu reprezint suma lui a i b. Majoritatea erorilor de programare apar n
implementarea serverului. Codul client poate conine de asemenea erori de programare.
Deseori apar erori n apelurile metodelor serverului, fie prin specificarea ordinii incorecte
a parametrilor, fie prin utilizarea incorect a parametrilor. De exemplu, corespunztor
interfeei de mai sus n codul client, n care se dorete efectuarea calculului z=x+y prin
apelul metodei Suma a interfeei ICalcul, exist secvena:
double x=30.00993, y=88.49494, z=0.0;
ICalcul *pIC; // pIC->Suma(x,z,&y); //
probleme la nivelului ORB (de exemplu zona tampon a acestuia este plin);
probleme legate de securitate i autentificare;
probleme de sincronizare.
Este prezentat un model de testare distribuit (figura 2.15), precum i un limbaj ablon
pentru testarea sistemelor distribuite.
30
BIBLIOGRAFIE:
ANDREW TANENBAUM-Computer Networks
http://www.freetutes.com/systemanalysis/sa9-testing-quality-assurance.html
Glenford Myers, Corey Sandler, Tom Badgett-Art of Sotware Testing
http://en.wikipedia.org/wiki/Software_testing
http://www.softwareqatest.com/
31