Skip to content

6. Ispitivanje programskog rješenja

Eugen Kozomara edited this page Jan 24, 2025 · 10 revisions

Ispitivanje komponenti

Test 01: Dohvaćanje osnovnih informacija o korisniku putem ID-a

Funkcionalnost koju testiramo:

Metoda getKorisnikBasicInfo(Long id) iz razreda KorisnikController, koja vraća osnovne informacije o korisniku na temelju njegovog ID-a.

Ispitni slučaj 1: Uspješno dohvaćanje korisnika

  • Ulazni podaci:

    • ID korisnika: 1
    • Pretpostavka: Korisnik s ID-em 1 postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite je li baza podataka ispravno postavljena s korisnikom koji ima ID 1.
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici/1.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      {
        "id": 1,
        "lozinka": "hashed_password",
        "username": "testuser",
        "role": 1,
        "godine": 25,
        "spol": "M"
      }
    • Prolaz ispitivanja

Ispitni slučaj 2: Korisnik ne postoji

  • Ulazni podaci:

    • ID korisnika: 999
    • Pretpostavka: Korisnik s ID-em 999 ne postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da korisnik s ID-em 999 nije prisutan u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici/999.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 404 Not Found
    • Tijelo odgovora: Prazno.
    • Prolaz ispitivanja

Ispitni slučaj 3: Neispravan ID korisnika

  • Ulazni podaci:

    • ID korisnika: -5
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju.
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici/-5.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 400 Bad Request (ovisno o implementaciji provjere ID-a u kontroleru ili servisu).
    • Tijelo odgovora: Poruka o pogrešci (ako postoji).
    • Prolaz ispitivanja

Sažetak:

  • Testirane su različite situacije za metodu getKorisnikBasicInfo(Long id).
  • Pokriveni su redovni slučaj, rubni uvjet (nepostojeći ID), i neispravan ulazni podatak (negativan ID).

Test 02: Brisanje korisnika putem ID-a

Funkcionalnost koju testiramo:

Metoda deleteKorisnik(Long id) iz razreda KorisnikController, koja briše korisnika na temelju njegovog ID-a.

Ispitni slučaj 1: Uspješno brisanje korisnika

  • Ulazni podaci:

    • ID korisnika: 2
    • Pretpostavka: Korisnik s ID-em 2 postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite je li baza podataka ispravno postavljena s korisnikom koji ima ID 2.
    2. Pošaljite DELETE zahtjev na endpoint: DELETE /korisnici/2.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 204 No Content
    • Tijelo odgovora: Prazno.
    • Prolaz ispitivanja

Ispitni slučaj 2: Korisnik ne postoji

  • Ulazni podaci:

    • ID korisnika: 100
    • Pretpostavka: Korisnik s ID-em 100 ne postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da korisnik s ID-em 100 nije prisutan u bazi podataka.
    2. Pošaljite DELETE zahtjev na endpoint: DELETE /korisnici/100.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 404 Not Found
    • Tijelo odgovora: Poruka o pogrešci (ako postoji).
    • Prolaz ispitivanja

Ispitni slučaj 3: Neispravan ID korisnika

  • Ulazni podaci:

    • ID korisnika: -10
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju.
    2. Pošaljite DELETE zahtjev na endpoint: DELETE /korisnici/-10.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 400 Bad Request (ovisno o implementaciji provjere ID-a u kontroleru ili servisu).
    • Tijelo odgovora: Poruka o pogrešci (ako postoji).
    • Prolaz ispitivanja

Sažetak:

  • Testirane su različite situacije za metodu deleteKorisnik(Long id).
  • Pokriveni su redovni slučaj, rubni uvjet (nepostojeći ID), i neispravan ulazni podatak (negativan ID).

Test 03: Vraćanje svih korisnika

Funkcionalnost koju testiramo:

Metoda vratiSveKorisnike() iz razreda KorisnikController, koja vraća popis svih korisnika iz baze podataka.

Ispitni slučaj 1: Uspješan zahtjev za svim korisnicima

  • Ulazni podaci:

    • Nema dodatnih ulaznih podataka, jer metoda vraća sve korisnike.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite je li baza podataka ispravno postavljena s nekoliko korisnika (npr. korisnik s ID-em 1, 2, 3 itd.).
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      [
        {
          "id": 1,
          "ime": "Marko",
          "prezime": "Horvat",
          "email": "marko@email.com",
          "rola": "ROLE_STUDENT"
        },
        {
          "id": 2,
          "ime": "Ivana",
          "prezime": "Ivić",
          "email": "ivana@email.com",
          "rola": "ROLE_ADMIN"
        },
        {
          "id": 3,
          "ime": "Petar",
          "prezime": "Perić",
          "email": "petar@email.com",
          "rola": "ROLE_DJELATNIK"
        }
      ]
    • Provjerite da su svi korisnici ispravno prikazani.
    • Prolaz ispitivanja

