Sunteți pe pagina 1din 8

Introducere în testarea automată

Data : 25 Martie 2002


Autori : Despina Eftimescu (de@secure-net.de), Alexandru Ilioiu (ai@secure-net.ro)

Introducere
În noua economie, producătorii de soluţii IT sunt confruntaţi cu o nouă cerinţă care îi obligă să
schimbe total modul de construcţie a unui produs, fără a face compromisuri de calitate. A fi primul pe
piaţă cu ultimele tehnologii este mai important ca oricând. Lucrând cu o infrastructura software şi
hardware din ce în ce mai complexă, confruntaţi cu creşterea continuă a cerinţelor de calitate şi cu
necesitatea reducerii costurilor, firmele de software încep să preţuiască tot mai mult soluţii solide,
inginereşti, de dezvoltare de software.
Testarea produsului este în software o componentă majoră în procesul de dezvoltare.
În limbaj de specialitate se discută despre asigurarea calităţii (Quality Assurance). Firmele din industria
tradiţională – de ex. industria de maşini, de construcţii, de produse electronice sau alimentare au de zeci
de ani departamente de testare şi verificare a calităţii. În materie de software, organizarea şi automatizarea
muncii de testare şi verificare a produselor a început din motive istorice evidente abia în anii '80.
Testarea manuală, mult timp văzută ca singura soluţie de a descoperi eventualele defecte, întârzie
foarte mult lansarea pe piaţă a produsului şi induce cheltuieli semnificative mai ales în cazul descoperirii
efectelor laterale – atât în procesul dezvoltării unei aplicaţii cât şi în cazul de schimbări ulterioare.
Totodată procedurile de testare manuală, prin natura lor limitată, nu reuşesc să descopere toate
defectele şi nu au nici o şansă să simuleze condiţii de utilizare simultană, intensivă, a unei aplicaţii.
Există numeroase căi de a îmbunătăţi procesul de testare, una dintre cele mai eficiente fiind testarea
automată.
Testele automate execută o secvenţă de acţiuni fără intervenţie umană şi pot simula utilizarea unei
aplicaţii în condiţii de simultaneitate ridicată. În general, majoritatea produselor necesită să fie testate de
mai multe ori, pe mai multe platforme software şi hardware, ca şi după schimbările ulterioare sau la
lansarea unei noi versiuni de produs. Prin folosirea testării automate, costurile testărilor repetate se reduc
aproape la zero.
Cele mai importante beneficii sunt:
• acoperirea tuturor etapelor de testare de la concepţie până la lansare
• posibilitatea simulării testării cu mai mulţi utilizatori
• posibilitatea repetării testelor
• creşterea siguranţei în produs.
Un sistem de testare automată trebuie să aibă la bază două caracteristici principale:
• module reutilizabile
• întreţinerea şi urmărirea activităţii dintr-un singur punct de control
De aceea una din calităţile care trebuie să le aibă un astfel de sistem este capabilitatea de a fi uşor
configurat şi adaptat în acelaşi ritm cu software-ul ce se testează .
Sistemele de testare automată sunt o tehnologie în plină dezvoltare care au ca scop descoperirea şi
raportarea eventualelor defecte, mărirea longevităţii produsului şi reducerea procesului de întreţinere.
Testarea automată înseamnă mai mult decât o simplă captură de ecran şi răspunsul la câteva scripturi : ea
trebuie să înceapă cu planificarea şi design-ul procedurii de testare, să conţină o serie de teste repetabile, o
interfaţă de management al scenariilor de test şi un mecanism de raportare şi gestionare a bug-urilor
descoperite în urma testării. Un sistem de test evoluat sprijină utilizatorii printr-un sistem de documentare
pe tot parcursul acestui proces.
Într-o abordare mai detaliată testarea automată înseamnă:
1. planificare
1. identificarea cerinţelor şi a funcţionalităţilor
2. gruparea acestora în condiţii de test
3. crearea cazurilor de test pentru aceste condiţii
2. design
1/8
1. construcţia scripturilor de test
2. generarea testelor de rulare
3. execuţie
1. crearea scenariului de rulare a scripturilor
2. rularea uneltelor monitor pentru înregistrarea datelor
3. înregistrarea rezultatelor pentru fiecare rulare
4. raportarea şi gestionarea bug-urilor
4. management
1. generarea rapoartelor şi graficelor
2. controlul dintr-un singur punct de comandă
3. documentarea permanentă a stadiului curent al proiectului

