fbpx

Ce reprezintă job-ul de QA Engineer?

Job-ul de QA Engineer se încadrează și el, alături de Java Software Developer, Network Engineer, Web Developer în categoria job-urilor foarte populare de pe piața IT din prezent.

În cazul în care dorești să faci o reconversie profesională sau să aplici pentru o primă poziție în domeniul IT, rolul de QA Engineer este rolul perfect pe care îl poți transforma în rampa ta de lansare.

În domeniu testării sau Quality Assurance, există o multitudine de poziții  pe care le puteți găsi pe site-uri de recrutare, care să difere din punct de vedere al titlului dar al căror obiect de activitate principal să fie asemănător:

  • QA Engineer
  • Tester
  • PV Engineer (Product Validation Engineer)
  • Software Validation Engineer
  • Software Tester
  • Hardware Tester

Aceste diferențe de titlu țin de fiecare firmă în parte și de aplicațiile care urmează să fie testate și verificate. În momentul în care aplicați pe astfel de poziții citiți cu atenție responsabilitățile pe care le presupun, pentru că până la urmă acestea sunt cele mai importante. Acordați atenție și listei de activități în care o să fiți implicați.

Cum arată o zi în viața unui QA Engineer?

Rolul principal al unui QA Engineer sau Tester este de a identifica cât mai rapid defectele (sau bug-uri) prezente într-o aplicație și de a descrie condițiile de reproducere într-un mod cât mai exact pentru ca acestea să fie reparate. Lucrul acesta se poate face printr-un număr de activități:

  • testarea de noi funcționalități – gândiți-vă la orice nouă funcționalitate care ajunge în aplicațiile pe care le folosiți zi de zi, indiferent ca e vorba de chat, plăți sau monitorizare activitate fizică – fiecare dintre acestea trece printr-o serie de verificări care poate însuma sute sau chiar mii de teste ce sunt executate manual și automat.

 

  • identificarea și raportarea defectelor – după cum am menționat anterior, aceasta este probabil principala activitate, iar în funcție de defectele ”prinse” până ca un produs să ajungă la clienți se poate determina calitatea produsului ca un întreg. Descrierea defectelor trebuie făcută într-un mod clar, obiectiv și întotdeauna ele trebuie să fie însoțite de log-uri, condiții ale sistemului testat etc. De asemenea, un tester bun, poate să specifice și impactul defectelor identificate pentru a realiza o prioritizare când vine vorba de reparare.

 

  • dezvoltarea de teste și planuri de test – pentru a putea identifica defecte este nevoie de teste care să verifice anumite funcționalități, într-un mod cât mai eficient. Pentru a crește eficiența testelor este necesar un plan, care să ”spargă” fiecare zonă testată în componente unitare și să efectueze verificări individuale. Abia după ce fiecare astfel de componentă este testată se poate trece la verificări în ansamblu, care să privească produsul ca un întreg. Pentru a putea dezvolta un plan de test este necesară înțelegerea unei funcționalități, nu doar tratarea sa ca o componentă oarecare. Testarea nu se poate face haotic și este foarte important să existe o organizare clară a activității – în caz contrar se poate ajunge la activități ce se duplică unele pe altele, raportarea aceluiași defect de către persoane diferite și alte probleme asemănătoare.

 

  • testarea de regresie – pentru fiecare echipă de testare, regresia poate să reprezinte altceva din punct de vedere al structurii. Dar ideea principală este aceeași – pentru fiecare update al unei aplicații, trebuie verificate toate funcționalitățile existente, care să nu fie impactate de ceea ce aduce update-ul în sine. Această activitate poate în timp să devină frustrantă, mai ales dacă update-urile sunt dese – tocmai de aceea este realizată într-o mare măsură în mod automat.

 

  • dezvoltarea de automatizare – pe măsură ce o aplicație crește și se dezvoltă, verificarea individuală a fiecărei componente poate să consume foarte mult timp dacă este realizată în mod manual. Aici intră ”în joc” automatizarea, care este menită să scadă timpul necesar testării. Cu cât aplicația este mai ”matură”, cu atât este mai important ca o echipă de testare să se poată baza pe rezultatele oferite de automatizare. Asta înseamnă să nu fie necesară alocarea a prea mult timp activităților de re-verificare (în vederea eliminării rezultatelor fals-pozitive) sau repararea testelor în sine.

 

Cu ce o să lucrezi?

Răspunsul la această întrebare reprezintă, probabil, cea mai bună parte a acestei meserii. Indiferent de ce alegeți la început, vă puteți schimba pe parcurs ori de câte ori vă doriți atât tehnologiile cu care lucrați cât și domeniul pe care vreți să faceți asigurarea calității. Pentru că testarea este peste tot – automotive, banking, securitate, networking, aplicații web, aplicații mobile etc.

