Quantcast
Channel: Ctrl-D » software testing
Viewing all articles
Browse latest Browse all 3

Testarea automatizată și iluzia Sfântului Graal – Partea II

0
0

vector_iconset-003

Prima parte a acestui articol a clarificat ce înseamnă procesul de testare automatizată, alungând iluzia managerilor sau a companiilor că aceasta ar putea fi un Sfânt Graal. Pentru a crește șansele de a avea o testare automatizată de succes, e nevoie de ceva mai mult, așa că în această a doua parte vom pune sub lupă și câteva recomandări utile tuturor celor care iau în calcul folosirea unor astfel de instrumente de lucru.

Desigur, dacă trasarea unor obiective clar delimitate, concise și ferm împămăntenite în cadrul real stabilit al activității este condiția sine qua non ce trebuie îndeplinită, respectarea câtorva recomandări de bună practică poate garanta nu doar succesul integrării unei testări automatizate în planul metodologic, ci și optimizarea randamentului acestei investiții. Așadar, iată cinci recomandări pentru o automatizare orientată spre randament.

1. Inițierea testării încă de la începutul procesului de dezvoltare

Pentru obținerea unui randament satisfăcător din testele automatizate și cele manuale, testarea trebuie inițiată timpuriu în procesul de dezvoltare a proiectului, desfășurându-se ori de câte ori o anumită etapă a proiectului o solicită. Cu cât implicarea testerilor în ciclul de dezvoltare este mai timpurie, cu atât se pot depista bug-urile care periclitează deadline-urile proiectului.

Inițial, se poate începe cu testarea automatizată doar a anumitor funcții (unit testing) și apoi se poate continua cu construirea treptată a suitei de teste automatizate.

2. Selectarea test case-urilor ce împlinesc criteriile unei automatizări eficiente

A doua condiție pentru o implementare eficientă a unei automatizări este determinarea test case-urilor care pot fi automatizate, având în vedere potențialul caracter recurent al acestora.

Conceptul de test case, ridicat la rangul unei definiții cât mai generale, se poate traduce prin ansamblul de pași succesivi și coerenți pe care un tester îi execută în evaluarea integrativă a diferitelor aspecte funcționale ale unei aplicații.

James Bach, fost membru al consiliului de directori ai Asociației pentru Testare Software, trainer și consultant, co-autor al cărții Lessons Learned in Software Testing, spunea că testarea este infinitul proces al comparării ambiguului cu invizibilul în vederea evitării ca acel ceva de neconceput să se întâmple. Deși opinia sa este voit dezarmantă, vom vedea, în rândurile ce urmează, că lucrurile nu sunt chiar atât de alambicate.

Premisa posibilității unei automatizări a tuturor test case-urilor este eronată, deoarece diversitatea și complexitatea unor aplicații (ex. o aplicație de internet banking) care folosesc date generate dinamic ce se refuză, prin natura lor oscilatorie, predictibilității prin tipar automatizat sau imposibilitatea depistării unor bug-uri de rafinament, împiedică această generalizare, conducând la un consum ridicat al resursei de timp și la o rentabilitate scăzută.

Un mare atu al testării automatizate este corelat cu modul în care un anumit test poate fi repetat succesiv, test case-urile care au o recurență scăzută fiind eligibile mai degrabă pentru testarea manuală, având în vedere toate lucrurile expuse mai sus.

Test case-urile optime pentru automatizare sunt cele rulate în mod frecvent sau cele care devorează volume mari de date implicând aceeași acțiune.

Iată care ar fi câteva contexte concrete în care testarea automatizată este de preferat celei manuale:

  • Test case-uri repetitive care rulează pe mai multe build-uri (procesul prin care codul sursă este convertit dintr-o formă de sine stătătoare într-una care poate fi rulată de un calculator);
  • Test case-uri care sunt afectate de erori umane, cum ar fi cele fragmentate în pași multipli;
  • Test case-uri care necesită seturi de date multiple, asemenea celor menționate mai sus, de tipul user/password sau câmpuri care acceptă multiple intrări etc.
  • Funcționalitățile care sunt folosite cel mai des și care prezintă un risc major (ex. login/logout, crearea unui cont de utilizator);
  • Test case-uri care sunt imposibil de rulat manual, de pildă, testarea unei secvențe de cod care nu poate fi testată decât printr-un script;
  • Test case-uri care rulează pe diferite platforme sau configurații de hardware/software, ori care, în mod normal, necesită un efort prea mare pentru a fi rulate manual (ex: multiple versiuni de sisteme de operare/browsere/desktop sau mobile).