Tipuri de testare automată :


1. structurală (white-box testing) - se verifică structura software-ului şi necesită acces complet la
codul sursă. Acest tip de testare verifică dacă structura codului este eficientă: bucle complicate,
zone de date comune, mii de linii de cod încurcate sunt numai câteva din problemele care pot fi
îndepărtate. Scopul acestui test este mărirea performanţei aplicaţiei şi a lizibilităţii codului.
2. funcţională (black-box testing) – se definesc aşteptările clientului de la aplicaţie şi se verifică
automat dacă software-ul se comportă conform acestor aşteptări. Prin testele ce se execută se
observă comportamentul aplicaţiei, evidenţiat prin datele de ieşire, fără a se face referire la
funcţiile interne.
3. regresivă (regression testing) - se verifică dacă s-a modificat neaşteptat comportamentul aplicaţiei
în urma implementării unor noi cerinţe/schimbări (change requests).
4. negativă (negative testing) - se solicită aplicaţia, producând deliberat cazuri complicate,
neobişnuite sau particulare pentru a forţa apariţia erorilor.
5. de solicitare (stress testing) - se determină capabilităţile absolute ale aplicaţiei şi ale infrastructurii
pe care este implementată; cu ajutorul acestui tip de test se dezvăluie caracteristicile de
performanţă ale unui sistem menţinut în condiţii de încărcare totale, adică sunt pornite şi rulate
toate serviciile care în mod normal ar fi fost rulate separat în timp şi independent.
6. de performanţă (performance testing) - în urma acestui tip de testare se verifică dacă performanţa
aplicaţiei este adecvată pentru cerinţele stabilite, în termeni de viteză de acces, resurse de sistem
utilizate şi procesarea cererilor de acces.
7. de încărcare (load testing) - se determină punctele slabe ale aplicaţiei şi dacă sunt necesare
îmbunătăţiri ale infrastructurii hardware sau software prin măsurarea caracteristicilor de
performanţă şi scalabilitate a principalelor componente ale aplicaţiei web; de regulă aceasta se
realizează prin creşterea numărului de sesiuni utilizator sau a conexiunilor TCP/IP.

Limitele testării automate


Sunt multe lucruri pe care uneltele de testare automată nu le pot face şi este important să se
cunoască aceste limitări pentru a alege pe cea mai potrivită. Un sistem de testare automată nu poate spune
când ceva "arată bine" pe ecran sau când o poză sau fereastră nu este bine încadrată. De asemenea un test
automat nu poate decide dacă logica programului are lipsuri funcţionale decât în măsura în care au fost
definite complet cerinţele aplicaţiei respective. Unele teste, mai ales pentru aplicaţii mici şi pentru
aplicaţii care se concentrează mai ales pe grafică şi nu pe business logic, sunt mult mai uşor realizabile de
către operatorul uman decât de către un computer. De aceea trebuie alcătuit un plan bine definit al
procedurii de testare, când, unde şi în ce condiţii este fiabilă introducerea automatizării.

Tipuri de unelte pentru testarea automată


Sistemele de testare automată pot include unelte de genul :
• GUI , prin folosirea metodei "înregistrare/redare"
• analizoare de cod - analizează complexitatea codului scris, respectarea unor standarde de scriere
a codului

2/8
• analizoare de memorie - detectează depăşirea memoriei alocate, suprascrieri în zone nealocate şi
zone rămase nedealocate
• testare de solicitare/performanţă - pentru testarea aplicaţiilor web şi client/server în diferite
scenarii de solicitare
• testare servere web - verifică validitatea şi integritatea link-urilor, a codului html, programe
client-side şi server-side, securitatea transmiterii datelor
• alte unelte - pentru managementul documentaţiei, raportării bug-urilor, configuraţiei, etc.

Comparaţie între testarea manuală şi automată


Testarea manuală şi testarea automată sunt mai degrabă două procese diferite, decât două căi
diferite de a executa acelaşi proces : dinamica lor este diferită precum şi modul de a releva bug-urile.
Testarea manuală este mai folositoare în situaţiile în care este nevoie urgent de rezultatele unor
tipuri de teste specifice şi limitate, când se doreşte ca timpul de feedback să fie foarte scurt, iar costurile
să fie relativ mici. Cum îmbunătăţirea calităţii produsului implică costuri adiţionale pentru găsirea bug-
urilor şi gestionarea acestora până la repararea lor definitivă, testarea manuală s-a dovedit a fi în timp
extrem de costisitoare. Testarea manuală pe scară largă presupune alocarea de resurse hardware şi umane
destul de mari, iar riscul să apară erori este amplificat de factorul uman.
Testarea automată necesită un efort iniţial mai mare pentru planificarea, organizarea şi producerea
testului, criteriul principal în obţinerea de rezultate bune fiind planificarea atentă, amănunţită şi precisă a
acestuia.
O alternativă interesantă este aşa-numita "testare parţială". Această soluţie este combinaţie de
jumătate testare manuală şi jumătate testare automată, aceasta din urmă fiind folosită numai acolo unde se
pot obţine beneficii maxime.
Testarea automată se doreşte a fi soluţia ideală pentru reducerea timpului de dezvoltare şi a
costurilor. O echipă de testeri poate să pornească uneltele de testare automată, să le lase să ruleze şi în
final să colecteze şi analizeze rezultatele. Timpul este astfel mai bine organizat şi poate fi petrecut pentru
izolarea şi raportarea bug-urilor.
În zilele noastre sunt multe unelte pe piaţă care pot ajuta la planificarea, execuţia şi crearea de
rapoarte în activitatea de testare. Majoritatea acestor unelte necesită cunoştinţe de specialitate pentru a le
implementa şi utiliza corespunzător. De asemenea, este bine de ştiut, că suitele profesionale de unelte
specializate în asigurarea calitătii oferă întotdeauna un produs de sine stătător care preia partea de
management de proiect şi pe cea de bug reporting/ticketing. Un asemenea produs este de exemplu
TestDirector de la firma Mercury Interactive – market leader în materie de produse pentru asigurarea
calităţii. Acest produs poate fi imaginat ca un summum între un program de management de proiect de
nivelul lui MS Projects şi a unui sistem de ticketing profesional. El poate fi corelat cu diverse sisteme de
versionare folosite în implementare (de ex. CVS) şi poate fi configurat în aşa fel, încât rapoartele
automate create de uneltele de testare şi/sau monitorizare a aplicaţiilor să fie preluate automat în sistemul
de ticketing, astfel că citirea şi interpretarea manuală a rapoartelor de testare nu mai este necesară. Bug-
urile sunt parsate de către TestDirector, care generează pe baza rapoartelor de testare email-uri, sms sau
alte modalităţi de atenţionare a echipei de implementare.
Este de menţionat că un sistem ca TestDirector poate fi folosit pentru partea de management de proiect şi
ticketing şi în combinaţie cu testarea manuală, caz în care informaţiile despre ceea ce trebuie testat se
formalizează drept scripturi sau scenarii de testare, iar rezultatele testului manual trebuiesc introduse de
către tester manual în sistem.
Soluţiile elegante pentru testarea sistemelor sofisticate sunt adesea limitate numai de imaginaţia tester-
ilor.

Câteva dintre avantajele utilizării testării automate sunt:


a) avantaje privind eficienţa şi costurile
• prevenirea erorilor prin abordarea structurată a procesului de dezvoltare a proiectului
• detecţia erorilor care au ajuns până în faza de producţie (prin teste de regresie automată)
• reutilizarea informaţiei acumulate (condiţii de test, scripturi)
• reducerea creării de noi scripturi (refolosindu-le şi adaptându-le pe cele vechi)
3/8
• execuţia automată a testelor de performanţă în fazele de început ale proiectului poate evita
eforturile de redesign în fazele ulterioare
• odată ce scripturile de testare automată sunt implementate, o parte din personal poate fi
redirecţionat către alte necesităţi
b) avantaje privind economia de timp
• analiză rapidă şi exactă în cazul schimbării parametrilor sistemului
• durată scurtă a ciclurilor de testare
• estimări mai exacte pentru procesul de planificare a testului
• posibilitatea efectuării mai multor teste (scripturile de testare pot fi rulate şi după orele de
program economisind astfel timp)
• generarea rapidă a condiţiilor de testare
c) avantaje privind calitatea
• o mai bună înţelegere a scopului testării
• o acoperire mai mare a elementelor de testat
• rezultate mai consistente datorită repetabilităţii testelor
• compararea automată a rezultatelor

Procesul testării automate


Majoritatea uneltelor de testare automată sunt compatibile cu entităţile software ce intervin pe
traseul de la clienţi la furnizorul de aplicaţii. În orice punct de pe traseu se pot face teste si evaluări de
performanţă. În diagrama de mai jos sunt prezentate cele mai cunoscute şi utilizate componente software
ce intervin într-un astfel de proces.

Platforms
Windows NT
Sun
ERP/CRM/SCM
HP
IBM Middleware Oracle Apps.
CORBA Commerce Apps SAP
Linux Ariba
Microsoft (COM) Siebel
Intel BroadVision
BEA (Tuxedo, Jolt) PeopleSoft
IBM MQSeries Blue Martini Baan
Calico
Selectica
Vignette

Internet/Intranet
Clienţi

Web Server
Application
Accelerators Web Server
WAP Database
nCipher Servers
Gateway TimesTen MS IIS Application
CacheFlow Netscape NAS Databases
PeakStone
Servers
Allaire Oracle
Wireless Alteon SQLServer
Arrowpoint SilverStream
Nokia Haht Sybase
OpenWave Resonate Informix
Tower Technology IBM WebSphere
Everypath.com BEA WebLogic IBM DB2
Brience Fireclick EMC
Akamai Sun NetDynamics
Wapforum.Org
AvantGo Hydraweb

4/8
Procesul de testare automată presupune un efort de management deosebit. Acest proces începe
încă din faza de analiză a aplicaţiei şi continuă în toate etapele de dezvoltare. În diagrama următoare se
pot observa etapele procesului, ordinea şi frecvenţa acestora, precum şi locul central pe care îl ocupă
managementul defectelor şi serviciile. Un factor important este menţinerea centrală a comunicării între
etape pentru managementul bug-urilor.

Ce există pe piaţă
Există numeroase soluţii pentru implementarea unui sistem de testare automată, majoritatea
companiilor din acest domeniu oferind atât pachete software cât şi servicii. Market leader este firma
Mercury Interactive a cărei concurenţă directă este firma Rational. Ambele firme oferă atât produse de
testare automată cât şi pentru organizarea centralizată a procesului de testare, management de proiect şi
monitorizare de reţele, baze de date şi aplicaţii în timpul utilizării productive a acestora.
Alte firme (Compuware, Segue, etc) oferă o gamă de produse similare, de obicei incompletă.
Preţurile produselor de testare şi monitorizare profesionale sunt deseori foarte mari (preţuri de 250.000
USD nu sunt neobişnuite). De aceea firmele producătoare oferă şi servicii, cu ajutorul cărora se pot testa /
monitoriza aplicaţiile dumneavoastră fără să fie nevoie de achiziţionarea programelor şi/sau licenţelor
respective.
Există de asemenea şi produse freeware sau open source ca de exemplu Cactus de la Jakarta.
Firme importante ca de exemplu SAP au de obicei pentru produsele lor tool-uri de testare şi monitorizare
integrate. Dat fiind ca domeniul testării automate este extrem de vast şi complex, asemenea firme nu
dezvoltă propriile lor programe pentru aceste funcţionalităţi ci se bazează pe colaborari cu firme
specializate (în cazul SAP – Compuware pentru testare şi Mercury Interactive pentru monitorizare),
creând doar interfeţele de integrare către produsele respective.