Din fericire, principiile de testare sunt în linii mari aceleași, oriunde am vrea să le aplicăm și tocmai de aceea trecerile se pot face cu ușurință. Experiența pe care o veți acumula în unul din domeniile menționate se va putea adapta dacă într-o zi vă veți hotărî să faceți o schimbare. Va fi nevoie de răbdare și învățare a unor noi tehnologii folosite pentru verificări – pentru că nu se folosesc aceleași utilitare în banking și automotive – dar de aici vine și partea de provocare care vă poate ține în priză.

Dacă aveți o tehnologie pe care vreți să o stăpâniți sau cu care vreți să vă familiarizați pentru că v-a plăcut întotdeauna, puteți să începeți cu aceasta dintr-o poziție de testare. Mai departe, după ce vă familiarizați suficient cu aceasta, puteți să lucrați și pe alte poziții din cadrul unui proiect, pe aceeași tehnologie.

Comune vor fi uneltele necesare pentru monitorizarea activităților și raportarea de probleme identificate – Jira, TestLink, Asana, Trello, Backlog, Bugzilla, Redmine etc.

Ce trebuie să înveți pentru a deveni QA Engineer?

Pentru a putea fi un QA Engineer bun este necesară înțelegerea cât mai clară a produselor testate. Asta înseamnă că trebuie avută în vedere atât perspectiva clienților ce vor folosi aplicația testată, dar și a software developerilor, a analiștilor de business, echipei de suport, echipei de DevOps – practic a tuturor părților care interacționează cu o aplicație de când aceasta este la nivel de idee până când ajunge în producție.

  1. IT Essentials – noțiuni elementare de utilizare a calculatorului, Internetului, instalare/dezinstalare componente software/hardware
  2. Fundamentals of Software Testing – o introducere în noțiunile de testare ce sunt comune tuturor zonelor în care acest proces este necesar. Nu sunt presupune cunoștințe anterioare din niciun domeniu.
  3. Python Fundamentals – Python este limbajul de programare ce se utilizează în procesele de automatizare: crearea rapoartelor, colectarea datelor, a notificărilor, sau a testării. Python este limbajul perfect pentru a implementa orice tip de automatizare, având integrări foarte avansate cu utilitare precum: Selenium, behave, Robot Framework, guibot. Drept dovadă este chiar cursul următor.
  4. Automated Testing with Python and Selenium – se axează pe noțiuni de automatizare ce pot să fie aplicate într-o multitudine de aplicații, dar în mod special cele web. În vederea parcurgerii cu succes a acestui curs este recomandată fie experiența anterioară în domeniul testării, fie parcurgerea cursului anterior.
  5. Baze de Date-SQL – SQL a devenit limbajul standard pentru crearea și gestionarea bazelor de date, fiind conceput pentru un scop foarte specific
  6. Git & Bitbucket for Version Control – cel mai folosit sistem de control al versiunii. Controlul versiunii este modalitatea sau categoria de sisteme care ajută membrii unei echipe din cadrul unui proiect să gestioneze schimbările din codul sursa de-a lungul timpului.
  7. Linux 1
  8. Agile Fundamentals
  9. Jenkins Fundamentals – Jenkins este unul dintre cele mai folosite instrumente software pentru automatizarea proceselor de construire și testare într-o echipa care dezvoltă un proiect software. Aceste două procese fac parte dintr-un concept mai amplu, cel de Continuous Integration (CI).
  10. Continuous Integration – acest concept permite automatizarea procesului de testare a codului sursa în asa fel încât membrii unei echipe sa își poate configura fluxul de lucru pentru a integra teste automate și unitare.

Datorită acestor lucruri, dacă vă doriți la un moment dat să faceți trecerea către o altă poziție, veți avea avantajul de a fi încercat cel puțin de a privi o aplicație dintr-o altă perspectivă. În plus, în majoritatea echipelor de testare, verificările se fac în toți pașii intermediari dezvoltării – de la componente individuale, asamblarea într-un întreg, instalare și livrare. Fiind aproape de fiecare dintre acești pași și manifestând interes legat de procese în sine, cu siguranță puteți învăța lucruri care să vă ajute mai departe.

Multă lume preferă ca după lucrul cu componentele de testare automată să se îndrepte chiar către dezvoltare software și poziții ce presupun scrierea de cod într-o măsură mai mare. Partea frumoasă la această tranziție va fi legată de faptul că deja veți știi care sunt cele mai dese greșeli făcute de către developeri și vă veți putea testa singuri codul într-un mod mai eficient.

Noi, la Telecom Academy, am inclus toate aceste cursuri în cadrul unui pachet complet pe care îl poți achiziționa la un preț mult mai avantajos și pe care îl poți parcurge într-un an de la înscriere. Bineînțeles, accesul la materiale nu se va restricționa după aceasta perioadă. Vei avea parte de materiale scrise, materiale video, resurse suplimentare cu exerciții, examenele de capitol și finale, dar cel mai important: PROIECTE practice pe care le vei include în portofoliul tău, atât de necesar în viitoare procese de recrutare pe care le vei parcurge. Toate acestea se vor parcurge pe platforma noastră de e-learning https://cursuri.telacad.ro, unde poți vizualiza deja variante demo ale acestor cursuri.

Sponsori și parteneri