În Cariere

Ce implică munca unui QA Tester: de la job la pasiune

qa-tester

Ca testeri, avem ocazia de a vedea o aplicație înainte ca ea să ajungă pe piață. Prin munca noastră, putem influența felul în care arată o aplicație, funcţionalitățile sale și modul de implementare al acesteia. Dar ce implică munca unui tester? Contrar părerii majoritare, munca unui tester manual este mult mai mult decât „click-click”.

Testarea este un proces elaborat ce urmărește identificarea disfuncționalităților în aplicații. Procesul de testare cuprinde următoarele etape:

Specificarea aplicațiilor:

  • Deși scrierea specificațiilor nu reprezintă o responsabilitate a tester-ului, specificarea aplicației este primul pas în dezvoltarea / testarea unei aplicaţii.
  • În funcţie de metoda de implementare a unei aplicaţii (Waterfall model, V-model, Iterativ) specificațiile pot fi definite integral înainte de începerea procesului de dezvoltare, sau se pot defini succesiv.
  • În cazul modelului iterativ dezvoltarea unei aplicații este facută secvențial, de fiecare dată dezvoltând starea curentă a aplicației.

Analiza specificațiilor:

  • Reprezintă prima formă de testare și este cunoscută în domeniu ca testarea statică. Scopul testării statice este de a identifica ambiguitățile în specificații și a corecta eventualele erori de specificaţii.
  • Odată ce aplicația este specificată de către client, persoanele implicate în dezvoltarea aplicației analizează la nivel individual documentația.
  • După analiza individuală, urmează ședința de analiză unde participă deopotrivă: testeri, programatori, scrum master și clientul.
  • După clarificarea ambiguităților, o nouă documentație este elaborată, iar aceasta va fi folosită în programarea / testarea aplicației.

Definirea testelor:

  • Este făcută de cele mai multe ori de către tester, pe baza specificațiilor.
  • Un test (test case) trebuie să cuprindă următoarele detalii:
  • Precondiții – unde începe testarea, ce valori trebuiesc introduse în anumite câmpuri, care este contextul testării – în cazul unei aplicații cu mai multe module, trebuie specificat exact modulul de unde se începe testarea, care este starea aplicației, a câmpurilor din acel modul.
  • Date de intrare – reprezintă acțiunile luate de tester sau valorile introduse pentru a testa condiția pentru care este scris testul.
  • Rezultatul aşteptat – definește cum ar trebui să se comporte aplicația, astfel încât rezultatul obținut să fie conform cu specificațiile.
  • Rezultatul obținut – acestă informație se completează după rularea testelor și reprezintă starea în care rămâne aplicația după executarea testelor.
  • Referința la specificații – ce funcționalitate este testată prin fiecare test.

Testele sunt grupate în suită de teste, astfel încât, unde se poate, rezultatele unui test, vor fi folosite ca date de intrare pentru următorul test.

Testarea aplicației:

  • În acest moment, testerul exercită aplicația urmând suita de teste creată în pasul anterior.
  • O suită de teste este corect definită dacă identifică disfuncționalitățile existente.
  • În cazul în care se observă discrepanțe între rezultatul așteptat de la aplicație și rezultatul obținut, testerul raportează un incident cu:
    descrierea completă a problemei, prioritatea tichetului, pașii pentru a reproduce incidentul, versiune de cod pe care a fost identificat, referința la specificații, loguri și unde se poate un video / poză cu incidentul.
  • Odată ce incidentele sunt rezolvate, o nouă versiune de cod este livrată, iar testerul conduce două tipuri de teste:
  • Teste funcționale – pentru a verifica dacă problema raportată a fost corectată (funcționalitatea curentă este conform cu specificațiile)
  • Teste de regresie – pentru a se asigura ca funcționalitățile deja existente nu au fost impactate în mod negativ de noua funcționalitate
  • Când toate testele specificate au fost conduse, clientul sau product owner-ul decid dacă aplicația este pusă în producție sau dacă testele trebuie suplimentate.

Desigur, în fiecare companie așteptările de la un tester manual variază.

Sunt companii unde persoane dedicate scriu testele, iar testerii doar testează aplicația – o explorează cu scopul de a identifica eventualele disfunctionalități.

Indiferent de complexitatea rolului de tester într-o companie sau alta, un tester bun este acela care înțelege imaginea de ansamblu fără să uite de detalii.

 

Calitățile interpersonale sunt esențiale în viața unui tester

Răbdarea – pe parcursul unui proiect sunt situații în care aceeași funcționalitate este dezvoltată de prea multe ori… se poate că o funcționalitate nu a fost corect înțeleasă, sau poate clientul s-a răzgândit în legătură cu funcționalitatea cerută.

Indiferent de situație, ca testeri trebuie să rulăm aceleași teste de mai multe ori, poate chiar să le rescriem de mai multe ori, ceea ce poate fi frustrant.

 

Comunicarea – oricât de banal ar părea, comunicarea este esențială pentru o bună desfășurare a proiectului; Ascultarea activă, exprimarea ideilor clar și într-un mod impersonal (facem referire la aplicație și la specificații și nu la programator vs tester) fac dintr-un grup de oameni o echipă.

 

Munca în echipă – ca testeri lucrăm fie în echipa de testare fie în echipa de proiect; scopul echipei este livrarea unui produs calitativ clientului; odată ce înțelegem că toți membrii echipei au același scop, putem lucra eficient împreună.

 

Atenția la detalii – cu cât observăm mai multe detalii cu atât înţelegem mai bine aplicația / specificațiile și putem aduce valoare produsului final.

 

Un alt aspect este dobândirea cunoștințelor minime despre procesul de testare, despre principiile testării și metodologiile folosite în domeniu.

Și nu în ultimul rând, este nevoie ca cineva să ne acorde ocazia de a încerca un rol de tester, fie el și de pe alta poziție.

 

Cum am ajuns tester – a ‘glimpse of reality’:

De pe o poziție de Project Manager, mi s-a oferit oportunitatea de a lucra la implemetarea unei aplicații web. În evoluția profesională, a fost cea mai bună și, în același timp, cea mai grea zi.

Un domeniu nou, multe provocări, multe necunoscute și renunțarea la un job pe care știam deja să îl fac, confortabil și bine plătit, pentru o nouă provocare. Și ce mai provocare!

Nu știam nimic despre ce implică rolul de tester, despre proiectul pe care voi lucra, iar despre client auzisem doar ca este foarte “demanding”.

Îmi doream însă această provocare, deși a trecut timp până am înțeles de ce. La primul meeting pentru prezentarea proiectului, product owner-ul a apărut cu un flow chart de 1m pe 1,5m cu scris Arial de 8pt și foarte multe culori.

M-am speriat groaznic.

În mintea mea urla o voce: „În ce m-am băgat? Ce sunt toate liniile alea, dreptunghiuri versus romburi, săgeți în toate direcțiile, semnături în colțul documentului?”.

Am făcut singurul lucru posibil. M-am dus acasă, am analizat flow chartul respectiv până am reușit să înțeleg logica din spate.

Fără să îmi dau seama, am început să învăț. Și cu cât știam mai multe, cu atât doream să aflu și mai multe.

Mă fascina varietatea de lucruri pe care le puteam face pe această poziție și în câte moduri diferite se poate aborda procesul de testare. Încă adaug constant titluri noi la lista mea de cărți despre testare care trebuie citite.

***


Acum, îmi doresc ca mai multă lume să descopere această parte din procesul de web development. Pe parcursul workshop-ului 104 Principiile testării manuale, vom aborda următoarele aspecte: principiile testării, analiza statică, tehnici de testare black-box, white-box și aplicații folosite de un tester. Toate sesiunile includ exerciții practice.

Prin aceste exerciții vom urmări atât aplicarea metodologiilor însușite, cât și comunicarea și munca în echipă. Ultima zi a workshop-ului o vom petrece în întregime pe o aplicație de test creată special pentru a evidenția diferite tipuri de disfuncţionalități.

Ne vedem la Academy!


Adriana BirteaAdriana Birtea, QA Tester @[e-spres-oh]

Adriana și-a început cariera de tester dintr-o provocare personală. Acum a ajuns să fie pasionată de fiecare zi petrecută testând o aplicație, descoperind noi și noi metode de a progresa. Recompensa la nivel personal a acestui job vine din împărtășirea cunoştințelor dobândite şi din valoarea adusă aplicațiilor implementate.