Sobes.tech
Middle

Jak budete kontrolovat webovou službu?

sobes.tech AI

Odpověď od AI

Kontrola webové služby zahrnuje několik klíčových etap a typů testování:

  1. Porozumění požadavkům a specifikacím:

    • Studium dokumentace (Swagger/OpenAPI, WSDL, funkční specifikace).
    • Vyjasnění nejasných bodů s vývojovým týmem nebo business analytiky.
  2. Plánování testování:

    • Stanovení testovací strategie.
    • Výběr metod a nástrojů testování.
    • Plánování objemu testovacích dat.
  3. Funkční testování:

    • Pozitivní scénáře: Kontrola očekávaného chování při správných vstupních datech.
    • Negativní scénáře: Kontrola zpracování nesprávných dat, chyb, hraničních hodnot.
    • Testování všech operací (GET, POST, PUT, DELETE atd.).
    • Validace struktury požadavků a odpovědí (JSON, XML).
    • Kontrola HTTP stavových kódů (2xx - úspěch, 4xx - chyba klienta, 5xx - chyba serveru).
    • Restart serveru během provozu (pro negativní scénáře).
  4. Integrační testování:

    • Kontrola interakce webové služby s jinými službami nebo systémy.
    • Použití nástrojů, které mohou emulovat odpovědi závislých služeb (mock servery).
  5. Výkonnostní testování:

    • Zátěžové testování: Kontrola chování služby při očekávané zátěži.
    • Stresové testování: Kontrola funkčnosti při vyšší zátěži než očekávané za účelem určení bodu selhání.
    • Testování stability (Endurance testing): Kontrola provozu služby při dlouhodobé zátěži.
    • Měření doby odezvy a propustnosti.
  6. Bezpečnostní testování:

    • Kontrola autentifikace a autorizace.
    • Validace vstupů k prevenci SQL injection, XSS a dalších zranitelností.
    • Kontrola přítomnosti HTTPS.
  7. Testování dat:

    • Kontrola správnosti dat vracených službou.
    • Kontrola integrity dat při operacích vytváření, aktualizace a mazání.
    • Testování s velkými objemy dat.
  8. Automatizace testování:

    • Automatizace rutinních funkčních testů.
    • Použití knihoven a rámců pro automatizaci API testů (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Nastavení CI/CD pro automatické spouštění testů.
  9. Nástroje:

    • Postman, Insomnia (ruční a automatizované testování).
    • Apache JMeter, LoadRunner, Gatling (testování výkonu).
    • OWASP ZAP, Burp Suite (testování bezpečnosti).
    • Knihovny pro programovací jazyky (Rest Assured pro Java, Requests pro Python atd.).
  10. Reportování:

    • Zaznamenávání nalezených chyb s podrobným popisem kroků reprodukce, očekávaných a skutečných výsledků, dat požadavku/odpovědi, stavu HTTP a logů.
    • Vypracování zpráv o průběhu testování.

Příklad automatizovaného testu v Java s použitím 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") // Základní URL služby
            .when()
            .get("/users/" + userId) // Metoda a endpoint
            .then()
            .statusCode(200) // Kontrola kódu stavu
            .body("id", equalTo(userId)) // Kontrola pole v těle odpovědi
            .body("name", equalTo("John Doe")); // Kontrola jiného pole
    }

    @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") // Nastavení typu obsahu
            .body(requestBody) // Odeslání těla požadavku
            .when()
            .post("/users") // Metoda a endpoint pro vytvoření
            .then()
            .statusCode(201) // Kontrola kódu stavu "Vytvořeno"
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Kontrola, že ID bylo vytvořeno
    }
}