Sobes.tech
Middle

Ako budete kontrolovať webovú službu?

sobes.tech AI

Odpoveď od AI

Kontrola webovej služby zahŕňa niekoľko kľúčových krokov a typov testovania:

  1. Porozumenie požiadavkám a špecifikáciám:

    • Štúdium dokumentácie (Swagger/OpenAPI, WSDL, funkčné špecifikácie).
    • Upresnenie nejasností s vývojovým tímom alebo obchodnými analytikmi.
  2. Plánovanie testovania:

    • Stanovenie stratégie testovania.
    • Výber metód a nástrojov testovania.
    • Plánovanie objemu testovacích dát.
  3. Testovanie funkčnosti:

    • Pozitívne scenáre: Kontrola očakávaného správania pri správnych vstupných dátach.
    • Negatívne scenáre: Kontrola spracovania nesprávnych dát, chýb, hraničných hodnôt.
    • Testovanie všetkých operácií (GET, POST, PUT, DELETE atď.).
    • Validácia štruktúry požiadaviek a odpovedí (JSON, XML).
    • Kontrola stavov HTTP odpovedí (2xx - úspech, 4xx - chyba klienta, 5xx - chyba servera).
    • Reštart servera počas prevádzky (pre negatívny scenár).
  4. Testovanie integrácie:

    • Kontrola interakcie webovej služby s inými službami alebo systémami.
    • Použitie nástrojov, ktoré môžu emulovať odpovede závislých služieb (mock servery).
  5. Testovanie výkonu:

    • Záťažové testovanie: Kontrola správania služby pri očakávanej záťaži.
    • Stress testovanie: Kontrola práce pri záťaži vyššej ako očakávaná na určenie bodu zlyhania.
    • Testovanie stability (Endurance testing): Kontrola práce služby pod záťažou počas dlhšieho času.
    • Meranie doby odozvy a priepustnosti.
  6. Testovanie bezpečnosti:

    • Kontrola autentifikácie a autorizácie.
    • Validácia vstupov na prevenciu SQL injection, XSS a iných zraniteľností.
    • Kontrola prítomnosti HTTPS.
  7. Testovanie dát:

    • Kontrola správnosti dát vracaných službou.
    • Kontrola integrity dát pri operáciách vytvárania, aktualizácie a mazania.
    • Testovanie práce s veľkými objemami dát.
  8. Automatizácia testovania:

    • Automatizácia rutinných funkčných testov.
    • Použitie knižníc a rámcov na automatizáciu API testov (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Nastavenie CI/CD na automatické spúšťanie testov.
  9. Nástroje:

    • Postman, Insomnia (ručné a automatizované testovanie).
    • Apache JMeter, LoadRunner, Gatling (testovanie výkonu).
    • OWASP ZAP, Burp Suite (testovanie bezpečnosti).
    • Knižnice pre programovacie jazyky (Rest Assured pre Java, Requests pre Python atď.).
  10. Správa:

    • Zaznamenávanie nájdených chýb s podrobným popisom krokov na reprodukciu, očakávaných a skutočných výsledkov, dát požiadavky/odpovede, stavu HTTP a logov.
    • Vypracovanie správ o priebehu testovania.

Príklad automatizovaného testu v Jave 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) // Metóda a endpoint
            .then()
            .statusCode(200) // Kontrola kódu stavu odpovede
            .body("id", equalTo(userId)) // Kontrola poľa v tele odpovede
            .body("name", equalTo("John Doe")); // Kontrola iného poľa
    }

    @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") // Nastavenie typu obsahu
            .body(requestBody) // Odovzdanie tela požiadavky
            .when()
            .post("/users") // Metóda a endpoint na vytvorenie
            .then()
            .statusCode(201) // Kontrola kódu stavu "Vytvorené"
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Kontrola, že ID je vytvorené
    }
}