Dizajn testova je proces definisanja načina na koji ćemo sa što manje koraka otkrili što više grešaka. Testiranje ada nije nagađanje, već strukturiran i merljiv proces.

1. Podela na klase ekvivalentnosti (Equivalence Partitioning)
Tehnika “crne kutije” (black-box) koja deli domen ulaznih podataka u grupe ili klase. Osnovna pretpostavka je da će sistem na svaku vrednost unutar jedne klase reagovati na potpuno isti način. Testiranjem samo jedne vrednosti iz svake klase, pokrivamo ceo opseg podataka.
Dramatično smanjuje broj testova bez gubitka kvaliteta pokrivenosti.
Primer (Sistem za ocenjivanje):
Zamislite aplikaciju koja na osnovu broja poena (0 do 100) dodeljuje ocenu:
- Klasa 1 (Nedozvoljeno): Brojevi manji od 0 (npr. -5). Sistem treba da prijavi grešku.
- Klasa 2 (Nedovoljan): Brojevi od 0 do 50. Ishod je pad na ispitu.
- Klasa 3 (Dovoljan): Brojevi od 51 do 100. Ishod je prolaz na ispitu.
- Klasa 4 (Nedozvoljeno): Brojevi veći od 100 (npr. 150). Sistem treba da prijavi grešku.
Dakle umesto sto testova za sto ocena imamo samo četiri testa.
2. Analiza graničnih vrednosti (Boundary Value Analysis – BVA)
Tehnika koja se fokusira na ispitivanje ponašanja softvera na granicama dozvoljenih i nedozvoljenih opsega. Praksa je pokazala da se najveći broj programerskih propusta dešava upravo kod uslova “manje ili jednako” umesto “manje”, zbog čega su ove tačke kritične.
Primer (Minimalni iznos za transfer):
Elektronsko bankarstvo dozvoljava prenos sredstava od 100 do 1.000.000 dinara.
| Tačka testiranja | Vrednost | Očekivani rezultat |
|---|---|---|
| Ispod minimuma | 99.99 | Odbijena transakcija |
| Tačan minimum | 100.00 | Uspešna transakcija |
| Tačan maksimum | 1.000.000.00 | Uspešna transakcija |
| Iznad maksimuma | 1.000.000.01 | Odbijena transakcija |
3. Tabela odlučivanja (Decision Table)
Metoda koja modelira složenu poslovnu logiku zasnovanu na kombinaciji različitih faktora. Tabela se sastoji od uslova (ulaza) i akcija (izlaza). Svaka kolona predstavlja jedno pravilo koje se mora testirati.
Sprečava previde u situacijama gde postoji mnogo međuzavisnih pravila koja je teško pratiti samo tekstualnim opisom.
Primer (Prijava na sistem):
Logika za pristup nalogu koji može biti zaključan nakon tri neuspešna pokušaja.
- Uslov A: Korisničko ime je ispravno.
- Uslov B: Lozinka je ispravna.
- Ishodi: Pristup dozvoljen, Poruka o grešci, Zaključavanje naloga.
4. Testiranje prelaza stanja (State Transition Testing)
Tehnika koja analizira ponašanje sistema u zavisnosti od stanja u kojem se on trenutno nalazi. Sistem prelazi iz jednog stanja u drugo pod uticajem određenih događaja. Testovi se fokusiraju na to da li su dozvoljeni prelazi uspešni, a nedozvoljeni blokirani.
Savršeno za sisteme sa jasno definisanim procesima ili životnim ciklusom objekta.
Primer (Rad bankomata):
1. Stanje: Mirovanje (Korisnik ubacuje karticu) -> 2. Stanje: Čekanje PIN koda (Korisnik unosi ispravan kod) -> 3. Stanje: Izbor usluge (Korisnik bira isplatu) -> 4. Stanje: Brojanje novca.
Kritična provera: Da li korisnik može izabrati uslugu (Stanje 3) pre nego što unese ispravan PIN kod (Stanje 2)?
5. Testiranje parova (Pairwise Testing)
Kombinatorna tehnika testiranja koja se bazira na matematičkom dokazu da većinu kvarova uzrokuje interakcija najviše dva parametra. Umesto testiranja svih mogućih kombinacija (što je često fizički nemoguće), testiraju se svi parovi vrednosti.
Drastično optimizuje broj testova u sistemima sa mnogo konfiguracija.
Primer (Instalacija softvera):
Ako imamo 3 operativna sistema, 3 pregledača i 2 tipa internet veze, ukupno je 18 kombinacija. Testiranje parova bi ovo svelo na svega 6 do 9 testova koji matematički garantuju da je svaki pregledač bar jednom proveren na svakom operativnom sistemu.
6. Testiranje korisničkih scenarija (Use Case Testing)
Tehnika koja se bazira na opisima interakcije između korisnika (aktera) i sistema kako bi se ostvario specifičan cilj. Fokus je na realnom toku događaja, uključujući i “glavni put” (idealni scenario) i “alternativne puteve” (rukovanje greškama).
Obezbeđuje da softver ispunjava potrebe krajnjeg korisnika i da su svi poslovni procesi logički povezani.
Primer (Online kupovina):
Scenario počinje pretragom proizvoda, a završava se dobijanjem broja za praćenje pošiljke. Test pokriva ceo proces, a ne samo ispravnost dugmeta “Kupi”.
7. Predviđanje grešaka (Error Guessing)
Neformalna tehnika u kojoj osoba koja testira kreira listu potencijalnih ranjivih tačaka softvera na osnovu prethodnog znanja o sličnim aplikacijama ili specifičnim tehnologijama. Ovo nije nasumično kliktanje, već ciljano traženje slabosti.
Primeri za proveru:
- Unos praznog prostora (space) umesto imena.
- Učitavanje datoteke koja je prevelika ili pogrešnog formata.
- Brzo i uzastopno kliktanje na dugme za slanje podataka kako bi se izazvalo duplo slanje.
- Isključivanje interneta u momentu dok sistem čuva podatke.
Kombinovanjem ovih tehnika postižemo visok nivo pouzdanosti softvera. Dok klase ekvivalentnosti i granične vrednosti proveravaju polja za unos, tabele odlučivanja i dijagrami stanja osiguravaju da je poslovna logika bez greške.