Mai este nevoie sau nu de testare manuala?
Ultimele doua decenii au adus pentru industria IT si produsele pe care aceasta le livreaza o dezvoltare in ritm exponential. Nivelul de cunostinte, cercetarea, instrumentele si procedeele de lucru au evoluat considerabil, implicit si nivelul la care se realizeaza procesul de testare software.
In paralel cu aceasta evolutie pozitiva vizibila a dezvoltarii si testarii produselor de IT, a aparut tot mai des o intrebare care a generat discutii, dezbateri si chiar polemici printre expertii QA si nu numai: mai avem nevoie de testarea in mod manual a produselor sau aceasta e pe moarte deoarece va fi inlocuita in totalitate de testarea automata? In continuare vom aborda aceasta intrebare, incercand si aici pe blog o dezbatere asupra problemei cu argumente.
Contextul general al discutiei
Pentru a intelege mai bine cum, de unde si de ce a aparut intrebarea despre necesitatea testarii manuale in zilele noastre, trebuie sa vedem mai intai care este contextul acestei discutii si care sunt factorii ce influenteaza posibilele raspunsuri la intrebarea in cauza.
Trebuie mentionat inca din acest punct al discutiei noastre ca dezbaterile pe marginea acestei intrebari nu sunt de ieri, de azi, ci au cativa ani buni de cand exista in spatiul online si inca nu s-au epuizat. Una dintre cele mai vechi „dovezi” ale adresarii acestei intrebari este pe un canal al forumului de tech Stack Overflow din februarie 2010, dupa cum se poate vedea.
Un prim factor care a stat la radacina problemei si a modelat contextul actual este cel al dezvoltarii framework-urilor de automatizare. Astfel, de la inceputul anilor 2000 si pana in prezent au aparut si s-au rafinat o multitudine de instrumente de automatizare a cazurilor de testare precum Selenium, Cypress, WebDriverIO sau Playwright, toate fiind din ce in ce mai performante si fiind integrate tot mai mult in proiectele de automation ale firmelor din IT care dezvolta servicii ori produse.
Automatizarea cazurilor de test a dus la o reducere a ratei de folosire a testarii efectuate doar in mod manual de-a lungul timpului, de aici existand desigur o serie substantiala de beneficii, dar si de puncte slabe, despre care vom detalia mai incolo. Cert este ca automatizarea multor cazuri de testare a pus baza intrebarii daca nu cumva testarea manuala este „pe moarte”.
Un al doilea factor care a inceput sa influenteze contextul acestei dezbateri de data recenta este dezvoltarea tehnologiei AI (Artificial Intelligence) si a aplicatiilor bazate pe LLM, precum arhi-cunoscutul ChatGPT. Aceste aplicatii au inceput sa fie si ele folosite tot mai frecvent si chiar integrate unele dintre ele in procesul de testare software, un exemplu cunoscut aici fiind GitHub Copilot, dezvoltat pentru a ajuta la scrierea mai rapida a codului.
ChatGPT a fost testat de unii oameni cu titlu de exemplu in sarcinile uzuale de testare si in unele cazuri a reusit sa se descurce decent la a scrie niste testcase-uri, la a oferi sugestii de flow-uri de testare sau chiar de a scrie intr-un mod basic structura unui test automat. Aceste lucruri i-au facut (din nou) pe unii oameni sa afirme ca testarea manuala nu mai are viitor.
Pe langa acesti factori de natura tehnica, unul mai degraba conjunctural este reprezentat de criza prin care trece la nivel global domeniul IT, in urma careia foarte multe companii au trebuie sa disponibilizeze multi oameni. De aici a aparut din nou ideea ca multi testeri manuali au fost / vor fi dati afara pentru a fi inlocuiti cu Automation QAs sau chiar in totalitate de Inteligenta Artificiala, idee care este insa cel putin discutabila, daca nu chiar indoielnica.
Argumentele pentru mentinerea testarii manuale
Acum vom vedea pe rand argumentele in favoarea necesitatii testarii software de tip manual si a mentinerii acesteia, iar apoi si argumentele impotriva acestei idei.
Un prim argument pentru care testarea manuala nu are cum sa dispara din cadrul procesului general de asigurare a calitatii este ca aceasta este forma cea mai apropiata de modul de folosire End-to-end al produselor software, cat mai asemanator cu modul de folosire al unui utilizator normal. Niciun tool de automatizare, oricat de performant ar fi, nu poate inlocui experienta de utilizare autentica pe care un QA uman o are asupra acelui produs.
Din acest punct de vedere sunt multe sub-tipuri de testare specifice care nu ar putea fi inlocuite (cel putin nu astazi), iar printre exemplele cele mai elocvente sunt testarea de UI (interfata de utilizare) si testarea de accesibilitate.
Un al doilea argument care vine in sustinerea testarii manuale este unul ce tine de natura sa in opozitie cu testarea automata, si anume ca nu toate functionalitatile si cazurile de testare pot fi automatizate sau nu e fezabil acest lucru.
De exemplu, framework-urile de automatizare precum Selenium sau Cypress pot interactiona in cazul aplicatiilor web doar cu elementele din DOM, din structura directa a softului, si le e imposibil sa acceseze elemente ce tin de browser in sine. Un caz concret este ca ele nu pot inchide din butonul de Close (X) fereastra si nici sa incerce actiuni mai specifice (sa modifice un URL). Sau daca e vorba de anumite integrari mai complexe cu alte aplicatii sau device-uri fizice, atunci tool-urile de automatizare isi arata serios limitarile.
Un alt punct extrem de important al testarii manuale este ca ea are specificul de a fi executata „la liber”, testerul poate executa orice actiuni doreste intr-un mod liber, pentru a explora cat mai in amanunt functionalitatile, sa vada daca acestea merg bine sau nu, de a verifica anumite happy flows, negative ori other flows in cadrul aplicatiei fara constrangeri. Prin comparatie, testera automata poate doar sa execute testele pe care noi in calitate de Automation QA le scriem. Insa creativitatea se poate pune in practica cel mai elocvent prin testare manuala, una profund exploratorie si libera.
De aici rezulta si argumentul ca AI-ul nu poate prelua si executa in intregime procesul de testare, pentru ca nu este capabil sa inteleaga un produs software asa cum utilizatorii de rand il fac, nici sa il foloseasca in situatii reale ori sa depisteze ceva ce e gresit ori bug. Produsele software se dezvolta de catre oameni pentru nevoile oamenilor, nu pentru cele ale AI-ului.
Argumente impotriva testarii manuale
Bineinteles, ca in orice dezbatere, exista si argumente formulate impotriva necesitatii testarii manuale, care sustin teza ca aceasta e pe cale de disparitie.
Un argument principal care sustine respectiva idee este ca testarea manuala implica si consuma foarte mult timp. Investigarea, studierea si analiza noilor aplicatii sau functionalitati specifice este pe buna dreptate un proces de durata deoarece testerul trebuie sa se obisnuiasca si sa inteleaga ceea ce verifica si valideaza in concordanta cu cerintele de business. Prin comparatie, daca un test automatizat poate dura cateva minute, o verificare manuala poate lua cateva zeci de minute sau, in cazurile mai speciale si complexe, cateva ore.
Un alt argument derivat din primul impotriva testarii manuale este dat de costurile sale potentiale, care pot sa le depaseasca pe cele ale testarii automate. Facand un calcul ipotetic, costurile salariale pentru o echipa de mai multi QA manual ar putea sa le depaseasca pe cele ale catorva specialisti in automatizare cu licentele pentru tool-urile aferente, insa aici depinde destul de mult de la proiect la proiect.
De asemenea, exista si ideea potrivit careia avansul tehnic al instrumentelor de testare automata va inlocui cu totul testarea manuala, deoarece acestea devin din ce in ce mai performante, mai fiabile si mai adaptabile anumitor scenarii de testare. Privind retrospectiv, e adevarat ca instrumentele de automatizare s-au dezvoltat si ele si au devenit din ce in ce mai bune, astazi fiind capabile sa execute foarte multe actiuni la care probabil nu ne-am fi gandit acum 15-20-25 ani. Chiar si asa, ele nu au inlocuit 100% munca manuala a unui QA.
Mai mult decat atat, se poate spune despre testarea in mod manual a produselor soft ca este supusa erorii umane, existand riscul ca acel QA sa nu fie perfect atent la anumite detalii si sa ii scape anumite bug-uri. Acuratetea si refolosirea acestei munci pot fi si ele chestionate aici, ca urmare a naturii umane supuse permanent greselii, dar si a faptului ca munca de verificare manual nu e precum un cod, unde aceeasi functie poate fi ulterior adaptata imediat sa fie folosita in alta parte, la automatizarea altui test.
Vedem asadar ca cei care se tot intreaba de ani buni daca mai este necesara testarea manuala au destule argumente prin care pot sustine (chiar daca nu definitiv si irevocabil) ca acest tip de testare este treptat pe cale de disparitie.
Si totusi, care e adevarul in legatura cu testarea manuala?
In orice dezbatere, adevarul se afla intotdeauna in zona de mijloc a celor 2 extreme care sustin partile implicate. Si in cele mai multe cazuri, raspunsul nu este unul 100% cert, ci unul relativ. Sau cum am spune in mod colocvial, depinde.
Pornind de la aceste premise, este perfect legitim sa ne intrebam care este totusi situatia reala cu testarea manuala in zilele noastre (2024 momentul acestui articol). Evident, raspunsul pe care as incerca sa il ofer nu este nici definitiv, nici singurul valabil.
Personal, cred ca testarea de tip manual nu o sa dispara, cel putin in urmatorii multi ani de acum incolo, deoarece este in buna parte indispensabila acestui proces, privind verificarea si validarea calitatii produselor software. Dupa cum am putut vedea, din 2010 (cel putin) se discuta pana in zilele noastre daca „testarea manuala a murit?”, si surpriza – aceasta inca exista si este bine reprezentata in cadrul companiilor mai mari sau mai mici de IT.
Singurul lucru care s-a schimbat vis-a-vis de aceasta intrebare mai mult retorica este contextul in care aceasta a tot reaparut, folosindu-se si de curiozitatea oamenilor aflati mai ales la inceput de drum. Daca la inceputul anilor 2000 – 2010 se punea in discutie viitorul testarii manuale prin prisma aparitiei si evolutiei framework-urilor de testare automatizata precum Selenium, WebDriverIO sau Cypress, la inceputul anilor 2020 discutia pe marginea acestei intrebari se centreaza in jurul dezvoltarii Inteligentei Artificiale, noul laitmotiv invocat tot mai des pentru a marca ”extinctia” testarii manuale.
Daca insa privim la rece ultimii 10-15 ani, vedem ca testarea manuala nu a disparut, nu a fost complet inlocuita, ea doar a fost adaptata ca rol si metoda in cadrul procesului modern de testare software, care incorporeaza bineinteles si automatizarea mai multor cazuri de testare. Insa aceasta din urma survine ca o etapa ulterioara verificarii de tip manual a scenariului respectiv, nicidecum inainte.
Un tool de automatizare va face doar ce si cum il programam noi, si se va aplica doar pe cazurile deja bine cunoscute si documentate. Testarea in mod manual a unui feature este cruciala la inceputul implementarii sale pentru a putea observa experienta de utilizare, defectele si eventualele sugestii si recomandari de imbunatatire.
Asa cum am prezentat si in paragrafele anterioare, si testarea manuala si cea automata prezinta avantaje si dezavantaje, in mod clar si de necontestat. Dar ele functioneaza cel mai bine impreuna, nu separat, si cu siguranta nu una fara cealalta. Rezultatul aplicarii lor este cel mai bun daca ele sunt folosite complementar si intr-un mod logic, nu rigid, separat si intermitent.
In opinia mea, cred ca cel mai fiabil mod in care testarea manuala va evolua va fi acela in care ea va fi prezenta in continuare, dar va fi cat mai bine aplicata si integrata intr-o echipa mixta de QA. Practic, nu prin separarea frecventa in echipa de testare manuala si echipa de testare automata, ci o singura echipa unde eventual munca sa fie mixta, astfel incat un QA sa poate verifica si manual o aplicatie, sa nu se departeze de viziunea autentica a unui utilizator, dar si sa faca partea de automatizare, pentru eficientizarea testarii ulterioare a functiilor deja implementate.
Desigur, aceasta e doar o opinie si timpul cu siguranta ne va pune la dispozitie noi raspunsuri sau factori care vor influenta aceasta problema, dar fara a intrece masura in mod voit pentru a exacerba o anumita viziune (precum cei care tot zic de ”apocalipsa AI”).
Concluzii
In incheiere, reamintesc faptul ca intrebarea despre necesitatea si disparitia testarii manuale este destul de veche in spatiul online, fiind subiectul a mai multor dezbateri. Argumentele sunt multe si diverse, din toate sferele, atat pro cat si contra. Ce e importanta insa de retinut este ca testarea manuala nu a disparut, inca exista si ea a fost adaptata in permanenta ca sa satisfaca noile cerinte tehnice si de business din domeniul IT.
Desigur, avansul testarii automatizate este unul evident si considerabil, insa cele 2 forme de testare au fost si sunt complementare, nu au fost inventate sa se inlocuiasca una pe cealalta, deoarece mijloacele lor de aplicare si obiectivele raman destul de bine specificate, insa sunt reunite de un scop comun: asigurarea calitatii finale a produselor software pentru utilizatorii finali.
Rubrica de comentarii a acestui articol este deschisa oricarei opinii in legatura cu starea si viitorul testarii manuale, dezbaterea fiind binevenita.
Surse despre subiect
Detalii, argumente si discutii despre necesitatea testarii manuale sunt pe StackOverflow, pe Reddit, pe Medium si pe LinkedIn.
Un articol mai degraba ”sceptic” despre testarea manuala.
O perspectiva comparativa testare manuala vs. automata