Šta je test case i kako funkcioniše?
Test case je važan instrument u softverskom testiranju koji se koristi za proveru ispravnosti i funkcionalnosti softvera. On sadrži sve neophodne informacije za izvršavanje određenog testa, a svaki deo test case-a ima svoju svrhu u procesu verifikacije. U ovom tekstu ćemo pokušati da objasnimo sastavne delove test case-a i pokažemo kako svaki od njih pomaže testiranje softvera.
Šta je test case?
Test case je definisan skup instrukcija i kriterijuma koji služi kao putokaz za izvođenje testova na softverskim aplikacijama. On predstavlja elektronski dokument, odnosno zapis koji sadrži jasno definisane korake za testiranje, potrebne ulazne podatke, očekivane rezultate i prostor za beleženje stvarnih rezultata. Osnovni cilj je identifikovati greške i probleme pre puštanja softvera u produkciju.
Test case-ovi takođe služe kao dokumentacija procesa testiranja, što je korisno za identifikaciju problema, buduće reference i naknadne revizije softverskog kvaliteta.
Kako izgleda test case?
Odmah treba naglasiti da ne postoji univerzalan i striktno definisan način za kreiranje test case-ova. Njihov format i elementi mogu se razlikovati u zavisnosti od metodologije, aplikacije, specifičnih potreba projekta, i mnogih drugih varijabli. Dakle, test case ne mora da izgleda tačno onako kako će naš primer izgledati, ali na jednostavnim primerima, suštinska odstupanja neće biti velika.
Zato za ilustraciju i uzimamo jedan vrlo jednostavan test case, koji služi za proveru funkcionalnosti prijavljivanja na veb stranicu. On obično zahteva da korisnik unese korisničko ime i lozinku, a zatim da klikne na dugme ‘Prijavi se’ kako bi se utvrdilo da li je pristup uspešan i da li su korisnički podaci ispravno obrađeni.
Evo kako bi izgledao primer test case-a dizajniran za pomenutu situaciju:
Polje 1 – Naslov i identifikacioni broj: Svaki test case započinje sa naslovom koji opisuje šta će se testirati, i identifikacionim brojem za lako praćenje.
- Primer: Naslov: „Testiranje prijave na veb stranicu“; ID – TC-001
- Uloga: Naslov i ID pomažu u organizaciji testova i olakšavaju referenciranje i izveštavanje.
Polje 2 – Opis: Ovaj segment daje detaljan opis cilja testa, što pomaže testerima da razumeju šta tačno test treba da postigne.
- Primer: “Proveriti funkcionalnost prijave korisnika na portal XYZ koristeći validne kredencijale.”
- Uloga: Opis jasno stavlja do znanja svrhu testa, što je važno za fokusiranje testiranja na određenu funkciju.
Polje 3 – Test steps: Ovaj deo test case-a objašnjava šta tester tačno treba da uradi, korak po korak. Ovi koraci su kao uputstvo za upotrebu koje tester mora pratiti kako bi se proverilo da li sve funkcioniše kako treba, i zato je izuzetno važno da su ti koraci definisani pažljivo i precizno. Pored samih koraka koje treba izvesti, ovde su navedeni i podaci koji treba da se koriste u testu (npr. u ovom slučaju konkretno korisničko ime i lozinka), kao i rezultati koji se očekuju kao posledica izvedenih koraka.
Na primeru koji smo do sada koristili, to izgleda otprilike ovako:
- Primer: Koraci: 1. Otvori browser. 2. Unesi URL. 3. Upiši korisničko ime i lozinku. 4. Klikni na ‘Prijavi se’.
Testni podaci: Korisničko ime: „testKorisnik123“, Lozinka: „Lozinka2025“
Očekivani rezultati: Korisnik je uspešno prijavljen i preusmeren na početnu stranicu.
- Uloga: Detaljno navođenje koraka, podataka i očekivanja omogućava testerima da sistematično izvrše test i smanjuje mogućnost ljudske greške.
Polje 4 – Napomene i komentari: Ovaj deo služi za beleženje bilo kakvih dodatnih zapažanja tokom testa. Ako nešto nije funkcionisalo kako je planirano, ovde tester može opisati problem, predložiti moguće uzroke ili dati preporuku za dalju istragu.
- Primer: „Prijava uspešna, ali korisnik nije preusmeren na početnu stranicu, već ostaje na stranici za prijavu. Možda postoji problem s redirekcijom”
- Uloga: Napomene pružaju dodatni kontekst i mogu pomoći u rešavanju problema ili pri optimizaciji budućih testova.
Ponavljamo, ovo je veoma jednostavan primer, a test case-ovi nekad mogu da budu veoma kompleksni. Zamisli npr. test case koji proverava kako autonomni automobil reaguje kada na autoputu mora da prepozna razliku između privremenih radova na putu, nejasno postavljenih saobraćajnih znakova i drugih vozila koja menjaju trake, i to sve tokom noći i kiše, pri brzini od 120 km/h.
Naravno, koliko god je test case jednostavan ili kompleksan, i najmanje neslaganje sa očekivanim rezultatima može u potpunosti da obori test. Kao što se u ovom primeru vidi, očekivani rezultati prilikom prijavljivanja su da korisnik bude prijavljen ali takođe i da bude preusmeren na početnu stranicu, što je uslov koji nije ispunjen.
Dakle, funkcionalnost ne odgovara u potpunosti svojoj nameni (prijavljivanje + preusmeravanje). Pošto je dizajnirana i programirana tako da radi tačno ono što stoji u koloni “očekivani rezultati”, to prosto znači da se negde u programiranju ili implementaciji potkrala greška koju treba što pre prijaviti.
Primena u praksi: izvršavanje testova
Testiranje softvera uz pomoć test case-ova može se izvoditi manuelno ili automatski, u zavisnosti od specifičnih zahteva projekta i dostupnih resursa.
Manuelno testiranje podrazumeva direktno učešće testera koji fizički izvodi sve korake navedene u test case-u na testnom okruženju. Tester ručno unosi podatke, prati i beleži rezultate, te ručno proverava da li softver ispunjava definisane zahteve.
Ovaj proces zahteva značajno vreme i trud, ali omogućava testerima da dožive softver iz perspektive krajnjeg korisnika, što može otkriti probleme koje automatizovani testovi možda neće uočiti.
Automatsko testiranje koristi softverske alate i skripte koje automatski izvršavaju test case-ove. Jednom kada se test skripte napišu i konfigurišu, one mogu automatski izvoditi testove, unositi podatke, i beležiti rezultate bez direktnog ljudskog nadzora. Ovaj pristup je efikasan za obavljanje velikog broja testova, posebno za regresivno testiranje gde se isti testovi ponavljaju za svaku novu verziju softvera.
U ovom slučaju alat za testiranje sam izvodi testove na softveru prema unapred definisanim uputstvima. Evo kako to funkcioniše u praksi:
- Pokretanje testa: Tester ili inženjer pokreće proces testiranja pomoću specijalnog softvera.
- Izvršavanje koraka: Softver automatski vrši radnje koje bi inače tokom testiranja vršio čovek. To može uključivati popunjavanje formulara, klik na dugme za prijavu, ili navigaciju kroz menije.
- Analiza rezultata i izveštaj: Nakon izvršenja svakog koraka, tester proverava rezultate. Ako se očekivani i stvarni rezultati poklapaju, test je prošao. U obrnutom slučaju test je pao i potrebna je dalja analiza i rad na testiranoj funkcionalnosti. Na kraju, većina automatskih softvera sačinjava i kompletan izveštaj o testiranju u kome stoje opis, rezultati i status svakog testa.
Dakle, automatizacija omogućava brzo i efikasno testiranje velikog broja funkcija softvera bez potrebe za ljudskom interakcijom tokom samog procesa testiranja. To je kao da imaš robota koji za tebe obavlja testiranje po tačno određenim uputstvima.
Kako mogu da naučim još?
Softversko testiranje je vrlo široko i raznoliko polje koje otvara vrata dinamične karijere i nudi lepe mogućnosti za napredovanje. Ako želiš da gradiš karijeru u IT sektoru, a testiranje ti zvuči zanimljivo, naš QA kurs bi mogao biti pravi izbor za tebe. Prijavi se već danas preko ovog linka!

