Ce face un software tester?
Un software tester, sau QA analyst sau software test engineer este o persoana la fel de importanta in procesul de dezvoltare a unui produs cum este si un dezvoltator, sau programator sau software engineer.
Cele doua roluri sunt complementare in ciclul de viata al unui produs software.
Programatorul este responsabil pentru scrierea codului sursa al programului respectiv, iar testerul este persoana care se asigura de integritatea, calitatea , eficienta si buna functionalitate a codului scris.
Mai pe scurt, un tester software se ocupa cu verficarea unui program, sau a unei parti a unui program cu scopul de a identifica eventuale deficiente de rulare.
Aceste deficiente pot fi cauzate de: erori de design, intelegere gresita a cerintelor clientului, erori de programare, etc.
In general in industria IT ne referim la membrii echipei de testare sub titulatura de QA (Quality Assurance).
Aceasta este o denumire generica, iar in realitate vom intalni testeri care sunt specializati pe anumite tipuri de testare, sau care au diferite roluri in cadrul echipei de testare sau a echipei de proiect.
Ca si structura generala (care poate avea mici variatii de la companie la companie) a unei echipe de QA, cel mai des intalnim urmatoarele roluri:
Structura tipica a unei echipe de QA
In functie de cat de mare este echipa de QA, aceste roluri se pot granula in specializari pe diverse tipuri de testare (performance tester, uat tester, security tester , etc) sau nivele de senioritate (junior, regular, senior, expert).
Aceste diferentieri se fac pentru a defini cat mai bine care sunt competentele si responsabilitatile fiecaruia.
Responsabilitati generale ale unui tester software
In general o mare parte a proceselor si responsabilitatilor sunt comune.
Ca si termini generali, cand ne referim la responsabilitatile de zi cu zi ale unui tester ne gandim la urmatoarele aspect:
- Crearea si documentarea scenariilor de test
- Executia testelor conform test planului si a strategiei de testare asumate la nivel de produs sau companie
- Analiza si raportarea rezultatelor procesului de testare
- Analiza si raportarea deficietelor (defecte) gasite in procesul de testare
Un tester are cunsostinte foarte bune legate de metodele de design al scenariilor de test, modelelor de test aplicabile in functie de aplicatia testata, metodelor de executie a testelor si nu in ultimul rand abilitati de comunicare foarte bune.
Cum am pus in diagrama de mai sus, intalnim foarte des doua ramuri clar differentiate in ceea ce priveste cariera de tester software.
Prima este zona de testare manuala a aplicatiilor si cea de a doua este zona de testare autoamata a acelorasi aplicatii.
QA Manual Tester
Acest tip de testare se bazeaza pe executarea scenariilor de test intr-un mod manual. Adica exact cum procedeaza un utilizator final cu aplicatia.
Spre exemplu, daca testam un magazine online, un scenariu tipic de test presupune parcurgerea de la crearea unui cont pana la adaugarea in cos a unui produs si incercarea platii.
Acest scenariu se executa manual, prin deschidera intr-un browser a magazinului respectiv si parcurgerea tuturor pasilor de test folosind mouse-ul si tastatura. Exact cum facem oricare dintre noi cand comandam un produs online.
Testerul manual este specializat in a gasi defecte acolo unde testarea automata nu poate, bazandu-se pe experienta, pe abilitatile de observare si pe ceea ce in industria IT numim “Tester mindset”.
Acest “tester mindset” se invata si reprezinta un mod de a gandi scenariile de test si executia lor in functine de unde este cel mai probabil a se gasi defecte.
De obicei ne referim la acest mindset sub forma : Testerul intodeauna se gandeste cum sa “strice” programul testat.
Responsabilitatile de zi cu zi ale unui tester manual pot include:
- Parcurgerea documentatiei primite de la client pentru a intelege cerintele si nevoile clientului
- Comunicarea continua cu clientul
- Scrierea de scenarii de test
- Raportarea defectelor gasite
- Ajutarea programatorilor in reproducerea defetelor
- Executarea scenariilor de test
- Raportarea progresului testarii
- Contribuirea la definirea strategiei de test sau a planului de testare
Aceste sunt cele mai comune, dar in functie de specificul si stadiul proiectului sau de nivelul de senioritate al testerului se pot adauga sau scoate din responsabilitati.
QA Automation Tester
Acest tip de testare se bazeaza pe scrierea de programe (scripturi) care in mod automat (programatic) sa execute scenarii de test.
Daca ne referim la acealsi scenariu de mai sus in magazinul online, un test automat presupune scrierea de cod sursa, care sa simuleze parcurgerea acelorasi pasi fara utilizarea mouseului sau a tastaturii. Totul se face prin simulare programatica.
Testerul automat este cel mai aproape de dezvoltator ca si profil pentru ca ambii scriu cod sursa, difernta fiind ca unul (dezvoltatorul) scrie un program, iar testerul automat scrie un program cu care testeaza programul scris de dezvoltator.
Este foarte des intalnit in idustria IT ca foarte multi QA Automation testeri sa faca pasul catre cariera de dezvoltator dupa o perioada.
De ce avem nevoie de acest profil cand dezvoltam software? Pentru ca de cele mai multe ori numarul scenariilor de test cresc pe masura ce produsul software se dezvolta sin oi functionalitati sunt adaugate.
Astfel avem nevoie de o modaliate de a testa cat mai repede ce a fost deja dezvoltat pentru a ne asigura ca noile functionalitati adaugate nu strica vechile functionalitati. Astfel testarea autoamata ajuta testerul manual sa se concentreze pe testarea functionalitatilor noi in loc sa piarda timpul cu retestarea celor vechi.
Cateva dintre responsabilitatile de zi cu zi pot include:
- Scrierea de teste automate folosind diverse limbaje de programare si framework-uri (instrumente specifice cu ajutorul carora se scriu si executa testele)
- Executia testelor automate
- Analiza rezultatelor testelor
- Mentenanta testelor automate
- Raportarea defectelor intalnite
- Analiza de programe noi pentru testare automata.
QA Lead/ QA Manager
Acestea reprezinta roluri de management de echipa. Sunt roluri de coordonare a caror principala responsabiliate este aigurarea la nivel de companie a unui proces si strategie de testare in conformitate cu standardele companiei.
In general aceste pozitii sunt ocupate de catre testerii care au ajuns la un nivel de senioritate de expert si care demonstreaza deasemenea si abilitati de coordonare.
Ca si responsabilitati generale putem enumera:
- Pregatirea strategiei de testare la nivel de companie au proiect
- Recrutarea de personal (testeri)
- Alocarea testerilor in functie de competente si senioritate pe proiecte
- Definirea de indicatori de calitate
- Reprezentarea echipei de QA in sedintele de management
- Supervizarea activitailor de testare si raportarea lor catre managementul superior
- Identificarea de noi procese de testare si ajustarea proceselor naturale.
Acestea sunt responsabilitatile comune, care se regasesc indiferent de specificul companiei in care opereaza echipa de QA.