21-40 Flashcards

1
Q

Objasnite postupak ručnog testiranja programske podrške uključujući ciljeve i vrste
testiranja.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Objasnite i skicirajte postupak automatiziranog/automatskog testiranja programske
podrške.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Objasnite postupak istraživačkog testiranja programske podrške.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Objasnite postupak regresijskog testiranja programske podrške.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Objasnite black box, white box i gray box metode testiranja programske podrške, te ih
međusobno usporedite.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Objasnite što je funkcionalno testiranje programske podrške, te navedite glavne
oblike funkcionalnog testiranja.

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Objasnite što je i navedite obilježja testiranje cjelina/jedinica koda (unit testing).

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Objasnite što je, navedite obilježja i način provedbe integracijskog testiranja
programske podrške (integration testing).

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
Objasnite što je, navedite obilježja i način provedbe testiranja programske podrške na
razini sustava (system testing).
A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Usporedite integracijsko testiranje i testiranje sustava.

A
Integracijsko testiranje – testira neke procese koji se odvijaju od početka do kraja
Testiranje sustava (System testing) – testiranje kompletnog sustava sa svim 
integriranim komponentama.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Objasnite što je, navedite obilježja i način provedbe regresijskog testiranja
programske podrške (regression testing).

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Objasnite što je, navedite obilježja i način provedbe testiranja prihvaćanja
programske podrške (acceptance testing).

A

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).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Objasnite što je nefunkcionalno testiranje programske podrške, te navedite glavne
oblike nefunkcionalnog testiranja.

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Objasnite što je, navedite obilježja i oblike provedbe testiranja performansi
programske podrške (performance testing).

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Ukratko objasnite što je propusnost, a što devijacija kod testiranja performansi.

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Objasnite što je, navedite obilježja i oblike provedbe testiranja upotrebljivosti
programske podrške (usability testing).

A

Testiranje upotrebljivosti je black-box tehnika za utvrđivanje pogrešaka i unapređenje
programa promatranjem korisnika kroz njegovu upotrebu i ono što izvodi.

Upotrebljivost se
ogleda u učinkovitosti korištenja, mogućnosti učenja i pamćenja korištenja, te
pogreškama/sigurnosti i zadovoljstvu.

Ovdje je bitno da krajnji korisnik bude zadovoljan korisničkim sučeljem nasuprot testu
upotrebljivosti.

Korisničko sučelje bi moralo odgovarati bojom, rasporedom, veličinom i
brojnim drugim sličnim zahtjevima.

Obično se provodi na početku ili na kraju projekta, no preporuča se provođenje na početku
radi smanjenja mogućih troškova.

17
Q

Objasnite što je, navedite obilježja i oblike provedbe testiranja sigurnosti programske
podrške (security testing).

A

Testiranje sigurnosti predstavlja testiranje povjerljivosti, cjelovitosti, autentifikacije,
raspoloživosti, autoriziranja, neodricanja, sigurnosti od poznatih i nepoznatih izvora,
sigurnosti podataka koji se koriste, zadovoljavanje sigurnosnih pravila, provjera ulaza, SQL
insertion napada, injektiranja nedostataka, upravljanje sesijama, skriptni napadi,
prepunjavanje spremnika, …

18
Q
Objasnite što je, navedite obilježja i prednosti razvoja programske podrške
pokretanog testiranjem (test-driven development).
A
  • predstavlja razvoj programa koji se oslanja na ponavljanje vrlo kratkog razvojnog ciklusa
  • uključuje pisanje testnih slučajeva usporedno s pisanjem koda, što poboljšava razvoj
  • to je kombinirani proces detaljnog dizajna i razvoja, vođen nizom testova
  • počinje s projektiranjem i razvojem testova za svaku malu funkcionalnost aplikacije
  • omogućuje izbjegavanje pisanja dupliciranog koda, te ispravljanje koda pomoću testova,
    prije samog nastavka razvoja

Prednosti:
- rana obavijest o pogrešci, bolji dizajn, čišći kod
- manji i razumljiviji kod
- rezultira bržim kodom s manje pogrešaka koje se mogu ažurirati uz minimalne rizike
- dobar za timski rad - u nedostatku bilo kojeg člana tima, drugi članovi tima lako mogu
preuzeti i raditi na programskom kodu
- dobar za razvojne programere - iako programeri moraju trošiti više vremena za pisanje
testnih slučajeva, potrebno je mnogo manje vremena za ispravljanje pogrešaka i razvoj novih
značajki
- postiže se pokrivenost koda do vrijednosti od 100%, jer je svaka linija koda testirana

19
Q

Objasnite korake i faze ciklusa razvoja programske podrške pokretanog testiranjem.

A

Ciklus razvoja pogonjenog testiranjem:

Crvena faza – U crvenoj fazi se pišu testni slučajevi za postupke koji će biti provedeni
testiranjem, te se donose odluke kako će se programski kod koristiti i to na temelju trenutnih,
a ne budućih potreba .

Zelena faza – Zelena faza je najjednostavnija faza u kojoj se piše samo programski kod.
Zadatak je napisati jednostavno rješenje koje provodi testni slučaj, dovoljno da prođe crveni
test. Dozvoljeno je kršiti najbolje primjere iz prakse i čak kopirati kod - refaktorizacijska
faza.

Faza refaktoriranja – U ovoj fazi dolazi do promjene koda, kako bi svi testovi došli u
zelenu fazu, no obvezno je ukloniti duplicirani kod. U crvenoj fazi prikazuju se vještine
korisnika, dok se u ovoj fazi pokazuju vještine programera.

20
Q

Objasnite razliku između statičkog i dinamičkog testiranja programske podrške, te
navedite najčešće oblike navedenih načina testiranja.

A

Statičko testiranje (za vrijeme prevođenja) :

  • Statička analiza
  • Pregled
  • Neformalni prolazak kroz kod
  • Formalna inspekcija koda

Dinamičko testiranje (za vrijeme pokretanja)

  • Black-box testing
  • White-box testing