Danas postoji mnogo vrsta i načina testiranja novih funkcionalnosti ERP-a, a odluka o načinu i vrsti koja će se koristiti na projektu zavisi od raznih faktora kao što su metodologija rada, rok isporuke, budžet, raspoloživi ljudski resursi, itd. U nastavku ćemo pokušati približiti neke vrste testiranja softvera.

Testiranje se najčešće smatra nekim sporednim i manje važnim procesom prilikom razvoja novog ili nadogradnje postojećeg ERP. Ukoliko je ERP mali, pokriva mali broj područja unutar organizacije, ima mali broj korisnika ili ima neku sporednu ulogu prilikom obavljanja posla testiranje možda i nije najvažnija stvar. U takvim slučajevima greške ne utiču na poslovanje, moguće ih je primjetiti i otkolniti i tijekom korištenja, te neće značajnije utjecati na poslovanje.

Međutim, ovakva situacija je danas iznimno rijetka uzimajući u obzir kako se u današnje vrijeme skoro svaki posao obavlja korištenjem odgovarajućeg softvera koji kao takav ima izravan utjecaj na poslovni uspjeh.

Dakle, odgovoran pristup testiranju vodi kvalitetnijem procesu testiranja, a to izravno osigurava kvalitetu isporučenog softvera, što na kraju rezultira zadovoljnim klijentima i uspješnijem poslovanju (kako klijenata, tako i onog tko je softver izradio i/ili isporučio).

Testiranje softvera se najčešće dijeli na funkcionalno i nefunkcionalno testiranje, u zavisnosti od toga kontroliraju li se samo krajnje funkcionalnosti ERP ili se testira samo programerski kod.

Vrste testiranja

Black box (funkcionalno testiranje) – na osnovu predefiniranih koraka sistem se “hrani” podacima i promatra se jesu li se njegove izlazne vrijednosti slažu sa očekivanim. Naziva se još i Black Box jer se sistem promatra kao zatvorena kutija, odnosno ne prilazi se kodu, već samo funkcionalnostima same aplikacije.

White box (nefunkcionalno testiranje) – obzirom kako se provjerava programerski kod, sistem se promatra kao otvorena kutija i odatle naziv White Box.

Unit test  za svaku atomsku jedinicu koda, što u zavisnosti od programske paradigme koja se koristi za implementaciju softvera može biti funkcija, procedura, metoda i sl. se pravi test koji testira tu istu jedinicu. Unit testiranjem prolazi se svaki i najmanji dio sistema, pa upravo zbog toga ima važnu ulogu prilikom osiguravanja kvaliteta razvijenog softvera.

Smoke test – predstavlja početni proces testiranja aplikacije gdje se provjeravaju spremnost i stabilnost softvera za dalje testiranje. Kod ovih testova provjeravaju se postojanje svih očekivanih funkcionalnosti koje su definirane klijentskim zahtjevom, kao i smislenosti istih. Ovo znači da se provjerava postojanje svakog polja na ekranu, da li se dobije očekivano ponašanje sistema kada se u njih unesu validni podaci, kao i šta se dešava kada se u njih unesu neodgovarajući podaci.

Integration test – s obzirom na porast agilnih metodologija razvoja, većina softverskih sistema se implementira u fazama gdje je izlaz iz svake faze inkrement. Inkrementi su međusobno povezani, tako da se mora provjeriti da li se svaki od njih slaže sa već gotovim sistemom u koji se integriraju. Za razliku od unit testova, gdje se sistem “razbija” na osnovne jedinice prilikom testiranja, inkrementi se određuju na osnovu činilaca i faktora koji su vezani za samu metodologiju razvoja softvera, pa su dijelovi sistema koji se testiraju veći nego kod unit testova.

Interface & Usability test – predstavljaju testiranje upotrebljivosti softvera iz perspektive krajnjeg korisnika. Ovi testovi se zasnivaju na 4 principa:

  • efikasnost (vrijeme potrebno da korisnik kompletno izvrši jedan zadatak), 
  • točnost (koliko grešaka korisnik napravi prilikom izvršavanja zadatka i da li su te greške fatalne), 
  • sjećanje (koliko se korisnik sjeća procesa korištenja aplikacije pri dužem odsustvu korištenja iste) i
  • emocionalna reakcija (da li izvršavanje zadatka uzrokuje stres ili sigurnost kod korisnika prilikom korištenja, kao i činjenicu da li bi korisnik preporučio proizvod svom prijatelju).

