Testiranje koda - SirCrayzyJelly/AI_Tutor GitHub Wiki

Testiranje Chat API-ja

Testiranje koda služi za provjeru ispravnosti, stabilnosti i očekivanog ponašanja aplikacije. Omogućuje brzu detekciju grešaka, osigurava da nove promjene ne naruše postojeće funkcionalnosti i olakšava održavanje koda. U ovom projektu testiranjem provjeravamo ispravnost API odgovora, jezične upute i validaciju ulaza.


Pytest

pytest je popularan framework za testiranje u Pythonu koji omogućuje jednostavno pisanje, organiziranje i pokretanje testova. Podržava asinkrone testove, bogat skup dodataka i automatsku detekciju testnih funkcija. Idealno je rješenje za testiranje kako malih skripti, tako i složenih aplikacija.


Implementirani testovi

1. Hrvatski jezik

Naziv testa: test_chat_adds_croatian_prompt

Provjerava dodaje li se automatski hrvatska jezična uputa ako nije eksplicitno navedena.

  • Ulaz: "Hello"
  • Očekivani izlaz: odgovor koji uključuje fraze poput bok, zdravo, kako si
assert any(word in text for word in ["bok", "zdravo", "kako", "si"])

2. Prazna poruka

Naziv testa: test_chat_empty_messages_returns_400

Opis: Provjerava ponašanje API-ja kada messages polje sadrži praznu listu.

  • Ulaz: {"messages": []}

  • Očekivano: HTTP status kod 400 i poruka o grešci

assert response.status_code == 400
assert "message list cannot be empty" in response.json()["detail"].lower()

3. Neispravan format poruke

Naziv testa: test_chat_handles_invalid_format Opis: Testira ponašanje kada poruka ne sadrži obavezno polje "content".

Ulaz: {"messages": [{"role": "user"}]}

Očekivano: validacijska greška – status 400 ili 422

assert response.status_code in [400, 422]

Screenshot_1

Zaključak

Testovi pokrivaju osnovne i kritične funkcionalnosti API-ja vezane uz razumijevanje jezika, obradu grešaka i validaciju podataka. Sustav uspješno prepoznaje kada treba prebaciti odgovor na hrvatski jezik i ponaša se očekivano u slučaju praznog unosa ili neispravne strukture poruke.

Daljnji razvoj trebao bi uključivati dodatne testove za skalabilnost, sigurnost i jezičnu fleksibilnost.