Middle
Podaj przykład, jak wybrałbyś przypadki testowe dla żądania PUT.
sobes.tech AI
Odpowiedź od AI
Dla wyboru przypadków testowych dla żądania PUT zastosowałbym następujące podejścia, koncentrując się na różnych aspektach:
-
Dane poprawne:
- Tworzenie / modyfikacja rekordu z poprawnymi, pełnymi danymi.
- Modyfikacja tylko niektórych pól, pozostałe pozostają bez zmian.
- Modyfikacja wszystkich pól na nowe, poprawne wartości.
- Użycie wartości granicznych dla pól numerycznych (minimalne, maksymalne).
- Użycie różnych formatów danych dozwolonych przez specyfikację (np. data, czas).
-
Dane niepoprawne:
- Przesłanie danych z niepoprawnym typem pola (np. ciąg znaków zamiast liczby).
- Przesłanie danych naruszających ograniczenia długości ciągu lub zakresu liczby.
- Przesłanie danych naruszających unikalność pola (jeśli dotyczy).
- Przesłanie danych w niepoprawnym formacie (np. nieprawidłowa data, email).
- Brak obowiązkowych pól.
- Przesłanie pustych ciągów lub null dla pól, które nie mogą być puste.
-
Istnienie zasobu:
- Żądanie PUT do istniejącego zasobu.
- Żądanie PUT do nieistniejącego zasobu (oczekiwana odpowiedź 404).
-
Autoryzacja i uwierzytelnianie:
- Żądanie PUT z poprawnymi danymi użytkownika mającego prawo do modyfikacji zasobu.
- Żądanie PUT z niepoprawnymi lub brakującymi danymi uwierzytelniającymi (oczekiwane 401 Nieautoryzowany lub 403 Zabroniony).
- Żądanie PUT od użytkownika bez niezbędnych uprawnień do modyfikacji tego zasobu (oczekiwane 403 Zabroniony).
-
Synchronizacja i konkurencja:
- Równoczesne żądania PUT do tego samego zasobu (np. z użyciem etag).
-
Obsługa błędów:
- Żądanie PUT, które powinno wywołać błąd po stronie serwera (np. z powodu awarii wewnętrznej).
Przykład tabeli z przypadkami testowymi:
| ID | Opis przypadku testowego | Warunki wstępne | Dane testowe (część żądania) | Oczekiwany wynik | Kod HTTP |
|---|---|---|---|---|---|
| PUT-001 | Modyfikacja istniejącego zasobu z poprawnymi danymi | Zasób o ID=123 istnieje | { "name": "Nowa nazwa", "value": 100 } |
Zasób pomyślnie zaktualizowany, dane zgodne z żądaniem | 200 |
| PUT-002 | Modyfikacja istniejącego zasobu z częściową aktualizacją | Zasób o ID=123 istnieje | { "name": "Tylko nazwa zmieniona" } |
Zasób pomyślnie zaktualizowany, tylko pole name zmienione | 200 |
| PUT-003 | Próba modyfikacji nieistniejącego zasobu | Zasób o ID=999 nie istnieje | { "name": "Nieistniejąca aktualizacja" } |
Zasób nie znaleziony | 404 |
| PUT-004 | Modyfikacja zasobu z nieprawidłowym typem danych | Zasób o ID=123 istnieje | { "value": "nie liczba" } |
Błąd walidacji danych | 400 |
| PUT-005 | Modyfikacja zasobu bez uwierzytelnienia | Zasób o ID=123 istnieje, żądanie bez tokena | { "name": "Nieautoryzowana zmiana" } |
Nieautoryzowany | 401 |
Każdy przypadek testowy powinien być atomowy i sprawdzać konkretny aspekt funkcjonalności żądania PUT.