Category: cariera

Cum poti sa devii test automation engineer?

In ultimii ani, testarea automata este din ce in ce mai des folosita, ceea ce a generat un numar foarte mare de job-uri pentru care companiile depun eforturi in gasirea candidatilor potriviti.  Surse din industrie spun ca cererea de candidati calificati depaseste oferta existenta pe piata.

Ce inseamna asta?

Inseamna ca nu exista un moment mai bun decat prezentul sa iti faci upgrade carierei si sa investesti in dezvoltarea ta profesionala.

De ce sa faci trecerea catre zona de test automation?

  • Ar trebui sa faci aceasta trecere in primul rand daca iti doresti sa treci in zona de programare. Persoanele care scriu teste automate, scriu cod. De aceea multi Test Automation Engineeri  care fac testare automata pe o perioada lunga de timp, ajung in cele din urma sa faca trecerea complet catre programare.
  • In al doilea rand, gradul de dificultate al muncii depuse de catre cel care face testare automata este ridicat si acest lucru se reflecta un valoarea salariului platit pentru astfel de roluri. De foarte multe ori, un Senior Test Automation Engineer are acelasi salariu ca un programator. Si este normal sa fie asa pentru ca ambii scriu cod: unul scrie codul aplicatiei si altul scrie codul care testeaza aplicatia intr-un mod automat.

Ce ar trebui sa stii ca sa devii test automation engineer?

  • Ar trebui sa ai cel putin bazele testarii manuale.Un Test Automation Engineer bun este o persoana care intelege arhitectura unei aplicatii si intelege foarte bine procesele de testare. In acest sens ai nevoie de cunostinte legate de : Test cases, Test Design,  Agile,DevOps, SQL , Continuous delivery, etc. Daca nu lucrezi deja in industria IT ca si tester manual, aceste baze le poti obtine fie prin studiu individual cautand resurse pe internet, fie prin varianta mai simpla accesand un curs de testare.
  • Ai nevoie sa inveti un limbaj de programare.Daca esti incepator atunci recomandarea este sa urmezi un curs de programare pentru a putea invata corect bazele programarii. Fireste ca de unul singur, prin studiu individual folosind resursele de pe internet  te poti perfectiona, dar nu poti invata bazele, principiile si bunele practice intr-un mod corect, daca acestea nu iti sunt explicate. In acest caz, vei ajunge sa copiezi solutii de pe internet, insa fara  a intelege cu adevarat ce a stat la baza acelei abordari. In ceea ce priveste limbajul de programare, cele mai populare si usor de invatat pentru incepatori (si din perspectiva resurselor de testare automata disponibile) sunt Java si Python.
  • Ai nevoie sa inveti programele specifice folosite in testarea automata.Sunt foarte multe programe disponibile pe internet. O parte pot si accesate in mod gratuit, iar pentru cealalta parte este nevoie de o investitie financiara. Si in acest caz, utilitatea poate fi diferita, variind de la foarte bune la inutile. Un mod foarte simplu de a iti valida alegerea facuta poate fi daca te uiti la job-urile de test automation ce fel de programe au in cerinte. Vei intelege astfel care sunt cele mai folosite si in acelasi timp poate fi un bun indicator al toot-urile pe care sa iti doresti sa le intelegi cum functioneaza.

O sursa la fel de buna de inspiratie in alegerea unui program pot fi chiar cei care au deja experienta in testare automata. Ei pot sa iti spuna ce programe folosesc, plusurile si minusurile pe care ei le vad folosindu-le constant.

  • Ai nevoie sa inveti cum sunt construite si cum functioneaza aplicatiile atat din interior cat si din exterior.
  • Cateva din intrebarile la care ar trebui sa poti raspunde sunt:
    • Care au fost limbajele de programare utilizate pentru a dezvolta aplicatia?
    • Pe ce platforma este consturita aplicatia?
    • Ce baze de date implica?
    • Exista API-uri sau servicii web conectate la diferite parti ale sistemului? Daca da, cum se face aceasta conectare?
    • Care sunt caracteristicile si funcționalitatile asteptate de la aplicatie?
    • Care este procesul de CI (continuous delivery) al aplicatiei?

Acestea sunt doar cateva puncte si pot varia in functie de complexitatea aplicației testate.

De unde poti incepe?

Sa incepi ceva nou este intodeauna dificil. La fel ca si mersul pe bicicleta, la inceput este mai dificil si mai nesigur, dar pe masura ce exersezi devii din ce in ce mai bun.

Incearca sa fii informat si sa afli care sunt noile technologii, incearca sa te conectezi cu oameni care fac deja asta si cere sfaturi. Urmeaza cursuri care te invata de la zero si iti dau astfel un start foarte bun in directia aceasta. Un astfel de curs gasesti aici !

Este important sa profiti de acest context in care se afla piata IT si sa perseverezi in dezvoltarea skill-urilor tale care te pot ajuta sa accesezi roluri din aceasta industrie.

Ce este testarea software?