Ispitni slučaj 2: Nema korisnika u bazi podataka

  • Ulazni podaci:

    • Pretpostavka: Baza podataka je prazna (nema korisnika).
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da nema korisnika u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      []
    • Prolaz ispitivanja

Ispitni slučaj 3: Neovlašten pristup (korisnik bez administrativnih prava)

  • Ulazni podaci:

    • Pretpostavka: Korisnik koji šalje zahtjev nije administrator.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da korisnik koji šalje zahtjev nije administrator.
    2. Pošaljite GET zahtjev na endpoint: GET /korisnici.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 403 Forbidden
    • Tijelo odgovora: Prazno ili poruka o nedostatku ovlasti.
    • Prolaz ispitivanja

Ispitni slučaj 4: Nevalidan endpoint

  • Ulazni podaci:

    • Pretpostavka: Endpoint nije ispravno postavljen ili je netočan.
  • Postupak provođenja ispitivanja:

    1. Pošaljite GET zahtjev na netočan endpoint, npr. GET /korisnici/all.
    2. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 404 Not Found
    • Tijelo odgovora:
      "Endpoint nije pronađen."
    • Prolaz ispitivanja

Sažetak:

  • Testirali smo metodu vratiSveKorisnike() za različite scenarije, uključujući uspješan zahtjev, praznu bazu podataka, neovlašteni pristup i nevalidan endpoint.
  • Testiranje obuhvaća normalne funkcionalnosti i rubne uvjete. """

Test 04: Dohvaćanje svih menzi

Funkcionalnost koju testiramo:

Metoda listMenzas() iz razreda MenzaController, koja vraća sve menze iz baze podataka.

Ispitni slučaj 1: Uspješno dohvaćanje menzi

  • Ulazni podaci:

    • Nema ulaznih podataka jer metoda vraća sve menze.
    • Pretpostavka: Baza podataka sadrži menze.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da baza podataka sadrži menze.
    2. Pošaljite GET zahtjev na endpoint: GET /menza.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      [
        {
          "id": 1,
          "imeMenze": "Menza 1",
          "lokacija": "Zagreb",
          "radnaVremena": [...],
          "jelovnik": [...]
        },
        {
          "id": 2,
          "imeMenze": "Menza 2",
          "lokacija": "Split",
          "radnaVremena": [...],
          "jelovnik": [...]
        }
      ]
    • Prolaz ispitivanja

Ispitni slučaj 2: Nema menzi u bazi

  • Ulazni podaci:

    • Nema menzi u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da baza podataka ne sadrži menze.
    2. Pošaljite GET zahtjev na endpoint: GET /menza.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora: Prazna lista [].
    • Prolaz ispitivanja

Test 05: Dohvaćanje podataka o menzi prema ID-u

Funkcionalnost koju testiramo:

Metoda getMenzaData(Long id) iz razreda MenzaController, koja vraća podatke o menzi na temelju ID-a.

Ispitni slučaj 1: Uspješno dohvaćanje menze

  • Ulazni podaci:

    • ID menze: 1
    • Pretpostavka: Menza s ID-em 1 postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da menza s ID-em 1 postoji u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/1.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      {
        "id": 1,
        "imeMenze": "Menza 1",
        "lokacija": "Zagreb",
        "radnaVremena": [...],
        "jelovnik": [...]
      }
    • Prolaz ispitivanja

Ispitni slučaj 2: Menza ne postoji

  • Ulazni podaci:

    • ID menze: 999
    • Pretpostavka: Menza s ID-em 999 ne postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da menza s ID-em 999 ne postoji u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/999.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 404 Not Found
    • Tijelo odgovora: Prazno.
    • Prolaz ispitivanja

Ispitni slučaj 3: Neispravan ID menze

  • Ulazni podaci:

    • ID menze: -5
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/-5.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 400 Bad Request
    • Tijelo odgovora: Poruka o pogrešci (ako postoji).
    • Prolaz ispitivanja

Sažetak:

  • Testirane su različite situacije za metode listMenzas() i getMenzaData(Long id).
  • Pokriveni su redovni slučaj, rubni uvjet (nepostojeći ID), i neispravan ulazni podatak (negativan ID).

Test 06: Dohvaćanje jelovnika za određenu menzu

Funkcionalnost koju testiramo:

Metoda getJelovnik(Long id) iz razreda MenzaController, koja vraća jelovnik određene menze na temelju njenog ID-a.

Ispitni slučaj 1: Uspješno dohvaćanje jelovnika

  • Ulazni podaci:

    • ID menze: 1
    • Pretpostavka: Menza s ID-em 1 postoji u bazi podataka i ima definirani jelovnik.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite je li menza s ID-em 1 prisutna u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/1/jelovnik.
    3. Provjerite HTTP status odgovora i sadržaj tijela odgovora.
  • Dobiveni rezultati:

    • HTTP status: 200 OK
    • Tijelo odgovora:
      [
        {
          "naziv": "Juha",
          "opis": "Krem juha od bundeve",
          "cijena": 15.50
        },
        {
          "naziv": "Pečena piletina",
          "opis": "Pečena piletina s prilogom",
          "cijena": 25.00
        }
      ]
    • Prolaz ispitivanja

Ispitni slučaj 2: Menza ne postoji

  • Ulazni podaci:

    • ID menze: 999
    • Pretpostavka: Menza s ID-em 999 ne postoji u bazi podataka.
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju i provjerite da menza s ID-em 999 nije prisutna u bazi podataka.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/999/jelovnik.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 404 Not Found
    • Tijelo odgovora: Prazno.
    • Prolaz ispitivanja

Ispitni slučaj 3: Neispravan ID menze

  • Ulazni podaci:

    • ID menze: -5
  • Postupak provođenja ispitivanja:

    1. Pokrenite aplikaciju.
    2. Pošaljite GET zahtjev na endpoint: GET /menza/-5/jelovnik.
    3. Provjerite HTTP status odgovora i tijelo odgovora.
  • Dobiveni rezultati:

    • HTTP status: 400 Bad Request (ovisno o implementaciji provjere ID-a u kontroleru ili servisu).
    • Tijelo odgovora: Poruka o pogrešci (ako postoji).
    • Prolaz ispitivanja

Sažetak:

  • Testirana je funkcionalnost dohvaćanja jelovnika za određenu menzu.
  • Pokriveni su redovni slučaj (postojeća menza s jelovnikom), rubni uvjet (nepostojeća menza), i neispravan ulazni podatak (negativan ID menze). """

