Testiranje internetskih aplikacija – (I./II.)

Razvojem Interneta nastaje sve veći broj internetskih aplikacija. Internetske aplikacije koje nastaju predstavljaju složene poslovne procese namijenjene za svakodnevnu upotrebu. Aplikacije koje su prije bile dostupne isključivo preko platforme operacijskog sustava, danas se prenose na internetsku platformu zbog jednostavnijeg pristupa i sve većeg raspona korisnika. Povećana upotreba, složenost i broj korisnika zahtijevaju detaljnije testiranje aplikacije. Testiranje aplikacije jedna je od najznačajnijih i najvažnijih faza u procesu razvoja životnog ciklusa aplikacije koja zauzima između 40 % i 70 % ukupnog razvoja. Testiranje je metoda koja se koristi za procjenu funkcionalnosti aplikacije. Osim navedenog, testiranje je i proces kojim se vrednuje uspješnost rada aplikacije ali i količina nedostataka koju aplikacija posjeduje. Koristi se za procjenu kvalitete proizvoda i potrebno ga je odraditi u fazi razvoja. Testiranjem je potrebno dokazati:

 

  • aplikacija zadovoljava zahtjeve iz specifikacije
  • aplikaciju je moguće implementirati (pustiti u produkciju) s definiranim parametrima
  • aplikacija prati definirani poslovni proces.

 

Jednostavne internetske aplikacije, čija je svrha posluživanje informativnog sadržaja korisniku, često prolaze samo kroz osnovno funkcionalno testiranje. Navedene aplikacije podložne su raznim greškama koje korisnici uočavaju za vrijeme upotrebe. Za testiranje aplikacije potrebna je detaljna specifikacija, koja iz neobjašnjenog razloga za Internetske  aplikacije najčešće dolazi u obliku natuknica, a nerijetko nije uopće ni dostupna. Osim problema u vezi s dokumentacijom, internetske aplikacije izrađene su u nekoliko različitih programskih jezika, što dodatno utječe na složenost testiranja. Uz veću upotrebu programskih jezika potrebnih za izradu aplikacije, veća je šansa i da nastane pogreška. Zbog heterogenosti korištenih programskih jezika, ne postoji jedno univerzalno rješenje za testiranje internetskih aplikacija. Osobe koje provode testiranje moraju poznavati razne alate koji su namijenjeni za testiranje manjih dijelova sustava što dodatno utječe na složenost testiranja i vrijeme potrebno za obavljanje testova.

 

Trenutačno su popularne dinamične internetske aplikacije. U tim aplikacijama korisnici mogu dodavati, uklanjati ili mijenjati sadržaj. Sve izmjene se pohranjuju u odgovarajuću bazu podataka. Kada korisnik pristupa aplikaciji, podaci se dohvaćaju iz baze. Navedenim akcijama moguće je prouzrokovati izmjene koje će utjecati na dostupnost aplikacije. Najčešći primjer je izmjena poveznice na neku drugu stranicu. Izmjena ne mora utjecati na vizualni prikaz stranice, ali može utjecati na neispravan rezultat u trenutku korisnikove akcije. Rijetki su slučajevi kada se internetska aplikacija sastoji od samo jedne stranice. Kada korisnik pregledava stranice aplikacije na određenoj domeni, on ostavlja svoj trag. Taj trag (akcija, unos, odabir) ne mora nužno utjecati samo na tu jednu stranicu, već na sve stranice unutar domene aplikacije.

 

 

AUTOMATIZACIJA TESTIRANJA

 

Pod pojmom automatizacije podrazumijeva se korištenje posebnih alata koji kontroliraju izvođenje testova i uspoređuju stvarne ishode sa onima koji su zadani. Ručno testiranje nije uvijek jednako učinkovito za pronalaženje grešaka u programskom kodu i kao takvo posjeduje određene probleme:

 

  • Niska pouzdanost – ne postoji strogo definirano mjerilo uspješnosti provedenog testa. Svi rezultati testova oslanjaju se na mišljenje osobe koja je testove izvršila
  • Visoki rizik – testove izvode ljudi koji su podložni raznim greškama i propustima. Ljudi se umore, postanu nepažljivi, imaju i druge zadatke koje trebaju izvršiti, nedovoljno su obučeni ili nisu upoznati s poslovnim procesom aplikacije.
  • Nepotpuna pokrivenost – ljudi ne mogu pokriti količinu programskih platformi i sve moguće unose i ishode kao automatizirani test.
  • Rokovi – ograničeni resursi za testiranje koji su najčešći razlog probijanja rokova isporuke aplikacije.

 

