QA Roadmap – parcursul invatarii unui incepator in testare
Atunci cand apare dorinta de a te specializa pe o anumita nisa din domeniul IT, descoperirea si corelarea notiunilor invatate sunt aspecte mai greu de gestionat pentru un incepator care nu are experienta sau studii pe partea de Computer Science. Studiul si invatarea ramurii de testare software se poate dovedi o adevarata aventura pentru apropierea si cunoasterea industriei IT, in general.
Insa de multe ori apare intrebarea cum ar trebui structurat acest drum al invatarii testarii software? Cu ce notiuni sa incepi si care sunt reperele fundamentale de bifat in aceasta calatorie? In continuare voi prezenta forma unui QA Roadmap, practic un itinerariu care sa ajute la ghidarea intre principalele repere ale invatarii in testarea software.
Pornim in aventura de la notiunile fundamentale…
Primul pas firesc este sa incepem cu notiunile fundamentale, astfel incat sa ne familiarizam cu domeniul testarii si sa il intelegem cat mai bine. Aici trebuie sa avem in vedere ce este testarea software (QA), principiile ei, cu ce se ocupa ea in mod recurent cand vine vorba de verificarea si validarea calitatii unui produs software. De asemenea, este important sa intelegem de la inceput care este modul de gandire (mindset) unui tester, si cum se desfasoara lucrurile in mare parte.
De asemenea, la inceput trebuie sa inveti cum se clasifica testarea si care sunt principalele tipuri de testare, in functie de scop si metode aplicate (White Box Testing, Black Box Testing, testarea functionala si non-functionala etc.). Nu strica sa citesti si despre managementul unui astfel de proiect, si sa te joci cu un prim tool de Project Management precum Jira de la compania Atlassian.
Continuam drumul spre Software Development Life Cycle…
Al doilea pas ar fi acela in care incepem sa intelegem la nivel de ansamblu cum se realizeaza munca in IT si cum se lucreaza concret la un proiect software. De aceea acum e important sa citesti despre ciclul de viata al dezvoltarii unui produs software, care sunt etapele principale si mai ales ce rol ocupa testarea in cadrul SDLC. Tot aici e necesar sa citesti despre metodologiile de lucru in IT, incepand cu cel mai popular model, Agile, si continuand desigur si cu alte notiuni (Scrum, Kanban etc.).
Ajungem in sfarsit la testarea manuala…
Dupa ce am cladit fundatia cu notiuni de baza din IT si testare, putem trece efectiv la a invata despre prima forma in care se testeaza softurile, si anume testarea manuala (Manual QA). Dupa cum se poate observa, e important sa nu ne aruncam direct la miezul problemei, ci sa luam lucrurile gradual, sa invatam mai intai lucrurile initiale ca sa le putem intelege pe cele mai complexe care urmeaza.
La capitolul despre testare manuala e necesar sa parcurgem notiunile de Test Plan, Test Driven Development (TDD), scenariu de testare (Test Scenario), cazuri de testare (Test Cases), care sunt elementele lor si cum se redacteaza. De asemenea, incepem sa invatam despre buguri, tipuri de buguri, si sa incepem treptat sa ne uitam si noi dupa acestea in aplicatiile pe care le folosim cel mai des.
Apoi ar fi necesar sa inveti cate ceva despre structura paginilor web (in special HTML si CSS) si despre API-uri, poate chiar sa testezi cateva cu Postman sau SoapUI. Nu strica si sa completezi studiul cu tehnici de testare pentru diferite situatii, precum Equivalence Partitioning si Boundary Value Analysis. Nu uita sa le exersezi cat mai mult practic.
Urmatoarea statie: testarea automata…
Dupa ce am vazut cum se face testarea manuala, urmatoarea noastra destinatie in calatoria invatarii va fi testarea automata. Dupa cum ii spune si numele, pentru a realiza automatizarea unor teste, e important sa alegem mai intai un limbaj de programare folosit in testare, precum JavaScript, Python sau Java, si sa invatam bazele programarii.
Dupa ce exersezi notiunile fundamentale in programare, poti alege un framework cu ajutorul caruia sa inveti sa scrii teste automate si sa exersezi pe site-uri demo sau reale executia unor astfel de teste. In functie de tipul de aplicatie testat, si framework-urile vor fi diferite: pentru Frontend (Cypress, WebdriverIO etc.), Mobile (Appium s.a.), sau Backend (Postman, Cypress etc.). Dar mai intai poti incepe cu partea de web, ca sa iti vina mai usor.
Ne ducem apoi spre testarea non-functionala…
Daca ai acoperit topicurile pana aici, atunci e foarte bine. Ai cunostintele si mijloacele necesare pentru a invata acum despre tipurile de testare care vizeaza aspectele non-functionale ale aplicatiilor informatice. Aici regasim testarea de performanta care vizeaza limitele softului, partea de Usability (experienta utilizatorilor reprezentativi), testarea securitatii aplicatiei (ca sa evitam riscurile si problemele pentru utilizatori), si testarea accesibilitatii, pentru a vedea daca softul poate fi folosit de cat mai multa lume, si nu impune preconditii restrictive.
Largim perspectiva cu versionarea codului si hosting…
Dupa ce invatam ce anume sa testam si cum anume facem acest lucru, atat manual dar si in mod automat, e important sa invatam sistemul de versionare a codului, si anume GIT-ul. Acesta ne va ajuta sa lucram in echipe mari, unde fiecare programator sau tester are anumite taskuri si deci sa ne integram munca noastra in cadrul proiectului, fara a afecta ce fac altii. Desigur, GIT-ul nu e singurul astfel de sistem, dar e cel mai folosit la nivelul industriei IT.
In paralel cu GIT, trebuie sa deprindem si lucrul cu un serviciu de gazduire (hosting) a codului. Aici recomandarea principala (data de popularitatea sa) e GitHub, dar poti incerca foarte bine si alte servicii asemanatoare, precum GitLab sau Bitbucket. Dupa ce te obisnuiesti cu acestea, iti poti incarca testele si proiectele personale in repositories pe GitHub, astfel incat sa poti arata viitorilor angajatori munca facuta de tine.
O noua oprire, la CI/ CD…
O componenta mai avansata legata de testarea automata (si in general de testarea software) se refera la Continuous Integration si Continuous Delivery (prescurtat CI si CD). Acestea sunt doua metode de lucru in testarea codului care au ca scop reducerea de timp si costuri in depistarea si corectarea defectelor din aplicatie, precum si lansarea de noi versiuni curate, fara probleme majore.
Practic, prin CI codul este verificat cu ajutorul unor framework-uri speciale in timp real, dupa fiecare commit in cadrul proiectului, iar programatorul este anuntat imediat daca si unde sunt probleme de remediat. Prin CD, se urmareste cresterea vitezei si a calitatii versiunii de software lansata catre utilizatori, si sa fie corectate in permanenta bug-urile. Acestea sunt deci doua notiuni extrem de importante de stapanit de catre orice QA Engineer.
Sa vedem si despre Headless Browser Testing…
In ciuda numelui destul de intrigant („testarea navigatoarelor fara cap”), Headless Browser Testing este de fapt un tip de testare mai avansata care permite efectuarea intr-un mod mai rapid a testelor pe partea de web, dar fara a accesa interfata generala de utilizare (GUI) a acestora. Practic, testele noastre acceseaza paginile web, interactioneaza cu ele in mod normal, dar noi nu vedem interfata obisnuita, dar putem efectua comenzi prin Command Prompt.
Lucrul acesta este ceva mai avansat pentru un incepator, si de asta trebuie sa avem un bagaj mai bogat de cunostinte ca sa ajungem aici. Printre avantajele acestui tip de testare se numara viteza de executie a testelor mai mare, reducerea timpului de dezvoltare, ocolirea anumitor elemente care nu sunt tocmai necesare in browser la testare (precum CSS-ul) si multe altele.
Concluzie spre ultima destinatie: continuarea invatarii…
In incheierea acestui itinerariu, trebuie mentionat ca nu exista un capat de linie foarte exact. Idealul este acela de a nu te opri din invatare pe partea de Software Testing, daca aceasta este nisa pe care vrei sa te specializezi. Nu trebuie sa te plafonezi si nici sa consideri ca dupa ce ai invatat cateva topicuri mai complicate, ai acumulat tot ce trebuie sa stii. Itinerariul invatarii se poate suprapune foarte bine cu parcursul profesional, cu rolurile pe care le vei indeplini, si desigur nu e rigid, succesiunea etapelor poate fi diferita de la caz la caz.
Testarea in mod special, si IT-ul in mod general evolueaza in permanenta. Mereu apar lucruri noi, tehnici, metode sau instrumente de lucru inovatoare, si pentru a ne face treaba cat putem de bine, trebuie sa continuam sa invatam constant, sa ne pastram aceasta dorinta de cunoastere si de „aventura” pe taramul invatarii.
(Re)surse pentru inspiratie si studiu
„Drumul” invatarii si principalele repere au fost inspirate si preluate de pe site-ul Roadmap.sh, unde sunt astfel de „harti” si pentru alte domenii din IT.
Canalul lor de Youtube, cu multe video-uri explicative
O alta viziune, dar cu aceleasi repere fundamentale de QA
Daca vrei sa descarci astfel de Roadmaps in IT, sau daca vrei sa consulti diverse ghiduri cu bune practici.
Detalii despre CI/ CD in testare software
Mai multe lucruri interesante despre Headless Browser Testing