**Ispitivanje sustava **

Test 07: LoginTest

Funkcionalnost koja se testira: Prijava korisnika putem e-maila i lozinke.

Ispitni slučaj:

  • Ulazni podaci:
  1. Email: a7031186@gmail.com
  2. Password: password123

Očekivani rezultati:

Korisnik je uspješno prijavljen i preusmjeren na početnu stranicu (/menze).

Postupak provođenja ispitivanja:

  1. Otvorena stranica za prijavu (http://localhost:5173/login/student).
  2. Kliknut gumb za prijavu.
  3. Uneseni podaci u polja za email i lozinku.
  4. Autentifikacija
  5. Provjereno je li URL nakon prijave "/menze" i prikazuje li se početna stranica (home page).
  • Dobiveni rezultati: Korisnik je uspješno prijavljen. PROLAZ login slika

  • Izvorni kod: LoginTest

Test 08: DeleteUser

Funkcionalnost koja se testira: Brisanje korisnika.

Ispitni slučaj:

  • Ulazni podaci:
  1. Email korisnika kojeg želimo izbrisati: user10@gmail.com

Očekivani rezultati:

Odabrani korisnik je blokiran.

Postupak provođenja ispitivanja:

  1. Otvorena stranica za prijavu (http://localhost:5173/login/student).
  2. Prijaviti se na račun sa administratorskim ovlastima.
  3. Administrator odabire opciju za upravljanje korisnicima.
  4. Pronaći u listi korisnika račun koji želimo izbrisati.
  5. Administrator odabire korisnika i opciju "Delete User".
  • Dobiveni rezultati: Korisnik je uspješno blokiran. PROLAZ brisanjeUsera brisanjeUseraIntelijj

  • Izvorni kod: DeleteUserTest

Test 09: ChangeRole

Funkcionalnost koja se testira: Mogućnost administratora da mijenja role korisnika.

Ispitni slučaj:

  • Ulazni podaci:
  1. Email korisnika čiju rolu treba promijeniti: user2@gmail.com
  2. Nova uloga (role) korisnika: Admin

Očekivani rezultati:

Administrator uspješno mijenja ulogu (role) korisnika na "Admin".

Postupak provođenja ispitivanja:

  1. Otvorena stranica za prijavu (http://localhost:5173/login/student).
  2. Prijaviti se na račun sa administratorskim ovlastima.
  3. Administrator odabire opciju za upravljanje korisnicima.
  4. Pronaći u listi korisnika račun kojem želimo promijeniti ovlasti.
  5. Administrator odabire korisnika i mijenja njegovu ulogu (role) u ovom slučaju iz "Student" u "Admin".

Test 10: BlockUser

Funkcionalnost koja se testira: funkcionalnost administratora da blokira određene korisnike.

Ispitni slučaj:

  • Ulazni podaci:
  1. Email korisnika kojeg želimo blokirati: user10@gmail.com

Očekivani rezultati:

Odabrani korisnik je blokiran.

Postupak provođenja ispitivanja:

  1. Otvorena stranica za prijavu (http://localhost:5173/login/student).
  2. Prijaviti se na račun sa administratorskim ovlastima.
  3. Administrator odabire opciju za upravljanje korisnicima.
  4. Pronaći u listi korisnika račun koji želimo blokirati.
  5. Administrator odabire korisnika i opciju "Block User".
  • Dobiveni rezultati: Korisnik je uspješno blokiran. PROLAZ

blokiranjeKorisnika blokiranjeKorisnika2

Clone this wiki locally