In zilele noastre, lumea a ajuns sa fie condusa de catre technologie. Regasim programe software aproape in orice dispozitiv cu care interactionam. In multe cazuri ne lasam viata pe mana unor programe software fie fara sa stim, fie sperand ca ele nu vor esua niciodata.

Pe masura ce numarul dizpozitivelor care se bazeaza pe diverse programe software creste, nevoia de testare software este din ce in ce mai crescuta si abilitatile pe care testerii software le detin au devenit din ce in ce mai cautate.

In ciclul de viata al unui produs de la design pana in productie, testarea este primul proces prin care se evalueaza calitatea software-ului construit.
Testarea software este un proces prin care se evalueaza criteriile functionale si nefunctionale ale uneii aplicatii cu scopul de a identifica defecte.
Este un proces de verificare si validare a unui produs software.

Care este scopul testarii software?

Scopul testarii software nu este sa gaseasca defecte asa cum multi cred. Scopul testarii este sa ne asiguram ca produsul dezvoltat este in conformitate cu cerintele utilizatorilor finali si ca este dezvoltat asa cum a fost specificat in documentele de design.

Astfel, prin testare ne asiguram ca produsul poate fi folosit asa cum este intentionat a fi folosit, ca respecta cerintele utilizatorilor si nu are defecte majore care sa pericliteze experienta utilizatorului final.

De ce avem nevoie de testare software?

Avem nevoie de testare software pentru ca aceasta minimizeaza riscul aparitiei defectelor in programele software.

Aceste defecte, pot cauza de la pierderi monetare foare mari pana la pierderi de vieti omenesti.

Cateva exemple de asfel de defecte:

  • Din cauza unui defect software un avion Airbus A300 al companiei China Airlines s-a prabusit in anul 1994. Au murit 264 de oameni.
  • Tot din cauza unui defect software, racheta Ariane5 a explodat la cateva zeci de secunde de la lansare. Racheta nu avea echipaj uman la bord, dar urma sa plaseze pe orbita doi sateliti. Costul pierderii rachetei si celor doi sateliti se ridica la peste 400 milioane de dolari.
  • Starbucks a fost nevoit la un moment dat sa inchida peste 60% din localurile din USA si Canada din cauza unui defect la sistemul de plati.

Astfel de erori apar zilnic in procesul de dezvoltare al unui produs software. De aceea, companiile producatoare de software acorda o importanta la fel de mare testarii precum este acordata si procesului de dezvoltare.

Companii precum Google, nu mai fac de foarte mult timp diferente intre programatori si testeri. Pentru Google toti sunt ingineri software responsabili de calitatea produsului dezvoltat.

Cine poate face testare software?

Sunt multe voci care spun ca nu oricine poate face testare software. Pentru ca testerii au un anumit tip de gandire (mindset) care ii ajuta sa gaseasca probleme acolo unde un dezvoltator spre exemplu nu s-ar uita niciodata.

Aceasta afirmatie este partial adevarata: nu oricine are acest tip de gandire, pentru ca acesta se invata. Oricine poate fi tester daca are un mentor bun, daca ii place testarea si investeste timp si pasiune in a invata aceasta meserie. Sa fii tester fara a trece print-un program de invatare nu este posibil.

In general un tester bun isi dezvolta urmatoarele abilitati:

  • Gandire critica.
  • Capacitatea de analiza.
  • Comunicare eficienta.
  • Abilitati technice.
  • Capacitatea de a intelege cerinte de bussines.

Toate aceste abilitati pot fi invatate si transpuse catre caracteristicile domeniului IT.

Testing is a skill. While this may come as a surprise to some people it is a simple fact..

Fewster and Graham

Tipuri de testare software?

In practica testarea software este impartita in foarte multe tipuri. In functie de natura si scopul aplicatiei testate decidem ce fel de teste trebuie sa executam.Aceste tipuri de teste pot fi impartite in doua mari categorii: teste functionale si teste nefunctionale.

Cateva exemple din categoria testelor functionale sunt:
  • Unit testing
  • Integration testing
  • System testing
  • Sanity testing
  • Smoke testing
  • Interface testing
  • Regression testing
  • Acceptance testing
  • Black box testing
  • White box testing
Cateva exemple din categoria testelor nefunctionale sunt:
  • Performance testing
  • Load testing
  • Volume testing
  • Stress testing
  • Security testing
  • Compatibility testing
  • Penetration testing

Viitorul testarii software?

O data cu revolutia social media a aparut un fenomen care da o putere extraordinar de mare consumatorilor. Puterea de a raspandi feedback-ul lor foarte rapid in grupuri foarte mari de oameni.

Acesta viralizare a feedbackului poate foarte simplu sa induca sucessul sau esecul unui produs. Din aceasta cauza companiile producatoare de software, sunt si vor fi si mai mult pe viitor atente la nevoile si parerile consumatorilor finali.

