Bild Blog

in Web, mobile & software | 16.05.2017.

Tajne testiranja softvera

Jedan, dva, tri... test, test, testiiiiiiiiranje može da počne

Testiranje, kao jedna od najznačajnijih faza u procesu razvoja softvera, zahtijeva posebnu pažnju, koncentraciju i vrijeme. S druge strane (računara :)), softver tester mora posjedovati niz profesionalnih i karakternih osobina, kako bi sa uspjehom obavljao svoj posao.

This article is also available in English.

by: Jovana Đurović
Software tester

A kakav je to posao?

Najprostije rečeno, testiranje kao proces, za cilj ima pronalaženje i uočavanje svih, pa i najsitnijih, grešaka koje se mogu pojaviti prije i u toku korišćenja određenog softvera, a samim tim i pronalaženje određenih aspekata i dijelova softvera koje je moguće poboljšati, a sve to u korist boljih rezultata rada softvera.

Da stvar ne bi bila tako jednostavna, postoje razni tipovi grešaka koji se mogu pojaviti, te samim tim imamo i različite vrste testiranja. Takođe, za svaki tip testiranja postoji niz alata, skripti i “trikova” koje koristimo za otkrivanje istih. Prije nego vas detaljnije uputim u vrste i načina testiranja potrebno je da shvatite zašto je softversko testiranje važno i neizbježno prilikom rada u IT-u.

Odgovor leži u samoj suštini kreiranja i korišćenja softvera. Zašto ih ljudi koriste? Da bi im olakšali, skratili, automatizovali, ubrzali i unaprijedili određeni posao ili radnju. Ukoliko softver ne ispunjava korisničke zahtijeve i potrebe, ne olakšava svakodnevni rad, onda cilj izrade softvera nije ispunjen i on se ne može koristiti na pravi način.

Koje benefite ima klijent od softverskog testiranja?  

Ljudi često misle da proces testiranja softvera uopšte ne doprinosi smanjenju troškova, jer kako može nešto što se dodatno plaća da smanjuje troškove ?!

Prvo, testiranje softvera vam štedi novac na duže staze zato što osigurava da koristite i prodajete softver koji je pouzdan, softver kome ne trebaju konstantne prepravke i izmjene. Glavna prednost testiranja softvera je što omogućava da uklonite greške i probleme, prije nego što se proizvod nađe na tržištu (bez obzira da li se koristi za interne potrebe ili se prodaje klijentima). Ovo može da vas poštedi velikih glavobolja kasnije, kada nezadovoljni korisnici dolaze da kucaju na vrata. Ukoliko softver ne ispunjava očekivanja i želje korisnika, korisnik može tražiti refundaciju novca, a za naknadne ispravke softvera moraćete da izdvojite puno resursa (ljudi, novac, vrijeme).

I najvažnija stvar: Kvalitetnije testiranje znači kvalitetniji softver! Kada prodajete softver visokog kvaliteta, vi dobijate ugled i imidž, koji su od neprocjenjive vrijednosti za rast bilo kojeg biznisa na duže staze.

A šta može da se desi ako softver nije detaljno i kvalitetno testiran? 

Osim toga što ćete: izgubiti povjerenje klijenta, utrošiti dodatne napore i ljudske resurse za korigovanje grešaka, dati prednost konkurenciji i “izgubiti živce”, kasno uočene greške najviše će pogoditi vaš budžet.

Evo par primjera gdje su kompanije izgubile milione, “samo” zato što nisu testirali sve aspekte svog softvera:

  • 2007. Blokiranje aerodroma u Los Anđelesu. Usljed greške u softveru, pogrešne informacije su bile poslate u mrežu carine Sjedinjenih Američkih Država, što je uslovilo da 17.000 aviona bude osam sati zarobljeno na aerodromu;
  • 2010. Usljed greške u softveru kojim su se unosile informacije o doniranim organima, pogrešni organi odstranjeni su iz 25 donatora u Velikoj Britaniji. Softver za prikupljanje podataka se koristio od 1999. godine i pronađeno je još 400.000 grešaka;
  • 2016. Američki proizvođač automobila Ford,  objavio je da povlači sa tržišta 42,300 automobila Figo i Figo Aspire u Indiji zbog softverske greške koja može prouzrokovati neotvaranje vazdušnih jastuka prilikom sudara. Ford je imao softverskih problema i 2015. godine kada je povučeno 16,444 vozila sa indijskog tržišta, kao i u septembru 2013. kada je povučeno 166,021 vozila zbog softverske greške.

Sada možemo da počnemo sa testiranjem, jeste li spremni?

Vrste i načini testiranja

Testiranje softvera se najčešće dijeli na funkcionalno i nefunkcionalno testiranje, u zavisnosti od toga da li se kontrolišu samo krajnje funkcionalnosti aplikacije ili sam programerski kod.

  • Nefunkcionalno testiranje

Suština nefunkcionalnog testiranja je provjera programskog koda. Obzirom na to da se sistem posmatra kao otvorena kutija ovo testiranje nosi naziv White Box.

  • Funkcionalno testiranje 

Koliko puta vam se desilo da otvorite praznu stranicu (eng. broken link), da ispunite formu pogrešnim podacima, a da niste dobili upozorenje o tome, da  kontakt forma ne radi i slično…