System test – je testiranje kompletnog sistema (hardver, softver) u cilju provjere slaganja sa korisničkim zahtjevima kao i funkcionalnih i nefunkcionalnih zahtjeva. Prilikom ovih testova provjerava se da li sistem funkcionira onako kako je klijent zahtjevao, tj. da li postoje sve tražene funkcionalnosti, kao i da li se slaže sa hardverskim zahtjevima klijenta (rad na zahtjevnom OS, performansama računara, serverom, itd.)

Load & Performance test – testira se ponašanje softvera pod određenim opterećenjem (količina podataka, broj istovremenih korisnika, itd.) Ukoliko je planiran veliki broj budućih korisnika, bitno je da brzina učitavanja i same performanse sistema budu na “visini zadatka”.

Stress & Volume test– testira se trenutak pucanja sistema koji se namjerno izaziva velikim opterećenjem softvera. Ovim putem utvrđuje se maksimum rada sistema i postavljaju se ograničenja kako ne bi dolazilo do prebacivanja ovih vrjednoti tokom korištenja aplikacije.

Compatibility test – testira se ponašanje softvera na određenom računarskom sistemu (OS, baza podataka, browser). Ovi testovi su bitni ukoliko IT sustav nije homogen, pa je bitno da sistem nema smetnje pri radu na različitim okruženjima.

Data conversion test – testira se valjanost podataka nakon konverzije istih na novi sistem. Ovi testovi su najčešći prilikom migracije podataka na novi sistem.

Penetration test – simuliranjem hakerskih napada provjerava se da li postoje određene rupe u sistemu podložne nepoželjnim upadima trećih lica. Danas se izuzetno mnogo ulaže u ove testove kako bi se osigurao sistem od vanjskih upada. Svi znamo koliko je visokotehnološki kriminal u porastu i bitno je što bolje osigurati sistem od neželjenih proboja.

Security test – ovom vrstom testiranja utvrđuju se ranjivosti sistema, ali za razliku od penetration testa, provjerava se zaštićenost resursa i podataka od eventualnih uljeza, kao i da li su funkcije dostupne samo onim korisnicima kojima su i namijene (odnosno da li korisnik sa dodijeljenom određenom ulogom u sistemu ima pristup samo onim podacima kojima je pristup planiran dodjelom te uloge).

Operational readiness test – ovaj tip testiranja se obavlja tokom Go Live faze projekta i treba da pokaže da li je aplikacija dobro konfigurirana i da li se ponaša u skladu sa funkcionalnim i nefunkcionalnim zahtjevima.

Instalation test – provjerava se postoje li problemi prilikom instaliranja aplikacije.

Reggresion test – je vrsta testiranja koja nastoji da otkrije nove softverske greške u postojećim funkcionalnim i nefunkcionalnim dijelovima sistema nakon promjena kao što su npr. migracija na novu platformu, poboljšanje sistema ili promjena konfiguracije. Namjera je da se osigura da promjene nisu uvele nove greške. Provjerava se jesu li izmjene u samom kodu uvele nove greške ili disfunkcionalnosti.

Korisničko testiranje

User Acceptance Test (UAT) ili korisničko testiranje – predstavlja posljednju fazu u procesu testiranja softvera. Tokom ovog testiranja stvarni korisnici testiraju softver kako bi bili sigurni da može da izdrži zadatke zadate u realnim scenarijima i u skladu sa specifikacijama.

Korisničko testiranje trebalo bi izvršiti tijekom razvoja svakog projekta, odnosno proizvoda. Razlog tome je što čak ni najbolji dizajneri ne mogu pretpostaviti svaku radnju koju će korisnik izvršiti, dizajneri imaju ideje koje se temelje na najboljoj praksi te iskustvu, a proces testiranja omogućuje potvrdu tih ideja. Korisničko testiranje je izrazito bitno, a glavni razlog je smanjenje rizika gdje u skoro svakom pogledu poboljšava proces razvoja.