Middle
Czy możesz podać przykład, jak wybrałbyś przypadki testowe dla żądania PUT?
sobes.tech AI
Odpowiedź od AI
Wybrałbym przypadki testowe opierając się na następującym:
-
Udana aktualizacja:
- Aktualizacja wszystkich pól poprawnymi wartościami.
- Aktualizacja jednego lub kilku pól, pozostawiając pozostałe bez zmian.
- Aktualizacja pól wartościami granicznymi (jeśli dotyczy).
-
Nieudana aktualizacja (testy negatywne):
- Nieprawidłowe dane:
- Nieprawidłowy format danych dla pól (np. ciąg zamiast liczby).
- Wartości przekraczające maksymalną długość lub poza dozwolony zakres.
- Brak obowiązkowych pól w ciele żądania.
- Nieistniejący zasób:
- Żądanie PUT z ID, które nie istnieje w systemie.
- Konflikt danych:
- Próba zaktualizowania zasobu, który został zmieniony przez innego użytkownika (jeśli używany jest mechanizm wersjonowania lub blokad).
- Brak uprawnień:
- Próba zaktualizowania zasobu bez odpowiednich uprawnień.
- Błędy walidacji:
- Naruszenie logiki biznesowej lub ograniczeń bazy danych (np. duplikacja unikalnej wartości).
- Nieprawidłowy Content-Type:
- Wysyłanie żądania z Content-Type innym niż oczekiwany (np.
text/plainzamiastapplication/json).
- Wysyłanie żądania z Content-Type innym niż oczekiwany (np.
- Puste ciało żądania:
- Wysyłanie żądania bez ciała.
- Nieprawidłowe dane:
-
Warunki brzegowe:
- Aktualizacja zasobu z minimalnym zestawem pól (jeśli dozwolone).
- Aktualizacja zasobu z maksymalnym zestawem pól.
- Sprawdzenie zachowania przy przesyłaniu w ciele dodatkowych, nieoczekiwanych pól.
Przykład struktury przypadków testowych:
| Przypadek | Opis | Oczekiwany wynik |
|---|---|---|
| Udana aktualizacja | Aktualizacja wszystkich pól poprawnymi wartościami. | 200 OK / 204 No Content (zależy od API) |
| Nieistniejące ID | Próba zaktualizowania zasobu z ID, które nie istnieje. | 404 Not Found |
| Nieprawidłowy format danych | Próba zaktualizowania pola numerycznego ciągiem znaków. | 400 Bad Request |
| Brak obowiązkowego pola | Brak w ciele żądania pola oznaczonego jako obowiązkowe. | 400 Bad Request |
| Brak uprawnień | Próba zaktualizowania zasobu przez użytkownika bez odpowiednich uprawnień. | 403 Forbidden |
Do automatyzacji używałbym frameworków takich jak RestAssured (Java), Requests (Python) lub Supertest (Node.js) oraz narzędzi do generowania danych testowych.