Ova vrsta testiranja podrazumjeva provjeravanje  da li sve funkcioniše kako je planirano. Potrebno je provjeriti da li se sve izlazne vrijednosti slažu sa očekivanim vrijdnostima. Naziva se još i Black Box, jer se sistem posmatra kao zatvorena kutija, odnosno ne prilazi se kodu, već samo funkcionalnostima same aplikacije.

  • Testiranje kompatibilnosti

S obzirom na veliki broj različitih uređaja, rezolucija ekrana, operativnih sistema, pretraživača, čest je slučaj da npr. ono što dobro funkcioniše i pravilno izgleda u Google Chrome-u, zapravo uopšte nije vidljivo u Internet Explorer-u pretraživaču i slično.

Alati: Browserstack, CrossBrowserTesting, GhostLab, Google Mobile Friendly, W3C MobileOK Checker.

  • Testiranje upotrebljivosti

Koliko ste puta instalirali neku aplikaciju ili posjetili neki sajt tražeći željenu informaciju, a zbog nepreglednosti i neorganizovanosti softvera pritisnuli close ili uninstall. Da vam se ne bi desilo da zbog toga gubite klijente, obavezno uradite testiranje upotrebljivosti. Ovi testovi predstavljaju testiranje softvera iz perspektive krajnjeg korisnika. Podrazumijevaju testiranje sadržaja sajta, intuitivnosti, polja za pretragu i slično. Potrebno je kreirati test slučaja tzv. test case i snimati korisnika prilikom izvršavanja testa. Primjer test case-a možete pogledati na ovom linku.

Testovi upotrebljivosti se zasnivaju na 5 komponenti kvaliteta:

  1. Lakoća učenja: Koliko lako i brzo će korisnik ispuniti zadatke koje ste mu postavili u test case-u, prilikom prvog susreta sa softverom?
  2. Efikasnost: Kada korisnik savlada dizajn, koliko vremena mu  je potrebno za izvršavanje zadataka?
  3. Memorabilnost: Koliko se korisnik sjeća procesa korišćenja aplikacije pri dužem odsustvu korišćenja iste?
  4. Greške: Koliko grešaka korisnik napravi prilikom izvršavanja zadatka, da li može lako da se vrati na ”pravi put”,  da li su te greške fatalne?
  5. Zadovoljstvo: Koliko je korisniku prijatno da koristi softver? Da li izvršavanje zadatka uzrokuje stres ili sigurnost kod korisnika, da li bi preporučio softver prijatelju?
  • Testiranje performansi 

Zavaljeni ste u fotelji, imate super brz internet i krećete u pretraživanje. Na društvenim mrežama nailazite na super zanimljivu informaciju, sa nestrpljenjem klikate na link sajta u želji da pročitate informaciju do kraja, da saznate više...ali vaše uzbuđenje se uskoro pretvara u agoniju... loading... loading... loading... loading... Odustajete i tražite informaciju na drugom mjestu!

Koristeći mnogobrojne dostupne online alate možete testirati performanse softvera (vrijeme učitavanja, veličinu stranica, učitavanje js, stres testovi...)

Alati: Inspect Element, FireBug, Nibbler, Pingdom, Google Insight, Web page test.

  • Automatsko testiranje

Da bi ubrzali vrijeme testiranja, pomoću automatskih skripti, moguće je simulirati pristup željenog broja ljudi u određenom vremenskom periodu, sa određenim kašnjenjem i pratiti ponašanje sajta pri „stresnim“ uslovima...i nakon što jednom kreirate skriptu, možete je pokrenuti kad god poželite. Automatsko testiranje zahtjeva pisanje određenog koda da bi se automatizovali koraci pri izvršavanju određenog test slučaja. Popularno se datoteke koje sadrže automatizovanu logiku nazivaju test skripte i mogu biti pisane svim danas popularnim programskim jezicima nezavisno od programske paradigme.

Alati: Jmeter, Selenium, New Relic, BlazeMeter, Test Studio.

  • Testiranje sigurnosti 

Na ovom spisku poslednja, ali svakako ne manje značajna, vrsta testiranja, je testiranje sigurnosti. Potrebno je obezbjediti softver od neželjenih upada, jer svakako ne želite da neko pristupi vašem kodu, preuzme vaše informacije ili zloupotrijebi podatke vaših korisnika. Proverava se zaštićenost resursa i podataka, kao i da li su funkcije dostupne samo onim korisnicima kojima su i namjenjene (odnosno da li korisnik sa dodeljenom određenom ulogom u sistemu ima pristup samo onim podacima kojima je pristup planiran dodjelom te uloge). Stoga potrebno je testirati login forme, onemogućiti korišćenje takozvanih sql injection-a, CAPCHA i obezbjediti SSL sertifikate.

I još jedna napomena za kraj: Prije nego što odlučite da se bavite ovim poslom imajte na umu da nećete biti najvoljenija osoba u firmi :), jer na kraju krajeva, vaš posao je da pronalazite greške u radu vaših kolega i da ih stalno podsjećate na to. zato je poželjno da radite u timu koji prepoznaje značaj i benefite softverskog testiranja.