Ukoliko razmišljate da svoj karijerni put usmerite u pravcu QA testiranja, ali niste sigurni koji metod biste odabrali, u tekstu koji sledi naši sagovornici su detaljno opisali šta podrazumeva pozicija manuelnog, a šta automatskog testera.
Softverski testeri igraju ključnu ulogu u IT industriji jer je njihov zadatak da utvrde da li softverski proizvod odgovara unapred postavljenim očekivanjima. Ovaj posao uključuje testiranje softverskih i sistemskih komponenti pomoću manuelnih ili automatizovanih alata za procenu jednog ili više svojstava. Dakle, svrha testiranja softvera je da se identifikuju greške, praznine ili nedostaci koji narušavaju kvalitet softvera.
Kada poredimo automatsko i manuelno QA testiranje, ne postoji nijedan univerzalni parametar koji bi presudio u korist jednog, odnosno drugog metoda. Stoga, odabir profesije u sferi softverskog testiranja, umnogome zavisi od vaše stručnosti, senzibiliteta, interesovanja i ličnih preferenci.
Kako bismo vam olakšali ovaj izbor, u tekstu koji sledi predstavili smo vam karakteristike obe navedene vrste softverskog testiranja. U prvom delu, Minja Šiljegović Ilić govorila je o manuelnom testiranju, a u drugom je Stefan Šalipurević odgovorio na sva pitanja koja ste imali u vezi sa automatskim testiranjem.
Manuelno testiranje pokriva scenarije koje nije moguće automatizovati
Nakon završenih studija primenjene informatike na Visokoj poslovnoj školi u Novom Sadu i nekoliko poslova koje je radila van IT industrije, Minja je primljena na praksu iz manuelnog QA testiranja u kompaniji COING.
Premda nije imala prethodno iskustvo u testiranju, ona je brzo napredovala u ovoj oblasti, te nakon mesec dana dobila stalni posao u pomenutoj kompaniji. Kako kaže, svojim primerom je dokazala da obrazovanje iz neke oblasti nije presudno ukoliko osoba ima volju za učenjem i napredovanjem.
Pitali smo Minju šta je tačno oblast kojom se bavi, a ona nam je objasnila da je manuelno testiranje “ručno” proveravanje funkcionalnosti nekog softvera u cilju pronalaženja bagova i anomalija kako bi se one uklonile pre nego što softver dođe do krajnjeg korisnika. Za razliku od automatskog, ovaj vid testiranja ne zahteva poseban framework za automatizaciju, odnosno:
Svrha manuelnog testiranja je da pokrije što više scenarija koje nije moguće automatizovati i na taj način osigura kvalitet softvera. Takođe kada neka funkcionalnost dođe prvi put na testiranje, posle razvoja, manuelni QA proverava njenu usaglašenost sa specifikacijom, dizajnom i piše test case-ve koji se kasnije mogu automatizovati.
Kako dalje objašnjava, koraci u testiranju delimično se razlikuju u zavisnosti da li je postojeća funkcionalnost koja se ne ponaša očekivano ili je tek implementirana funkcionalnost. Primera radi, kompanija u kojoj je zaposlena vlastiti project management alat, Plaky, koristi za bug reports, u Test linku se zapisuju test cases, a API testiranje se uglavnom obavlja preko Postman-a. Na delu, to izgleda ovako:
U slučaju da smo dobili prijavu od korisnika da se postojeća funkcionalnost ne ponaša očekivano, potrebno je pokušati reprodukovati problem i nakon utvrđivanja njegovog postojanja, zapisati ‘bug report’ koji sadrži jasne i precizne korake za reprodukciju. Project manager to dalje delegira developerima i nakon ispravke novi kod dolazi na testiranje.
Proverava se sama funkcionalnost i njen uticaj na ostale delove aplikacije na nekoliko testnih okruženja pre puštanja na produkciju. Kada se radi o novoj funkcionalnosti, prvenstveno se upoređuje njen rad sa zahtevima specifikacije i dizajna, kao i ponašanje sa ostatkom aplikacije. Nakon toga se pišu ‘test cases’ koji mogu biti automatizovani.
Takođe, Minja je istakla da se ceo proces odvija na nekoliko testnih okruženja dok se ne eliminišu svi prijavljeni bagovi i kada QA potvrdi da je funkcionalnost spremna za produkciju. Što se tiče tipova manuelnog testiranja, istakla je da oni zavise od ciljeva njihovog sprovođenja:
Osnovna podela je na funkcionalno i nefunkcionalno testiranje. Funkcionalno proverava da li aplikacija radi ono što se očekuje. Tu spadaju ‘smoke test’, ‘sanity’, UX i UI, API, integraciono, sistemsko, regresiono, Cross Browser itd. Nefunkcionalno testiranje se fokusira na performanse aplikacije i primenjuje se tek nakon što je funkcionalno testiranje uspešno završeno.
Tu spada performance testing, load testovi, security, stress testovi i drugi. Gotovo nikada se ne izvodi samo jedna vrsta testiranja, već kombinacija u skladu sa zahtevima i vremenom predviđenim za testiranje.
Kreativnost testera doprinosi boljem razumevanju korisničkih potreba
Kada su u pitanju tehničke veštine koje manuelni tester treba da poseduje, Minja je istakla da je – pored neophodnog osnovnog poznavanja rada na računaru – potrebno i znanje pisanja bug reports, test cases, kao i korišćenje dev alata. Takođe, nije na odmet ni poznavanje rada u project management alatima kao što su Trello, Jira, Asana, Plaky ili softvera za pisanje test case-va kao što su Test link, Test rail i drugi.
Ipak, prema njenom mišljenju, za manuelnog testera bitnije su takozvane soft skills, na prvom mestu razvijeno logičko i kritičko razmišljanje, oko za detalje i kreativnost:
Istakla bih visok stepen emocionalne inteligencije i asertivne komunikacije koji su značajni u kontaktu sa developerima i klijentima. Ipak najvažnije od svega je volja za konstantnim učenjem i napredovanjem, jer je IT industrija koja se razvija velikom brzinom.
Manuelno testiranje je podložno greškama kao i bilo koji drugi posao, zato Minja ukazuje na to da je veoma bitno da se te greške svedu na minimum. To, naravno, zavisi od testera koji je dužan da svoj posao obavlja vrlo savesno i detaljno kako bi omogućio da se bagovi ne provuku na produkciju.
Iz njenog vlastitog iskustva, najbolji učinak se dobija kombinacijom manuelnog i automatskog testiranja. Na osnovu tog zaključka, pitali smo našu sagovornicu koje su prednosti, a koje mane manuelnog u odnosu na automatsko testiranje, na šta nam je ona odgovorila:
Prednost manuelnog testiranja je što zavisi od kreativnosti testera i može mnogo bolje da replicira ulogu krajnjeg korisnika, da razume njegove potrebe i zahteve. Samim tim je veća verovatnoća da izvede kompleksnije akcije i pronađe bagove koji nisu baš laki za detekciju.
Takođe može da izvede akcije koje nije moguće automatizovati. Mana u odnosu na automatsko je brzina izvođenja testova i kratak rok za koji treba završiti testiranje, pa je nemoguće ponoviti neki test više puta.
Automatizacija ubrzava testiranje i obezbeđuje veću preciznost
Stefan je sasvim slučajno počeo da radi u oblasti software testing-a, u okviru jedne manje firme u Novom Sadu, čiji rad se bazira na Microsoft tehnologijama. Inicijalna želja bila mu je da postane developer, međutim, splet okolnosti odveo ga je na drugu stranu. Ubrzo je shvatio da mu se pozicija QA testera veoma sviđa, pa je do danas ostao u tom poslu, a svoju trenutku poziciju opisuje na sledeći način:
Uz dobre mentore sam svaki dan sve više napredovao, da bih sada došao u poziciju da ja mentorišem druge, u firmi u kojoj sam trenutno zaposlen. To je jedna mlada firma u Novom Sadu, po imenu Xcentric IT, u koju sam došao negde od njenog nastanka, i u kojoj sam bio zadužen, da pored osnovnih aktivnosti koje nosi moja rola, podignem i celi test sistem od nule.
Kao i Minju, Stefana smo pitali šta je tačno opis njegovog posla, po čemu se razlikuje od manuelnog testiranja, te koje su njegove prednosti, a koje mane. On nam je odgovorio da – za razliku od manuelnog testiranja za čije su izvršavanje neophodni ljudski resursi -automatsko testiranje izvršava se automatski, uz pomoć raznih alata i skripti, koje tester prethodno napiše u nekom programskom jeziku. Drugim rečima:
Svaka akcija iz test scenarija koju bi manuelni tester ručno izvršavao, pokrivena je kodom u automatskim testovima, uključujući i same verifikacije. Verifikacija je, najprostije rečeno, upoređivanje stvarnih rezultata sa očekivanim. Ukoliko se rezultati poklapaju test prolazi, ukoliko ne – test pada.
Prilikom izvršavanja manuelnih testova, tester prati test scenarija i procenjuje rezultate verifikacije, dok rezultate u automatskim testovima dobijamo kao proizvod izvršenog koda.
Stefan dalje navodi da su prednosti automatskog testiranja mnogobrojne, pri čemu posebno ističe brzanje procesa testiranja zahvaljujući kojem se jedan isti automatski test može izvršiti sa većim skupom različitih podataka za kraće vreme. Zahvaljujući tom, ubraznom procesu testiranja, rezultati izvršenih testova dolaze brzo, novi problemi u softveru bivaju brzo detektovani, što je jedan najznačajnijih benefita testova.
Takođe, kao prednost automatskog testiranja navodi i povećanu preciznost, jer automatski test će dati precizan rezultat bez obzira na broj ponavljanja testa, dok kod manuelnog testiranja postoji faktor zamora i ljudske greške. Ipak, pored navednih benefita, Stefan nam je ukazao i na mane koje prate ovaj vid testiranja, a koje ne treba zanemariti:
Samo pisanje koda zahteva stručnost testera i poznavanje nekog programskog jezika i drugih alata. Složeni testovi i funkcionalnosti mogu biti jako teški za automatizaciju. Programi i alati koji se koriste vrlo često mogu biti skupi. Potrebno je održavati automatske testove da bi imali validne rezultate, što će reći potrebno je i dodatno vreme za to.
Uzevši u obzir činjenicu da su softverski sistemi automatizovani sami po sebi, stvara se privid da nema potrebe za QA automation testerom. Zašto to nije tako i koje su sve njegove odgovornosti da bi sve radilo savršeno, Stefan nam je objasnio na sledeći način:
Ovde ćemo se osvrnuti na činjenicu potrebe testinga uopšte, bilo da je manuelno ili automatsko. Znamo da za dobar kvalitet softvera su potrebni i aspekti testiranja QA inženjera, jer onaj ko kreira taj kod ne može objektivno sagledati potencijalne probleme, kao što bi to neko ko se postavi kao krajnji korisnik, što je upravo ono što jedan tester radi.
Moja glavna odgovornost, kao automation testera je da osiguram kvalitet softvera u celosti, u smislu da se pobrinem da su sve funkcionalnosti sistema dobro testirane i greške identifikovane.
Pri tome, on ističe da identifikacija samih grešaka nije dovoljna, te ih je potrebno ispraviti i ponovo verifikovati. Kako postići da kvalitet softvera bude na visokom nivou? Pa upravo, između ostalog, pisanjem automatskih testova, praćenjem rezultata i brzim reagovanjem na potencijalne probleme koje test otkrije:
Testovi na projektu na kom radim se automatski pokreću svaku noć, i ja svako jutro, uz jutarnju kafu, pregledam test report i u slučaju da neki od testova pada, identifikujem problem i prijavim ga.
Vešt automatski tester treba da ima iskustva u manuelnom testiranju
Nadalje, Stefan nam je nabrojao koje tehničke, a koje soft veštine treba da poseduje automation tester, te objasnio koliko je za njegovu poziciju važno biti u toku i stalno se usavršavati. S obzirom na to da automatizacija manuelni test pretvara u kod, on je kao jednu od osnovnih tehničkih veština istakao poznavanje nekog od programskih jezika kao što su Java, JavaScript ili Python.
Zatim, da bio taj kod postao test koji može da se izvršava, potrebno je znanje nekog od alata za automatizaciju, kakvi su Selenium, Appium ili Cypress; poznavanje tehnike automatizacije testiranja kao što su BDD – Behavior Driven Development, TDD – Test Driven Development; osnovno poznavanje nekog od CI/CD tool-ova gde se testovi pokreću u sklopu pipeline-ova i gde se mogu videti razne metrike vezane za rezultate izvršavanja testova poput Jenkins, Travis CI, te poznavanje Git-a.
Od soft skills, Stefan je izdvojio timski rad, kreativnost i inovativnost, samoinicijativnost i motivaciju za usavršavanjem. Kada je reč o veštinama, zanimalo nas je i koliko je dobro znanje matematike važno za automatsko testiranje, pa nam je naš sagovornik objasnio koje su to matematičke veštine poželjne u ovom poslu:
U principu, svaki matematičar ima velike predispozicije da se dobro snađe u svetu manuelnog, pa tako i automatskog testiranja.
Logika, logičke operacije, algoritmi, funkcije, razvijene veštine razbijanja jednog većeg problema na vše manjih problema (celina), razumevanje problema, uočavanje obrazaca i znanja iz mnogih drugih segmenata matematike mogu u mnogome doprineti jednom testeru da shvati biznis logiku, napiše detaljnje i dobre test scenarije, napravi dobru pokrivenost testovima, koristi se funkcijama prilikom pisanja koda za automatizaciju testova i slično.
Iako se pretpostavlja da QA tester ne mora da bude programer, pitali smo Stefana da li određena znanja i veštine iz ove oblasti mogu pomoći da bude kvalifikovaniji u svom poslu, na šta nam je on odgovorio:
Automation QA engineer ne mora nužno da bude programer ali je nužno da poznaje bar osnovne principe programskog jezika u kom piše testove. Što više razume programski jezik i principe to će moći bolje da piše svoje testove, da postavlja bolju strukturu test automation projekta, da piše kod koji je kvalitetniji i lakši za održavanje.
Za kraj, Stefan je istakao da po njegovom mišljenju vešt automation tester treba da ima iskustva i u manuelnom testiranju. Kako kaže, kroz manuelno testiranje, tester bolje razume funkcionalnost aplikacije, identifikuje potencijalne probleme i stvara test slučajeve koje kasnije automatizuje. Ipak, ističe i da te veštine, premda jesu potrebne, nisu dovoljne da bi bili dobar automation tester jer su za to neophodne i sve gorepomenute tehničke veštine.
Želiš da podeliš svoje mišljenje o ovoj temi? Komentari su otvoreni na našoj Facebook i LinkedIn stranici!