3. Alegerea instrumentului adecvat testării automatizate

Selectarea unui instrument pentru testarea automatizată este esențială. Există numeroase instrumente de automatizare pe piață, iar dintre cele mai populare sunt Selenium sau Appium (un framework de testare automată pentru dispozitive mobile), criteriul real al selecției constând într-o capacitate de pliabilitate cât mai bună, raportată la cerințele dinamice ale proiectului.

Aspectele de care trebuie ținut cont în procesul de selecție sunt:

  • Suportul pentru diferite platforme și tehnologii;
  • Limbajul de programare folosit și sistemul de operare pe care va rula;
  • Flexibilitate pentru testeri, bazată pe cunoștințele lor;
  • Existența unor cunoștințe de programare sau necesitatea folosirii unui framework care folosește cuvinte-cheie ce au la bază funcții programatice sau instrumente de tip record & play;
  • Crearea de teste automatizate reutilizabile, mentenabile și rezistente la schimbări ale interfeței grafice.

4. Gestionarea alocării efortului de automatizare depus

De obicei, crearea de test case-uri se bazează pe nivelul de calificare profesională a testerilor. Identificarea nivelului de experiență și de competență pentru fiecare dintre membrii echipei, astfel încât eforturile depuse în testarea automatizată să fie împărțite în consecință, este esențială.

De pildă, scrierea de script-uri de testare automatizată necesită cunoștințe de specialitate de scripting. Așadar, în scopul îndeplinirii acestei sarcini, trebuie să existe testeri care cunosc limbajul de scripting specific folosit de instrumentul de automatizare respectiv.

5. Crearea unor date de test edificatoare

Datele de test pot fi definite ca parametri specifici identificați pentru utilizarea în cadrul test case-urilor în scopul evaluării și măsurării diferitelor aspecte funcționale ale aplicației.

Datele de test sunt extrem de folositoare în test case-urile care necesită un volum mare de date. Datele care urmează să fie folosite pentru a testa aplicații ar trebui stocate într-un fișier extern. Un instrument bun de automatizare înțelege conținutul fișierelor externe de date, dar poate și extrage date din fișiere care au diferite formate. Folosirea datelor dintr-un fișier extern face ca testele automatizate să fie reutilizabile și mai ușor de menținut. Acestea pot fi completate pe parcurs și ușurează testarea automatizată, în sensul în care fișierele de date pot fi refolosite pentru diferite proiecte.

O testare automatizată de succes

Un foarte bun exemplu de testare automatizată, devenit poveste de succes, este cel al companiei Sophelle. Ei au folosit un script pentru a automatiza testarea funcțională și cea a interfeței grafice a aplicației în cauză, ceea ce a redus timpul necesar pentru regresia bug-urilor de acest gen de la 80 de ore la numai 4 ore, timp pe care testerii au putut să îl canalizeze pentru executarea unor teste manuale mult mai flexibile și pentru identificarea unor bug-uri cu o complexitate ridicată și greu de reprodus

În numai trei luni, procesul de regresie, care de obicei consta în aproape 80 de ore de testare manuală, putea fi efectuat în mai puțin de 4 ore, la orice oră a zilei, fără intervenție umană. Eliberați de multe task-uri repetitive legate de procesul de regresie, testerii s-au reorientat către a efectua teste mult mai complexe și către identificarea altor bug-uri în aplicație.
- Sophelle, 2014

Cuvânt de încheiere

La finele acestui voiaj, putem concluziona că testarea automatizată nu este nicidecum un Sfânt Graal, așa cum tinde s-o catalogheze conștiința colectivă. Testarea automatizată nu e nici un elixir care să poată trata toate problemele care vizează testarea produselor și a serviciilor software și nici nu înlocuiește oricând, oricum și în orice condiții testarea manuală.

Aceste două metodologii se completează reciproc, trăind mai degrabă într-o simbioză strategică în cadrul dezvoltării unor proiecte, în funcție, desigur, și de particularitățile acestora.

Citește și „Testarea automatizată și iluzia Sfântului Graal – Partea I”


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles