Introducere în testarea automată Data : 25 Martie 2002 Autori : Despina Efti mescu (
[email protected]), Alexandru Ilioiu (
[email protected])
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 bugurilor ş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 ă. Bugurile 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 testerilor. 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 HP IBM Linux Intel
ERP/CRM/SCM Middleware CORBA Microsoft (COM) BEA (Tuxedo, Jolt) IBM MQSeries
Oracle Apps. SAP Siebel PeopleSoft Baan
Commerce Apps Ariba BroadVision Blue Martini Calico Selectica Vignette
Internet/Intranet Clienţi
Web Server WAP Gateway
Wireless Nokia OpenWave Everypath.com Brience Wapforum.Org AvantGo
Accelerators nCipher TimesTen CacheFlow PeakStone Alteon Arrowpoint Resonate Tower Technology Fireclick Akamai Hydraweb
Web Servers MS IIS Netscape NAS
Application Server Database Application Servers Allaire SilverStream Haht IBM WebSphere BEA WebLogic Sun NetDynamics
Databases Oracle SQLServer Sybase Informix IBM DB2 EMC
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 Application performance management
Produse
Servicii Active watch
Topaz soluţie pentru managementul performan ţei din perspectiva utilizatorului : recepţionare alerte în timp real, corelarea problemelor utilizatorului cu datele sistemului, managementul nivelelor de service
Production tunning
serviciu pentru performanţei din utilizatorului
managementul perspectiva
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 regresive a aplica ţiilor Web dinamice
funcţionale
şi
funcţionale
la
XRunner unealtă pentru automatizarea aplicaţiile tip X-Window
- load testing
testării
LoadRunner
ActiveTest
soluţie pentru managementul test ării de solicitare şi performanţă
serviciu prin care se poate testa şi calibra infrastructura şi aplicaţiile Web în dezvoltare
Astra LoadTest soluţie rapidă pentru testarea scalabilităţii şi performanţelor aplicaţiilor Web.
LoadRunner TestCenter soluţie completă care permite managementul test ării multiple, concurente din mai multe locaţii geografice. Toate resursele sunt centralizate şi accesibile dintr-un singur punct de control
ActiveTest SecureCheck serviciu găzduit care testează securitatea aplicaţiilor Web şi a infrastructurilor
2. Compuware Corporation - www.compuware.com Domeniul Application performance management
Produse
Servicii
Abend-AID 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 Abend-AID NuMega
Quality Assurance
unelte pentru îmbunătăţirea productivităţii începând de la aplica ţii simple până la cele distribuite şi orientate Web
Development integration
and
QACenter Abend-AID 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 Application performance management
Produse
Servicii
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 Application performance management
Produse Rational Suite TestStudio
Servicii
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 activităţilor dintr-un singur punct de control
- load testing
tuturor
Rational TeamTest automatizează testele funcţionale, regresive, funcţionaldistribuite 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 Enterprise testing - integration testing
Produse
Servicii
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ă returnate de server.
prin
verificarea
valorilor
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.automatedtesting.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
[email protected]
8/8