Sobes.tech
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:

  1. Zrozumienie wymagań i specyfikacji:

    • Analiza dokumentacji (Swagger/OpenAPI, WSDL, specyfikacje funkcjonalne).
    • Wyjaśnienie niejasnych punktów z zespołem deweloperskim lub analitykami biznesowymi.
  2. Planowanie testów:

    • Określenie strategii testowania.
    • Wybór metod i narzędzi testowych.
    • Planowanie zakresu danych testowych.
  3. 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).
  4. 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).
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.).
  10. 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
    }
}