5/8
1. Mercury Interactive - www.mercuryinteractive.com

Domeniul Produse Servicii


Application performance Topaz Active watch
management soluţie pentru managementul performanţei din perspectiva serviciu pentru managementul
utilizatorului : recepţionare alerte în timp real, corelarea performanţei din perspectiva
problemelor utilizatorului cu datele sistemului, utilizatorului
managementul nivelelor de service
Production tunning Active tune
serviciu special creat pentru calibrarea
procesului de dezvoltare şi producţie
Enterprise testing
- test management TestDirector
soluţie globală pentru managementul procesului de testare;
conţine patru module : Requirements, Test Plan, Test Lab
şi Defects Manager
Astra FastTrack
unealtă pentru managementul defectelor unei aplicaţii Web

- functional testing Astra QuickTest


unealtă care permite atât testerilor începători cât şi
experţilor să testeze aplicaţiile Web dinamice
WinRunner
soluţie pentru testarea funcţională a aplicaţiilor cu interfaţă
grafică
QuickTest professional
unealtă pentru automatizarea testării funcţionale şi
regresive a aplicaţiilor Web dinamice
XRunner
unealtă pentru automatizarea testării funcţionale la
aplicaţiile tip X-Window

- load testing LoadRunner ActiveTest


soluţie pentru managementul testării de solicitare şi serviciu prin care se poate testa şi
performanţă calibra infrastructura şi aplicaţiile Web în
Astra LoadTest dezvoltare
soluţie rapidă pentru testarea scalabilităţii şi performanţelor ActiveTest SecureCheck
aplicaţiilor Web. serviciu găzduit care testează
LoadRunner TestCenter securitatea aplicaţiilor Web şi a
soluţie completă care permite managementul testării infrastructurilor
multiple, concurente din mai multe locaţii geografice. Toate
resursele sunt centralizate şi accesibile dintr-un singur
punct de control

2. Compuware Corporation - www.compuware.com


Domeniul Produse Servicii
Application performance Abend-AID
management unelte pentru rezolvarea situaţiilor de eşuare a aplicaţiilor supuse testelor
File-AID
unealtă pentru găsirea, extracţia, convertirea şi managementul datelor
PointForward
soluţie pentru testarea şi monitorizarea de la distanţă
QACenter
pachet complet pentru testarea aplicaţiilor
XPEDITER
soluţie pentru analiza şi testarea aplicaţiilor pe mai multe platforme
Production readiness Abend-AID
File-AID
PointForward
QACenter
Quality Assurance Abend-AID
NuMega
unelte pentru îmbunătăţirea productivităţii începând de la aplicaţii simple până
la cele distribuite şi orientate Web
QACenter
Development and Abend-AID
integration File-AID
OptimalJ
unealtă pentru accelerarea dezvoltării aplicaţiilor Java
UNIFACE
mediu pentru dezvoltarea aplicaţiilor mari şi complexe
Vantage
unealtă pentru managementul aplicaţiei : utilizator, reţea, bază de date, server
6/8
3. Segue - www.segue.com

Domeniul Produse Servicii


Application performance management SilkVision
soluţie pentru monitorizarea comportamentului aplicaţiei
SilkTest
soluţie pentru testarea scalabilităţii şi solicitării aplicaţiei
SilkPerformer V
soluţie pentru simularea de performanţă şi solicitare
SilkPlan
pachet de management pentru procese

4. Rational - www.rational.com

