Introducere în Testarea Automată

Introducere în testarea automată

Data : 25 Martie 2002

Autori : Despina Eftimescu ([anonimizat]), Alexandru Ilioiu ([anonimizat])

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

HP

IBM

Linux

Intel

ERP/CRM/SCM

Middleware

CORBA

Microsoft (COM)

BEA (Tuxedo, Jolt)

IBM MQSeries

Commerce Apps

Ariba

BroadVision

Blue Martini

Calico

Selectica

Vignette

Oracle Apps.

SAP

Siebel

PeopleSoft

Baan

Internet/Intranet

Clienți

Web Server

WAP

Gateway

Accelerators

nCipher

TimesTen

CacheFlow

PeakStone

Alteon

Arrowpoint

Resonate

Tower Technology

Fireclick

Akamai

Hydraweb

Web

Servers

MS IIS

Netscape NAS

Application

Server

Application

Servers

Allaire

SilverStream

Haht

IBM WebSphere

BEA WebLogic

Sun NetDynamics

Database

Databases

Oracle

SQLServer

Sybase

Informix

IBM DB2

EMC

Wireless

Nokia

OpenWave

Everypath.com

Brience

Wapforum.Org

AvantGo

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

Applicationperformance

management

Produse

Topaz

soluție pentru managementul performanței din perspectiva

utilizatorului : recepționare alerte în timp real, corelarea

problemelorutilizatoruluicudatelesistemului,

managementul nivelelor de service

Servicii

Active watch

serviciupentru

performanțeidin

utilizatorului

managementul

perspectiva

Production tunning

Enterprise testing

– test management

Active tune

serviciu special creat pentru calibrarea

procesului de dezvoltare și producție

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

XRunner

unealtă pentru automatizarea

aplicațiile tip X-Window

testării

funcționale

la

– load testing

LoadRunner

soluție pentru managementul testării de solicitare și

performanță

ActiveTest

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.

ActiveTest SecureCheck

serviciugăzduitcaretestează

securitatea aplicațiilor Web și a

infrastructurilor

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

2. Compuware Corporation – www.compuware.com

Domeniul

Application performance

management

Produse

Abend-AID

unelte pentru rezolvarea situațiilor de eșuare a aplicațiilor supuse testelor

Servicii

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

Quality Assurance

Abend-AID

File-AID

PointForward

QACenter

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

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

SilkVision

soluție pentru monitorizarea comportamentului aplicației

Servicii

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

pachet complet pentru testarea automată funcțională,

regresivă, modulară și de încărcare a aplicațiilor Web, ERP

și client/server

Servicii

Rational Test RealTime

pachet complet pentru testarea automată în timp real a

sistemelor în dezvoltare

Enterprise testing

– test management

– load testing

– runtime analysis

– functional testing

Rational TestManager

permite controlul, managementul și raportul

activităților dintr-un singur punct de control

tuturor

Rational TeamTest

automatizează testele funcționale, regresive, funcțional-

distribuite pentru aplicații Web, ERP și client/server

Rational PurifyPlus

automatizează testarea modulelor asigurând performanță și

calitate

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

– code logic unit testing

– functional unit testing

Produse

Cactus

include teste regresive pentru obiectele server-side de tip

Servlet, TagLib, EJB

Servicii

Cactus

permite efectuarea de teste asupra codului.

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.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

[anonimizat]

8/8

Similar Posts