Middle
Jak zamierzasz sprawdzić usługę internetową?
sobes.tech AI
Odpowiedź od AI
Weryfikacja usługi internetowej obejmuje kilka kluczowych etapów i typów testów:
-
Zrozumienie wymagań i specyfikacji:
- Analiza dokumentacji (Swagger/OpenAPI, WSDL, specyfikacje funkcjonalne).
- Wyjaśnienie niejasnych punktów z zespołem deweloperskim lub analitykami biznesowymi.
-
Planowanie testów:
- Określenie strategii testowania.
- Wybór metod i narzędzi testowych.
- Planowanie zakresu danych testowych.
-
Testowanie funkcjonalności:
- Scenariusze pozytywne: Sprawdzenie oczekiwanego zachowania przy poprawnych danych wejściowych.
- Scenariusze negatywne: Sprawdzenie obsługi niepoprawnych danych, błędów, wartości granicznych.
- Testowanie wszystkich operacji (GET, POST, PUT, DELETE itp.).
- Walidacja struktury żądań i odpowiedzi (JSON, XML).
- Sprawdzenie statusów odpowiedzi HTTP (2xx - sukces, 4xx - błąd klienta, 5xx - błąd serwera).
- Restart serwera podczas działania (dla scenariusza negatywnego).
-
Testowanie integracji:
- Sprawdzenie interakcji usługi web z innymi usługami lub systemami.
- Użycie narzędzi, które mogą emulować odpowiedzi zależnych usług (serwery mock).
-
Testy wydajności:
- Testy obciążeniowe: Sprawdzenie zachowania usługi przy oczekiwanym obciążeniu.
- Testy przeciążeniowe: Sprawdzenie działania przy obciążeniu powyżej oczekiwanego, aby określić punkt awarii.
- Testy stabilności (Endurance testing): Sprawdzenie pracy usługi pod obciążeniem przez dłuższy czas.
- Pomiar czasu reakcji i przepustowości.
-
Testy bezpieczeństwa:
- Sprawdzenie uwierzytelniania i autoryzacji.
- Walidacja wejścia w celu zapobiegania SQL injection, XSS i innym lukom bezpieczeństwa.
- Sprawdzenie obecności HTTPS.
-
Testy danych:
- Sprawdzenie poprawności danych zwracanych przez usługę.
- Sprawdzenie integralności danych podczas operacji tworzenia, aktualizacji i usuwania.
- Testy z dużymi ilościami danych.
-
Automatyzacja testów:
- Automatyzacja rutynowych testów funkcjonalnych.
- Użycie bibliotek i frameworków do automatyzacji testów API (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
- Konfiguracja CI/CD do automatycznego uruchamiania testów.
-
Narzędzia:
- Postman, Insomnia (testy ręczne i automatyczne).
- Apache JMeter, LoadRunner, Gatling (testy wydajności).
- OWASP ZAP, Burp Suite (testy bezpieczeństwa).
- Biblioteki dla języków programowania (Rest Assured dla Java, Requests dla Pythona itp.).
-
Raportowanie:
- Rejestracja wykrytych defektów z szczegółowym opisem kroków, oczekiwanych i rzeczywistych wyników, danych żądania/odpowiedzi, statusu HTTP i logów.
- Tworzenie raportów postępu testów.
Przykład zautomatyzowanego testu w Java z użyciem Rest Assured:
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
class UserServiceTest {
@Test
void testGetUserById() {
int userId = 1;
given()
.baseUri("http://api.example.com") // Podstawowy URL usługi
.when()
.get("/users/" + userId) // Metoda i endpoint
.then()
.statusCode(200) // Sprawdzenie kodu statusu
.body("id", equalTo(userId)) // Sprawdzenie pola w odpowiedzi
.body("name", equalTo("John Doe")); // Sprawdzenie innego pola
}
@Test
void testCreateUser() {
String requestBody = "{\n" +
" \"name\": \"Jane Smith\",\n" +
" \"email\": \"jane.smith@example.com\"\n" +
"}";
given()
.baseUri("http://api.example.com")
.contentType("application/json") // Ustawienie typu treści
.body(requestBody) // Treść żądania
.when()
.post("/users") // Metoda i endpoint do tworzenia
.then()
.statusCode(201) // Sprawdzenie kodu "Utworzono"
.body("name", equalTo("Jane Smith"))
.body("id", org.hamcrest.Matchers.notNullValue()); // Sprawdzenie, czy ID zostało utworzone
}
}