Un exemplu foarte bun in acest sens il reprezinta lansarea jocului Cyberpunk 2077. O lansare cu foarte multe defecte nerezolvate. In comunitatile de gaming aceste defecte au iscat un val masiv de nemultumiri,  care apoi sau viralizat foarte rapid, astfel incat o parte din cei care cumparasera jocul au cerut returnarea banilor. Firma producatoare a fost nevoita sa ofere si reduceri masive din pretul initial al jocului in urma valurilor de nemultumiri.

Toate aceste actiuni reprezinta pierderi financiare si de imagine pentru companiile producatoare.De aceea, va exista pe viitor un focus si mai mare pe zona de testare, pentru ca testarea diminueaza riscul consumatorilor finali de a avea o experienta neplacuta cu produsul software.

Astfel testarea, indiferent ca este facuta manual sau automat, ajuta companiile sa livreze produsele cu nivelul de calitate adecvat, minimizand astfel eventuale pierderi financiare sau de imagine. Testarea software va continua sa reprezinte o plasa de siguranta inaintea lansarii produselor mult timp de acum inainte.

In testare exista o zicala: daca nu l-ai testat, nu stii daca functioneaza!

Happy testing!

PS: In curand vom incepe un nou Curs Practic de Testare Software. Poti afla mai multe despre acesta aici. 

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.

 

 

3 motive sa incepi o cariera in IT

U

nul dintre sectoare din economie care a suferit si sufera cel mai putin in situatiile de criza economica sau situatiile exceptionale cum suntem acum, in plina pandemie de Coronavirus, este secorul IT. Chiar din contra, in situatia creata de Coronavirus se pare ca sectorul IT beneficiaza de o crestere a joburilor datorate nevoii firmelor de digitalizare fortata.

Daca situatia curenta create de pandemia de Sars-Cov2, te-a facut sa te gandesti mai mult  la viitor, daca esti in cautare de posibilitati pentru o cariera noua si nu stii incotro sa te indrepti, atunci sectorul IT ar trebui sa fie in topul listei tale.

Iata mai jos cateva motive care sa te ajute daca vrei sa iei o decizie in acest sens:

Salariile sunt peste media pietei

Nu mai este un secret pentru nimeni ca in momentul de fata salariile sunt peste media pietei in setorul IT din Romania. Acest lucru se datoreaza atat unor masuri menite sa incurajeze dezvoltarea acestui sector, luate de catre govern (impozit diferentiat ) cat si datorita cererii foarte mari a fortei de munca in acest sector. Faptul ca ai nevoie de cunostinte specific ca sa poti activa in acest sector, mareste acest decalaj intre cererea de forta de munca si oferta care se regaseste in piata.

Un lucru de mentionat este ca in acest sector se pune un pret mai mare pe cunostintele candidatilor decat pe studiile lor. Astfel incat, un candidat care are o diploma de facultate de profil si un candidat care are doar un curs de specializare, au acealsi sanse de angajare.

Gasirea unui loc de munca mai usor decat in alte sectoare alea economiei

Exista un deficit de forta de munca, cel putin in sectorul IT din Romania,  ceea ce face gasirea unui loc de munca mult mai usor decat in alte sectoare.

Pentru cei care lucreaza deja in sectorul IT este un lucru obisnuit sa primeasca cel putin saptamnal invitatii de la alte companii pentru a discuta posibilitatea de a schimba jobul. Acest lucru se intampla pentru ca exista o cerere foarte mare din partea firmelor de a ocupa pozitiile pentru proiectele curente sau pe care le incep si nu sunt suficienti profesionisti pe aceste pozitii in piata. Acest lucru duce la aceasta vanatoare de talente in piata si implicit la salariile mari pe care cei din sectorul IT le primesc.

Multiple oportunitati de cariera

Majoritatea celor care nu lucreaza in sectorul IT, asociaza tot timpul acest sector doar cu zona de programare software. Oportunitatile de cariera in sectorul IT sunt multiple, doar si aceasta zona de software develoepement are o multitudine de oportunitati si roluri diferite. De la roluri in zona de management de personal, la roluri in zona de management de proiect, vanzari, operatiuni si asa mai departe. Si fiecare dintre cele deja enumerate are diferite niveluri de cariera si diferite directii in care se pot dezvolta.

Sectorul IT este un sector in care este foarte greu sa te plafonezi, dezvoltarea personala si oportunitatile de invatare si dezvoltare profesionala sunt parte integranta a acestui sector.

Cariera ta este ca o gradina. Poate sustine o sumedenie de energii vitale care devin o recompensa pentru tine. Nu esti obligat sa cresti o singura specie in gradina ta. Nu esti obligat sa faci un singur lucru in cariera ta..

Jennifer Ritchie Payette
Vrei sa incepi o cariera in IT si nu stii cum ?

Daca iti doresti sa incepi o cariera in sectorul IT dar inca nu stii cum sa incepi, noi te putem ajuta. Ne poti trimite un mesaj iar unul dintre expertii nostri in cariera te va contacta pentru o evaluare gratuita.