21-40 Flashcards
Objasnite postupak ručnog testiranja programske podrške uključujući ciljeve i vrste
testiranja.
Testiranje se vrši bez upotrebe testnih alata i skripti
Tester preuzima ulogu krajnjeg korisnika i testira program s ciljem identificiranja
neočekivanog ponašanja ili pogrešaka
Većinom u ručno testiranje spada unit testing (testiranje jedinica koda), integracijsko
testiranje, testiranje sustava, user acceptance testing ali i istraživačko testiranje
testeri koriste planove, slučajeve, scenarije..
većinom se rješavaju problemi no ovakvo testiranje iziskuje velike količine napora
za ručno testiranje potrebno je:
○ razumjeti zahtjeve s ciljem definiranja testova i prepoznavanja grešaka
○ pisati testne slučajeve s ciljem provjere brzog testa funkcionalnosti i dobre
pokrivenosti
○ izvoditi testove i prepoznati podatke iz izvješća rezultata testiranja
Objasnite i skicirajte postupak automatiziranog/automatskog testiranja programske
podrške.
Prilikom automatskog testiranja, tester piše skripte i koristi druge programe za
automatizirano testiranje programskog proizvoda, pa testovi moraju biti detaljno
opisani testnim slučajevima i procedurama.
Koristi se ponovno pokretanje testnih scenarija koji se izvode ručno, ali brzo i
ponavljajuće.
Za razliku od regresijskog testiranja, automatsko testiranje koristi se za testiranje
aplikacije s gledišta opterećenja, performansi i preopterećenja. Takvo testiranje
povećava točnost, te štedi vrijeme i novac.
Alati za automatizirano testiranje mogu:
○ sami generirati skripte (prolazi se kroz scenarije testa, alat snima izvršene
akcije, a od svih snimljenih akcija generira skriptu)
○ pomagati u pisanju skripti (samostalno se pišu skripte za testiranje koje su
kopija koraka test procedura
Objasnite postupak istraživačkog testiranja programske podrške.
Kod istraživačkog testiranja testne procedure se ne prate striktno, a tijekom testiranja
otkrivaju se alternativni tokovi upotrebe sustava i odmah se provjeravaju.
Istraživačko testiranje objedinjuje identifikaciju, dizajn i izvršavanje testova.
Prednosti istraživačkog testiranja: otkriva mnoge probleme i scenarije koji
unaprijed ne mogu biti planirani, a manje se vremena troši na pripremu.
Nedostatak istraživačkog testiranja: ne vodi se evidencija testiranja, pa uvijek ima
funkcionalnosti koje nisu testirane.
Objasnite postupak regresijskog testiranja programske podrške.
Regresijsko testiranje je metoda testiranja koja se upotrebljava u iterativnim
metodama razvoja programske podrške.
Ovdje je rizik što neke funkcionalnosti koje su ranije testirane mogu prestati s radom
iz razloga što se tijekom trenutne iteracije mijenja određeni dio koji utječe na ranije
implementiranu funkcionalnost.
dva su načina izvođenja regresijskog testiranja:
○ potpuno – gdje se u svakoj iteraciji testiraju sve funkcionalnosti
implementirane u prethodnim iteracijama
○ testiranje zavisnih funkcionalnosti – gdje se u svakoj iteraciji testiraju samo
funkcionalnosti izvedene u prethodnim iteracijama koje imaju dodirnih točaka
s funkcionalnošću u trenutnoj iteraciji
Objasnite black box, white box i gray box metode testiranja programske podrške, te ih
međusobno usporedite.
Prilikom black-box metode testiranja se vrši unutarnje istraživanje logike i strukture
koda, bez da smo prethodno upoznati s točnim funkcionalnim specifikacijama, te se
pronalazi dio koda koji ne radi.
Kod white-box testiranja se podrazumijeva istraživanje unutranje logike i strukture
koda (glass testing, open-box testing), odnosno saznanja o unutranjem načinu rada
koda, pri čemu treba pronaći koji dio/unit/komad koda ne radi. Možda
najjednostavnije rečeno white box testiranje se bavi provjerom koda, grananja, uvjeta,
putanja.
Gray-box tehnika testiranja testira aplikacije s ograničenim saznanjima o unutarnjem
načina rada aplikacije. Osim korisničkog sučelja, tester ima pristup dokumentima i
bazi podataka, pa može pripremiti bolje testne podatke, scenarije i plan testiranja
Objasnite što je funkcionalno testiranje programske podrške, te navedite glavne
oblike funkcionalnog testiranja.
- black-box testiranje zasnovano na specifikacijama programa koje se i
testiraju. Za dane ulaze, aplikacija mora dati izlaze koji zadovoljavaju
funkcionalnosti - provjerava jesu li funkcionalnosti predviđene korisničkim zahtjevima ispravno
implementirane u sustav, pri čemu se vrši pregled zahtjeva i prolazi kroz
različite scenarije korištenja sustava, te utvrđuje ima li propusta - cilj je provjeriti izvršava li sustav sve što je potrebno i da ne izvršava nešto što
ne bi trebao, a to je teže za utvrditi testnim
slučajevima
Glavni oblici funkcionalnog testiranja su:
unit, sistemsko, integracijsko, regresijsko i testiranje prihvaćanja.
Objasnite što je i navedite obilježja testiranje cjelina/jedinica koda (unit testing).
Unit testing je vrsta testiranja koja se provodi od strane programera, prije
prosljeđivanja testnom timu koji će formalno pokretati testne slučajeve. Takvo
testiranje se provodi na pojedinačnim cjelinama ili dijelovima izvornog koda (klasa,
podsustava).
Glavni cilj ovog testiranja je izdvojiti svaki dio programa i pokazati da je svaki od
njih ispravan s gledišta zahtjeva i funkcionalnosti.
Glavni nedostaci su ti da se ne može uhvatiti sve pogreške u programu, te je
nemoguće vrednovati svaki scenarij/putanju izvođenja. Isto tako je ograničen broj
scenarija i testnih podataka koji se mogu koristiti.
Objasnite što je, navedite obilježja i način provedbe integracijskog testiranja
programske podrške (integration testing).
Integracijsko testiranje predstavlja testiranje kombiniranih dijelova aplikacije, zbirki
podsustava ili eventualno cijelog sustava s ciljem utvrđivanja radi li sve ispravno kao jedna
cjelina.
Integracijsko testiranje provode programeri s ciljem testiranja sučelja među podsustavima te
se može provoditi kao:
1) Bottom-up integracija gdje testiranje počinje s unit testingom nakon kojega slijedi
testiranje kombinacija više razine koje nazivamo modulima (builds)
2) Top-down integracija koja dolazi iza bottom-up integracije, gdje se moduli više
razine testiraju prvi, te poslije njih moduli nižih razina
Objasnite što je, navedite obilježja i način provedbe testiranja programske podrške na razini sustava (system testing).
Testiranje sustava na razini programske podrške je testiranje kompletnog sustava sa
svim integriranim komponentama. Uglavnom se vrši od strane posebnog tima ili
pojedinačnih programera.
Važnost testiranja sustava:
- prvo testiranje cjeline u ciklusu razvoja
- verificira zadovoljava li aplikacija funkcijske i tehničke zahtjeve
- testiranje se provodi u okolini sličnoj produkcijskoj okolini u koju će se
aplikacija pustiti u rad
Usporedite integracijsko testiranje i testiranje sustava.
Integracijsko testiranje – testira neke procese koji se odvijaju od početka do kraja Testiranje sustava (System testing) – testiranje kompletnog sustava sa svim integriranim komponentama.
Objasnite što je, navedite obilježja i način provedbe regresijskog testiranja
programske podrške (regression testing).
Regresijsko testiranje je testiranje koje služi verificiranju da stalne pogreške nisu rezultirale
poremećajima funkcionalnosti ili pravila poslovanja, a namjena mu je da promjene kao što su
ispravljanje nekih pogrešaka ne rezultiraju drugim pogreškama aplikacije.
Regresijsko testiranje:
• smanjuje propuste u testiranju kod testiranja aplikacije s izmjenama
• testira nove izmjene da bi se verificiralo da izmjene ne remete druge dijelove
aplikacije
• omogućava pokrivenost testiranja bez produljenja vremena
• povećava brzinu isporuke
Objasnite što je, navedite obilježja i način provedbe testiranja prihvaćanja
programske podrške (acceptance testing).
Acceptacne testing ili testiranje prihvaćanja programske podrške utvrđuje koliko
aplikacija ispunjava zahtijevane specifikacije i koliko zadovoljava zahtjeve klijenata.
Ovakvim testiranjem se potvrđuje je li sustav spreman za isporuku, te se utvrđuje ima
li pogrešaka koje mogu dovesti do ispada sustava ili velikih pogrešaka u aplikaciji.
Ovo testiranje se provodi kao:
1) Alfa testiranje
- to je prva faza testiranja i izvodi se između timova. Obično predstavlja unit,
integracijsko i sistemsko testiranje, te služi za otkrivanje pogrešaka u pisanju,
neispravnih poveznica, nejasnih smjernica, ponašanja na sustavu najnižih
dopuštenih performansi (kod igara dok je igra u alfa verziji)
2) Beta testiranje
- vrsta testiranja prije izdavanja aplikacije. Ovdje šira skupina testira
instaliranje, pokretanje i korištenja, te šalje povratne informacije o
pogreškama u pisanju, neispravnosti u slijedu izvođenja, ispadima. Isto tako
se ispituje rad na stvarnim problemima korisnika što poboljšava korisničko
iskustvo. (kod igara ovo predstavlja beta verziji).
Objasnite što je nefunkcionalno testiranje programske podrške, te navedite glavne
oblike nefunkcionalnog testiranja.
Nefunkcionalno testiranje je testiranje koje se upotrebljava za provjeru
nefunkcionalnih gledišta (performansi, upotrebljivosti, pouzdanosti, sigurnosti,
izdržljivosti, dostupnosti, skalabilnosti, fleksibilnosti, itd.).
Ono je namijenjeno testiranju spremnosti sustava prema nefunkcionalnim
parametrima koji se ne ispituju funkcionalnim testiranjem.
Ciljevi nefunkcionalnog testiranja su:
- povećanje upotrebljivosti, učinkovitosti, održivosti i prenosivosti proizvoda
- smanjenje rizika proizvodnje i troškova povezanih s nefunkcionalnim
aspektima proizvodnje
- optimizirati način instaliranja, postavljanja, izvršavanja, upravljanja i
nadzora proizvoda
Glavni oblici nefunkcionalnog testiranja su:
- Testiranje performansi
- Testiranje upotrebljivosti
- Testiranje sigurnosti
- Testiranje prenosivosti
- Testiranje mogućnosti održavanja
Objasnite što je, navedite obilježja i oblike provedbe testiranja performansi
programske podrške (performance testing).
Testiranje performansi je pronalaženje uskih grla sustava kao što su kašnjenje mreže,
obrada na strani klijenta, transakcije s bazom podataka, uravnoteženje opterećenja
poslužitelja, ispis na zaslonu i mnogi drugi.
Parametri koji se koriste su brzina, kapacitet, stabilnost, skalabilnost.
Testiranje opterećenja - prosječno i vršno opterećenje podacima - potpomognuto
alatima za automatsko testiranje, virtualnim korisnicima i skriptama.
Stres testiranje - testiranje ponašanja programa u neuobičajenim uvjetima (bez
određenih resursa ili iznad opterećenja) kao što je ponovno pokretanje, isključivanje
baze podataka, pokretanje zahtjevnih procesa.
Ukratko objasnite što je propusnost, a što devijacija kod testiranja performansi.
S propusnosti se zapravo testira kašnjenje mreže, obrada na strani klijenta, transakcije s
bazom podataka, uravnoteženje opterećenja poslužitelja, ispis na zaslonu i slično, dok se s
devijacijom mjeri odstupanje od očekivanog rezultata.