Automatizacija osigurava znatno veću učinkovitost i jednom definirani testovi mogu se izvršavati i ponavljati nebrojeno puta. Trenutačno ne postoji jedan univerzalni alat koji može automatizirati cijeli proces testiranja. Alati za automatizaciju testiranja koji trenutno postoje baziraju se na jednoj platformi i na toj platformi nastoje pokriti što veći broj metoda testiranja. Automatizacija testiranja sučelja najčešće pokriva funkcionalno testiranje, testiranje kompatibilnosti, testiranje sučelja, testiranje upotrebljivosti i testiranje performansi. Za odabir najboljeg alata potrebno je razmotriti nekoliko značajki. Prva stvar je jednostavnost integracije, koja se mjeri u troškovima i performansama, tj. kako se alat ponaša u okruženju s mrežnim prometom. Uz navedeno, alat mora biti kompatibilan s projektom i cjelokupnom aplikacijom.

 

Postoji nekoliko pristupa automatskog testiranja:

 

  • Testiranje grafičkog sučelja podrazumijeva izvršavanje svih mogućih akcija na korisničkom sučelju upotrebom miša i/ili tipkovnice i razmatranje rezultata tih akcija, tj. provjeravanje jesu li dobiveni rezultati u skladu s očekivanim rezultatima.

Primjeri alata: testComplete, Ranorex

  • Testiranje sučelja za programiranje aplikacije podrazumijeva testiranje ulaznim podacima kako bi se provjerilo dobivaju li se zadani rezultati. Testiranje je omogućeno po zasebnim dijelovima programskog koda, klasama, modulima ili pojedinim bibliotekama.

Primjeri alata: TestNg, NUnit

  • Testiranje sučelja podrazumijeva provjeru cjelokupne aplikacije u trenutku izdavanja nove verzije, jer svaka nova verzija (nadogradnja) aplikacije može prouzročiti prestanak rada dijelova koji su prije bili funkcionalni.
    Primjeri alata: Selenium, Watir, FitNesse

 

Prednosti automatizacije testiranja:

  • potvrđivanje poznatog – potvrda o ispravnosti rada aplikacije i nakon izvršenih promjena
  • brzina – rezultate testiranja moguće je dobiti u znatno kraćem vremenskom razdoblju u usporedbi s ručnim testiranjem
  • cijena izvođenja testova – gotovo besplatno, potreban znatno manji tim ljudi
  • pouzdanost – znatno veća pouzdanost jer se uklanja opasnost od ljudske greške
  • ponovljivost – sve testove moguće je izvršiti neograničen broj puta u bilo kojem trenutku
  • kontinuirano testiranje – testove je moguće provoditi neovisno o prisustvu osoblja.

 

Nedostatci automatizacije testiranja:

  • pogrešan osjećaj kvalitete – testovi su programirani da pronađu točno određene greške, što ne znači uvijek da uključuju sve moguće ishode
  • održavanje – nadogradnja aplikacije za posljedicu ima i nadogradnju testova, tj. proširenje testnih slučajeva
  • cijena izrade testova – nekoliko puta veća od cjelokupnog ručnog testiranja
  • dodatni stručni ljudski resursi – provođenje automatizacije testiranja zahtijeva stručne ljudske resurse.

 

Iz navedenih prednosti i nedostataka možemo zaključiti kako je automatizacija procesa testiranja djelomično, a ne potpuno rješenje. Trenutačno ne postoji dovoljno pouzdan proces, kao ni alat pomoću kojeg je moguće pokriti sve slučajeve koji se mogu pojaviti. Ručno i automatsko testiranje nadopunjuju se te je najbolja praksa izvršiti obje vrste testiranja ako financije i resursi to omogućavaju.

 

 

PRIMJER TESTIRANJA

 

Prikaz metoda navedenih u drugom poglavlju bit će prikazan na jednostavnoj stranici za autentikaciju korisnika (https://stemstipendije.mzo.hr/). Korisniku se dolaskom na traženu adresu isporučuje početna stranica. Na početnoj stranici korisnik ima mogućnost pregleda javnih informacija i mogućnost odabira prikaza stranice koja sadrži unos korisničkog imena i lozinke te akciju „Prijava u sustav“. Prilikom odabira navedene akcije, upisani podaci šalju se poslužitelju i uspoređuju s postojećim podacima. Ako su podaci ispravni, korisniku je omogućen nastavak korištenja aplikacije, u suprotnom korisniku se isporučuje stranica koja sadrži informacije o greški u sustavu. Dijagram toka aplikacije prikazan je na slici 1., sekvencijalni dijagram rada aplikacije na slici 2., a naslovnica na slici 3.

 

testiranje_1.png

Slika 1. Dijagram toka jednostavne internetske aplikacije

 

 

testiranje_2.png

Slika 2. Sekvencijalni dijagram rada aplikacije

 

testiranje_3.png

Slika 3. Internetska stranica na kojoj će biti obavljeno testiranje