Testerii și dezvoltatorii par uneori a fi două persoane venite de pe planete diferite. S-au spus multe lucruri despre relația dintre testeri și dezvoltatori. Un lucru e cert: au moduri diferite de gândire, și ghici ce? Chiar au moduri diferite de gândire, dar asta îi face pe unii mai buni decât pe alții? Vom vedea. Pariez că toată lumea a auzit aceste întrebări cel puțin o dată, mai ales dacă lucrezi deja în domeniul dezvoltării software-ului.
- Este mai bine să fii dezvoltator software sau tester?
- Dezvoltarea este superioară testării?
- De ce tester și nu programator?
- Programatorii și testerii sunt ca apa și uleiul?
- Și această listă poate continua la nesfârșit.
Prima întrebare pe care și-ar pune-o un începător în acest domeniu este: „Ce este un tester?” Acum, dragi testeri, să nu vă supărați, pentru că unii dintre voi ați pus aceeași întrebare înainte de a începe să lucrați ca testeri; și eu am făcut asta. Este ceva perfect normal; haideți să facem un mic exercițiu pentru a vă explica de ce:
- Gândește-te la câteva filme despre dezvoltare software, scriere de cod, dezvoltatori, hackeri etc.
- Acum gândește-te la un film care să fie despre testare și asigurarea calității (QA).
- Probabil că tuturor le-a fost mult mai ușor să își amintească câteva filme legate de dezvoltare decât de testare. Deoarece a fi dezvoltator pare mai popular și „cool”, uneori rolul unui tester poate părea mai puțin important, dar oare este adevărat? Pentru a demonta acest mit, trebuie să cunoaștem atât rolul testerului, cât și pe cel al dezvoltatorului.
Așa cum am menționat la începutul acestui articol, testerii și programatorii au moduri diferite de a gândi. Testerii privesc produsul dintr-o perspectivă diferită față de programatori. Dezvoltatorii se gândesc la cum să creeze aplicația, iar testerii se gândesc la cum să o „distrugă”.
Prin „cum să o distrugă” nu înseamnă că testerul va strica munca programatorului. Înseamnă că testerul va adopta rolul utilizatorului și va aplica toate scenariile posibile și imposibile asupra aplicației. Acest lucru se face pentru ca aplicația să nu dea erori atunci când este lansată în mediul live.
În unele cazuri, atât pentru programatori, cât și pentru testeri, este greu să înțeleagă particularitățile muncii celuilalt. De aceea, uneori, dezvoltatorii nu înțeleg de ce testerii „strică” aplicația lor, iar testerii nu înțeleg de ce dezvoltatorii creează o aplicație cu erori.
Programator versus Tester
Un programator muncește din greu pentru a crea un produs; îl gestionează cu multă grijă și atenție. Un tester muncește la fel de mult, dar scopul său este să „distrugă” acest cod, aplicând cele mai rele cazuri și scenarii pentru a testa rezistența, durabilitatea și eventualele defecte. Așadar, atunci când un programator predă, în sfârșit, sprintul său atât de bine lucrat testerilor nemiloși, pregătiți să execute testarea „out-of-the-box”, aceștia demolează codul… în liniște.
Programatorii sunt adesea percepuți ca având un atașament „paternal” față de codul pe care îl creează. Cât de des ați auzit aceste afirmații: „Este un caz limită, utilizatorii nu vor face asta” sau „Îmi cunosc codul, nu se va întâmpla asta”? Ei bine, ghici ce? Codul trebuie să facă asta! Poate părea puțin ciudat, dar un programator bun știe să fie obiectiv și să accepte că testerii trebuie să facă lucruri „teribile” codului său, pentru că, dacă ei nu o fac, altcineva o va face! Adesea, programatorii nu știu cum va fi folosit codul lor la capătul celălalt al „peretelui de delimitare” și nu sunt pregătiți pentru milioanele de „scenarii” pe care testerii le vor descoperi.
Fiind în mediul de dezvoltare, care de obicei se concentrează pe scenarii optimiste despre cum să facem lucrurile să funcționeze eficient, programatorii nu reușesc adesea să comute la starea de gândire „ ce poate să meargă prost”. De aici apare și o altă expresie pe care o auzim frecvent: „ Nu se reproduce pe mașina mea” sau „ Nu pot reproduce asta”.
Așa cum știm deja, fiecare proiect are un termen limită până când produsul trebuie lansat „ în mediul real”, iar acest lucru ridică câteva întrebări:
- Cum se va încheia această luptă fără sfârșit dintre Creator (programator) și Distrugător (tester)?
- Care este scopul acestei lupte?
- Cine are dreptate și cine greșește?
- Care este mai bun?
- După ce programatorii și testerii se înțeleg mai bine, ei pot învăța să lucreze împreună. Aceasta este progres, iar scopul lor comun poate fi atins doar prin colaborare.
Ca ființe umane, vom face greșeli – asta ne face oameni – și, de cele mai multe ori, cea mai eficientă modalitate de a învăța este dintr-o greșeală. Adesea este mult mai ușor să detectezi o eroare în munca altcuiva decât să o observi în propria muncă. De aceea, programatorii și testerii se completează reciproc. Amândoi fac greșeli. Nu contează cine face mai multe; esențial este să găsească împreună soluția la problemă, ca echipă. Dacă nu există luptă, nu există progres. Știm că progresul este imposibil fără schimbare, iar cei care nu își pot schimba modul de gândire nu pot schimba nimic.
Cred că acum ești pregătit să descoperi adevărul despre această luptă:
- Programatorii și testerii nu sunt dușmani; ei fac parte din aceeași echipă și luptă pentru același scop: să livreze un produs de calitate!
- Adevărata luptă fără sfârșit este să livrezi un produs de calitate!