Protekle nedelje održan još jedan meetup u seriji meetup-ova za Cortex akademiju koji su prvenstvno namijenjeni budućim polaznicima, ali i svima onima koji žele da direktno od najboljih stručnjaka dobiju odgovore na sva pitanja i riješe nedoumice u vezi ICT zanimanja.
Tema 3 meetup-a bila je softversko testiranje, a o istoj nam je detaljnije govorio jedan od najboljih softver testera u regionu, Marko Dragović. Ukoliko niste bili u mogućnosti da ispratite isti, u današnjem blogu pročitajte sve što treba da znate o softverskom testiranju kroz intervju koji smo imali sa Markom.
Detaljno objašnjenje softverskog testiranja i ovog usmjerenja pročitaj u nastavku.
Možete li nam objasniti šta je testiranje softvera terminologijom razumljivom nekome ko je početnik u oblasti informacionih tehnologija ?
Testiranje softvera je proces evaluacije i verifikacije softverskog proizvoda sa svrhom da aplikacija/sistem/moduli rade ono što bi trebalo da rade u cilju sprečavanje grešaka, smanjenje troškova razvoja, poboljšanje performansi sistema, povećanja povjerenja klijenata itd.
Testiranje možemo definisati i kao proces procjene sistema ili njegovih komponenti sa namjerom da se utvrdi da li zadovoljava navedene zahtjeve ili ne. Jednostavnim riječima, testiranje je izvršavanje sistema kako bi se identifikovale sve praznine, greške ili nedostajući zahtjevi.
Testiranje softvera identifikuje greške i probleme u procesu razvoja tako da se oni popravljaju prije lansiranja proizvoda. Ovaj pristup osigurava da se klijentima distribuiraju samo kvalitetni proizvodi, što zauzvrat podiže zadovoljstvo i povjerenje kupaca.
Koja je razlika između automatskog i manuelnog testiranja softvera i koji su krajnji ciljevi procesa testiranja softvera ?
Po načinu izvođenja, testiranje se dijeli na manualno i automatsko. Prvobitno jako povezani, takođe imaju i neke fundamentalne razlike koje se moraju razlučiti.
Postoji mnogo krajnjih ciljeva procesa testiranja i rekao bih da je svaki podjednako važan. Prije svega, testiranjem mi vršimo takozvanu evaluacija proizvoda i osiguravamo da su ispunjeni svi tehnički zahtjevi. Shodno tome mi vršimo izgradnju povjerenja kod klijenata i pružamo informacije zainteresovanim stranama.
Tokom samog testiranja nalaze se funkcionalne greške i ne samo to, nego, radimo i njihovu prevenciju sve sa ciljem minimiziranja rizika proizvoda. U mnogome značajni cilj jeste usklađenost za zakonima. Moramo napomenuti da bilo kakva promjena zakona može manje ili više uticati na izmjene već postojećih funkcionalnosti ili pak kreiranja novih.
Stoga je usklađenost za zakonima veoma bitan cilj testiranja koji često ne zauzima prvenstvo na ljestvici među drugim ciljevima testiranja ali je jak važan i stoga ga posebno izdvajam jer ovdje vidimo i sponu između dvije oblasti, pravne terminologije i softverskog inženjeringa kao jednu zanimljivu činjenicu.
Možete li nam reći nešto više o planu i programu kursa? Zašto je baš tako koncipiran i šta polaznici mogu očekivati nakon uspješnog savladavanja ? Koja su to znanja i vješine kojima će ovladati?
Plan i program kursa je koncipiran na osnovu moga više od decenije bogatog iskustva na ovome polju. Program u sebi sjedinjava sve osnove (fundamenta) softverskog testiranja sa naprednom obukom na jednom od najvažnijih procesa u softverskom testiranju a to je izrada kompleksnih dizajn kalendara za testiranje uz detaljnu analizu tehničke dokumentacije kojom su problemi opisani, uz integraciju problematike kroz baze podataka i unix/linux-a i njihovu primjenu u softverskom testiranju.
Plan kursa u sebi sjedinjava implementaciju statičkog i dinamičkog testiranja i pojašnjava ulogu, primjenu i funkcionalnost samog testiranja unutar kompleksnog životnog ciklusa razvoja softvera.
Kurs se zasniva na mnogo praktičnog rada kroz koji ćemo se dotaći takođe i teorijskih aspekata i vidjeti kako se oni implementiraju u praksi.
Plan i program je sveobuhvatan i zahtijeva punu prisutnost kandidata, samostalan rad i dosta vježbi kako bi se sa uspjehom priveo kraju. Kandidati će biti izloženi vremenskom pritisku kako bi se što više simulirale realne biznis situacije i biće konstantno evaluirani i ocjenjivani jer će nakon svakog modula biti rađene provjere znanja sa bodovanjem.
Nakon završene obuke, polaznici će moći računati na dolje navedena znanja i vještine:
- Komunikacione vještine
- Analitički i logički način razmišljanja
- Vještinu tehničkog upravljanja QA projektima
- Sposobnost praćenja QA procedura
- Međuljudske vještine
- Upravljanje vremenom i određivanje prioriteta
- Out of box thinking
- Prilagođavanje novonastalim promjenama
- Priprema i izrada kompleksnih softverskih QA dizajn kalendara na MNE i ENG jeziku
- Razumijevanje alata za testiranje
- Agilne radne metodologije
- Vještine QA izvještavanja
- Unix/Linux u testiranju
- SQL u testiranju
Koliko je kod nas razvijeno ovo zanimanje i da li postoji formalno obrazovanje za njega?
Kada uporedimo vremenski okvir od zadnjih 10-ak godina do danas, mogu reći da ovo zanimanje ide uzlaznom putanjom sa sve većom potrebom kompanija za ovim profilom. Dijelom je ovo rezultat odličnog poslovanja naših IT kompanija koje vrše usluge ino kompanijama a koje ipak zahtijevaju da se softverski proizvodi testiraju sa što većom preciznošću.
Dijelom je takođe razlog što sve više imamo pojavu povećanog prisustva ino IT kompanija na našim prostorima koje otvaraju predstavništva i takve kompanije već imaju oformljena QA odjeljenja te shodno tome samim prisustvom na našim prostorima počinju otvarati pozicije za QA profile.
Na žalost, nisam detektovao i mislim da nemamo formalno obrazovanje za ovaj profil ali lično mislim da inženjer za softversko testiranje zaslužuje svoje mjesto i formalno obrazovanje na svim tehničkim fakultetima koji u sebi imaju izučavanje programerskih vještina ili vezanim IT ustanovama. Takođe sam i mišljenja da bismo trebali raditi na licenciranju ovakvog profila inženjera.
Da li domaće kompanije prepoznaju značaj testiranja softvera i kako vidite budućnost ove profesije kod nas?
Domaće kompanije svakako da prepoznaju značaj softverskog testiranja jer su se do sada zasigurno sretale sa činjenicama da softverski proizvodi mogu biti lošijeg kvaliteta od onoga očekivanog što će vrlo vjerovatno biti povezano sa gubitkom povjeranja klijenata. Kako bi minimizirali rizik ove vrste, kompanije su prepoznale sam značaj pravilnog i sveobuhvatnog testiranja u cilju povećanja preciznosti sistema kao i tačnosti svih opisanih i dogovorenih funkcionalnosti. Međutim, mislim da dinamika ulaganja i transformacije kojom kompanije pristupaju ovoj problematici mogu i moraju ići mnogo brže.
Neophodno je da kompanije iskreno vjeruju u benefite testiranja i da ulažu i planiraju shodno tome na dalji vremenski period jer to je jedini put koji garantuje dobre rezultate. Budućnost ove profesije na našim prostorima ima ogroman potencijal i svakim danom polako koračamo naprijed.
Da li je za profesiju manuelnog QA testera neophodno poznavanje nekog programskog jezika, UX/UI dizajna ili neke druge IT vještine?
Velika prednost ove profesije jeste što omogućava kandidatima bez prethodnog znanja i iskustva da zakoračaju u svijet testiranja. Svakako, bilo kakvo dodatno iskustvo, bilo u domenu znanja programskih jezika ili drugih IT vještina je dodatna vrijednost koju kandidat sa sobom nosi i to već znači da se kandidat već donekle sreo sa testiranjem, upoznao, iako možda nije toga ni svjestan bio. Stoga ova profesija ostaje otvorena širokom spektru kandidata što je zaista ogromna prednost u odnosu na druge domene IT-a.
Kojem profilu osoba biste preporučili ovaj kurs?
Prije svega psihološki profil kandidata je jako bitan i krucijalan. Osoba mora biti psihološki mnogo stabilna, jaka i spremna za naporan rad i konstantno sticanje novih znanja i vještina koje u jedinici vremena nekada mogu biti dosta učestale i u vremenskom domenu dosta dugotrajne.
Brzina učenja i obrada informacija je takođe od veoma važnog značaja posebno u domenu kompleksnih projekata kada su vremenski okviri usko definisani i moraju se ispoštovati.
Želja za usavršavanjem igra veliku ulogu jer tjera osobu da konstantno ide naprijed.
Detaljisti i perfekcionisti su mnogo poželjne osobe za ovo usmjerenje. Veoma je bitno da osoba posjeduje dobre meke vještine.
Koja su to znanja, osobine i vještine koje krase dobrog softver testera?
Kako sam i prije naveo, tester mora biti jedna kompaktna ličnost posjedujući:
- Dobre analitičke sposobnosti
- Biti strogo ali strogo pažljiv na detaljima
- Samokritičnost
- Visoku psihološku stabilnost
- Pronicljivost u smislu osjećanja stabilnosti sistema
- Tehničku pripremljenost za izradu kompleksnih test kalendara – test dizajna
- Poznavanje alata za testiranje
- Poznavanje procedura za testiranje – koje zavise takođe od kompanije do kompanije
- Poznavanje statičke detaljne analize tehničke dokumentacije
- Poznavanje baza podataka, operativnih sistema, front-end, back-end procesa
Da li QA tester testira softver iz ugla krajnjeg korisnika i na koji način prijavljuje greške na koje nailazi?
Naravno, QA tester mora testirati softver iz ugla krajnjeg korisnika jer uvijek moramo imati na umu da će softverski proizvod koristiti neko drugi. Često se napravi previd od strane programera i testera zanemarujući kranjeg korisnika, kako u pogledu razvoja softvera tako i u pogledu testiranja.
Moramo imati na umu sve one moguće kombinacije koje bi krajnji korisnik mogao da primijeni i da budemo inteligentni i to percipiramo, otkrijemo i testiramo prije krajnjeg korisnika. Postoji mnogo načina prijave grešaka. U velikoj većini slučajeva se one prijavljuju korišćenjem alata za testiranje koji su usaglašeni unutar kompanije ili pak između kompanije naručioca i kompanije koja radi izradu softverskog rješenja.
Veliki je broj takvih alata za prijavljivanje grešaka (QC, Jira, Mantis itd.) i tu osoba ne može ovladati svim alatima niti se treba previše preokupirati jer se relativno vrlo lako prisvajaju znanja ovih alata. U velikoj većini slučajeva, kompanija diktira odabir takvih alata u zavisnosti od budžeta, potreba i drugih uslova. Takođe, česta je pojava prijave grešaka putem kompleksnih tabelarnih excel prikaza.
Koliko je bitno da u fazi ugovaranja posla kompanija naručilac jasno navede željene funkcionalnosti softvera i pruži što više informacija u okviru tehničke dokumentacije, a da zatim se to na pravi način to iskomunicira softver testeru?
Na tome i počiva testiranje u suštini. Moramo jasno staviti do znanja značaj takve dokumentacije koja je esencijalna za sve. Takva dokumentacija prije svega nastaje na osnovu dugotrajnih i iscrpnih sastanaka između dvije strane na kojima se vrši definisanje svih biznis zahtjeva, modula, pretpostavki sistema, funkcionalnosti i detaljnih rješenja koja su opisana sa ogromnom preciznošću. Na tim dokumentima počivaju i ugovori između dvije strane takođe.
Na osnovu njih programeri znaju šta razvijaju a testeri znaju šta i kako će da testiraju. Shodno tim dokumentima QA odjeljenje pravi prije svega kompleksne dizajne – test kalendare koji će kasnije biti pretočeni u kreiranje testnih slučajeva, scenarija, sa definisanim koracima za testiranje koji će drugi testeri izvršavati i ukoliko budu detektovani problemi onda će se ti isti problemi provjeravati unutar tehničke dokumentacije kako bi se utvrdila validnost problema.
Treba napomenuti da postoji dosta slučajeva kada otkriveni problem od strane testera uzrokuje dodatne debate između dvije strane koji na kraju otkrije takozvani “design-gap” unutar tehničke dokumentacije, ili ti, propust na inicijalnim sesijama kada su dogovarane funkcionalnosti što uzrokuju onda unapređivanje iste dokumentacije, dodatni razvoj i dodatno testiranje.
Na osnovu svega gore rečenoga, izrada tehničke dokumentacije u kojoj su jasno navede željene funkcionalnosti softvera je od ključne i kritične važnosti uvijek.
Možete li nam opisati kako izgleda jedan klasični radni dan softver testera i sa kim on sve sarađuje u okviru kompanije i eventualno izvan nje?
Obično dan softver testera počine jutarnjim sastankom sa drugim članovima tima gdje su po potrebi prisutni i članovi menadžmenta. Tu se diskutuje trenutna situacija projekta, razmatraju izvještaji poslati prethodnoga dana, određuju dnevni prioriteti kao i dijele informacije o kritičnim problemima koji moraju biti riješeni ukoliko blokiraju napredak testiranja. Takvih sastanaka može biti 2-3 u toku dana i na njemu su prisutni takozvani “focal-point”-i odnosno lideri svih aplikacija/oblasti koji odgovaraju za svoje domene i svoje timove.
Nakon dobijanja uputa, softver tester kreće izvršavati testiranja, prijavljuje greške prateći striktno dogovorenu metodologiju i procese koje je firma usvojila.
Tokom svog rada softver tester sarađuje sa svim programerima iz svih oblasti jer je on ključna figura gdje se slivaju sve funkcionalnosti na krajnje ispitivanje/testiranje. Softver tester takođe na dnevnoj bazi održava svoja okruženja za testiranje u zdravoj formi kako bi sva testiranja mogla biti nesmetano obavljena.
Takođe, softver tester često usko sarađuje sa klijentom, u cilju prikupljanja informacija o značaju za samo izvršenje testiranja, bilo radi diskusije o koracima za testiranje, ili radi međusobnog razumijevanja prijavljenih problema.
Ukoliko je softver tester ujedno i rukovodilac/menadžer odjeljenja onda on ima i dodatna zaduženja u smislu praćenja progresa testiranja, dnevnog izvještavanja menadžmentu, praćenja internog progresa svojih zaposlenih u cilju njihovog profesionalnog razvoja, izrade QA dokumentacije, plana a testiranje, rasporeda resursa, QA budžeta, kao i druga vezana zaduženja.
Da li je software tester proporcionalno plaćen u odnosu na žrtvu i težinu posla koji obavlja, u poređenju sa developerima i dizajnerima?
Pitanje je vrlo diskutabilnog karaktera. Zavisi od dosta faktora kao i same kompanije u kojoj osoba počinje svoj profesionalni angažman.
Nekada je zasigurno tester bio slabije plaćen u odnosu na programera. Kako se zadnjih godina sve više i više stavlja akcenat na podizanju kvaliteta softverskih rješenje te uloge testera u cijelom procesu to smo svjedoci da je broj radnih mjesta u svijetu naglo porastao vezano za profil softverskog testera.
Kako tester nosi veliku odgovornost za sertifikaciju softverskih rješenja, nalaženju grešaka, prevenciji itd to i njegova vrijednost raste u cjelokupnoj hijerarhiji te danas imamo zaista pojavu da plate specijalista za testiranje mogu biti veće nego plate programera. Naravno, ovo zavisi od kompanije do kompanije, vrijednosti softverskih rješenja i diskreciono je pravo svake kompanije da sama uredi plate svojih zaposlenih. Shodno tome, na ovu temu se ne mogu dati precizni odgovori.
Dijapazon plata može varirati i zavisi od mnoštva faktora. Vi, kao budući testeri, možete raditi na ovome polju vrlo aktivno i uspješno, konstantno se usavršavajući kroz razne programe, kurseve, i time dokazati poslodavcu da vaše znanje i vještine vrijede više.
Ličnog sam mišljenja, da danas u svijetu, dobar softver tester jeste izuzetno dobro plaćen.
Kolika je realna potreba za testerima u Cortex firmama?
Realna potreba je nešto što je činjenica. Trebamo razumjeti da gdje god se razvijaju softverski proizvodi mora postajati potreba za profesionalnim testiranjem istog. Ne smije se primijeniti pristup da programer može zamijeniti testera kako bi troškovi ljudskih resursa bili smanjeni jer zasigurno rezultati neće biti isti – sa kvalitetom sofvera nema igre i nikada ali nikada se ne smije ići na kompenzaciju nasuprot lošijeg kvaliteta softvera.
Svaka naša IT kompanija, po meni, bi trebala imati barem po jednog profesionalnog testera softvera a po mogućnosti i više jer softversko testiranje ima mnogo domena i postoje razna usmjerenja na koje se tester/i može/mogu specijalizovati (funkcionalno testiranje, testiranje performansi sistema, penetraciono testiranje itd) i kompanija koja posjeduje ove profile profesionalnih testera zasigurno ima zagarantovan kvalitet softverskih rješenja.
Realna potreba je nešto što je činjenica. Trebamo razumjeti da gdje god se razvijaju softverski proizvodi mora postajati potreba za profesionalnim testiranjem istog. Ne smije se primijeniti pristup da programer može zamijeniti testera kako bi troškovi ljudskih resursa bili smanjeni jer zasigurno rezultati neće biti isti – sa kvalitetom sofvera nema igre i nikada ali nikada se ne smije ići na kompenzaciju nasuprot lošijeg kvaliteta softvera.
Svaka naša IT kompanija, po meni, bi trebala imati barem po jednog profesionalnog testera softvera a po mogućnosti i više jer softversko testiranje ima mnogo domena i postoje razna usmjerenja na koje se tester/i može/mogu specijalizovati (funkcionalno testiranje, testiranje performansi sistema, penetraciono testiranje itd) i kompanija koja posjeduje ove profile profesionalnih testera zasigurno ima zagarantovan kvalitet softverskih rješenja.
Da li možete dati određene savjete i preporuke budućim polaznicima kursa?
Savjet i preporuka zasigurno bi bila da budući polaznici kursa shvate plan i program kursa što je ozbiljnije moguće. Biće potrebno dosta rada da bi se znanje usvojilo i kasnije unaprijedilo i jednostavno polaznici neće moći uspješno savladati obuku samo pukim prisustvom nastavi već će morati uložiti dosta dodatnog samostalnog napora koji uz striktne rokove će donijeti dodatnu težinu. Svakako, u tome je i poenta obuke. Oni polaznici koji uspješno završe ovu 9-mjesečnu fundamentalnu obuku zasigurno će moći samostalno obavljati zadatke testera softvera. Poslije toga njihov put ostaje široko otvoren a mogućnosti će samo vremenom rasti.
Koje su to možda greške koje ste Vi pravili na početku i tokom karijere, a koje biste sada mogli kao pouke prenijeti budućim testerima softvera?
Moram reći, odlično pitanje i shodno tome nesebično ću ih podijeliti:
- Nemojte razmišljati u pravcu da ste upili svo znanje, to je odmah alarm, jer kad počnete da razumijevate sistemske funkcionalnosti tek onda shvatite koliko je sistem veliki i tek onda shvatite koliko ne znate u suštini.
- Iskoritite starije kolege koje više od vas znaju da upijete njihovo znanje što je brže moguće – oni su ga godinama sticali, vi imate mogućnost da to kroz njih odradite brže.
- Uvijek, ali uvijek zapisujte stvari i detalje u rukovnike ili druge kompjuterske alate – pamtite samo značajne stvari, oslobodite um od stvari koje mogu biti zapisane.
- Usavršavajte se blagovremeno dodatnim kursevima.
- Nikad ali nikad nemojte da zavidite drugom na uspjehu.
- Trudite se da se oslobodite uzora, brže ćete. napredovati.
- Poštujte tuđi teški rad – pomognite kolegama i pomoć će vam biti uzvraćena.ž
- Nikad nemojte previše da se dokazujete jer će poslodavac podizati kriterijum zbog vas dovodeći druge u opasnost – budite blago ispred drugih ali ne toliko da je svakodnevno razlika ogromna između vas i njih.
- Uspjeh dolazi sa žrtvom – ne dozvolite da vaše zdravlje ili porodica pati zbog uspjeha.
- Čuvajte svoje zdravlje, jer kad bude narušeno zbog posla, sve gubi smisao.
- Svakodnevno izdvojite vremena za vas i provedite ga u treningu, rano izjutra, po mogućnosti.