Domeniul Produse Servicii


Application performance management Rational Suite TestStudio
pachet complet pentru testarea automată funcţională,
regresivă, modulară şi de încărcare a aplicaţiilor Web, ERP
şi client/server
Rational Test RealTime
pachet complet pentru testarea automată în timp real a
sistemelor în dezvoltare
Enterprise testing
- test management Rational TestManager
permite controlul, managementul şi raportul tuturor
activităţilor dintr-un singur punct de control
- load testing Rational TeamTest
automatizează testele funcţionale, regresive, funcţional-
distribuite pentru aplicaţii Web, ERP şi client/server
- runtime analysis Rational PurifyPlus
automatizează testarea modulelor asigurând performanţă şi
calitate
- functional testing Rational Robot
automatizează testarea funcţională şi include teste regresive
pentru aplicaţii Web, ERP şi client/server

5. Cactus – produs gratuit jakarta.apache.org

Domeniul Produse Servicii


Enterprise testing
- integration testing Cactus
include teste regresive pentru obiectele server-side de tip
Servlet, TagLib, EJB
- code logic unit testing Cactus
permite efectuarea de teste asupra codului.
- functional unit testing Cactus
permite testarea funcţională prin verificarea valorilor
returnate de server.

O atenţie deosebită este îndreptată către produsul free Cactus, proiect open source dezvoltat de
organizaţia jakarta.apache.org. Cactus este un framework destinat testării codului java server-side
(Servlet, EJB, TagLibs, etc ). Modulul de bază al produsului este JUnit.
Utilizarea produsului presupune programarea în Java a scenariilor de testare, Cactus neoferind o interfaţă
grafică pentru înregistrarea workflow-ului ce urmează a fi testat. De aceea acest produs se adresează unor
utilizatori cu pregătire solidă în informatică.

Concluzii
Testarea automată nu va putea înlocui în întregime testarea manuală şi nici nu trebuie. Tester-ii
pot să observe cum un utilizator poate interacţiona cu produsul, în timp ce un sistem de testare automată
nu poate întotdeauna să prevadă aceste acţiuni sau să găsească cea mai bună cale de a le testa. Dacă sunt
bine folosite, programele de testare automată măresc considerabil productivitatea QA, economisesc
costuri, măresc semnificativ consistenţa şi calitatea produsului şi ajută la optimizarea şi accelerarea
procesului de dezvoltare al unei aplicaţii. Deja în ţările cu tradiţie în dezvoltarea de software există cerinţa
7/8
ca toate produsele software din sectorul militar, medical, guvernamental şi financiar să fie testate cu unul
din sistemele recunoscute de testare automată, iar rapoartele automate asupra felului cum a decurs testarea
constituie baza acceptării unei aplicaţii de către client.

Resurse :
1. Herbert M. Isenberg - The practical organization of automated software testing (http://www.automated-
testing.com/PATfinal.htm)
2. Brett Pettichord - Success with test automation (http://www.io.com/~wazmo/succpap.htm)
3. Elisabeth Hendrickson - Test automation advice (http://www.qualitytree.com/autotest/autotest.htm)
4. Elfriede Dustin, Jeff Rashka - Automated Software Testing (Addison Wesley Longman Inc., ISBN: 0201432870 )
5. *** - Mercury Interactive - white papers (http://www.mercuryinteractive.com)
6. *** http://jakarta.apache.org

Prezentare autori
Despina Eftimescu a terminat informatica la Universitatea de Vest din Timişoara în 1994 şi a lucrat din
1995 ca inginer software în München, între altele pentru firma Siemens si Technische Universität
München. Din 1997 ea lucrează la firma SecureNet GmbH iar din iunie 2001 conduce ca Chief Executive
Officer filiala română a acesteia, firma SecureNet SRL din Craiova.

Alexandru Ilioiu este director tehnic la SecureNet SRL, din Craiova. Poate fi contactat pe email la adresa
ai@secure-net.ro

8/8

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