Sobes.tech
Middle

Hogyan fogja ellenőrizni a webszolgáltatást?

sobes.tech MI

Válasz az MI-től

Egy webszolgáltatás ellenőrzése több kulcsfontosságú szakaszt és tesztelési típusokat foglal magában:

  1. Elvárások és specifikációk megértése:

    • Dokumentáció tanulmányozása (Swagger/OpenAPI, WSDL, funkcionális specifikációk).
    • Kétséges pontok tisztázása a fejlesztőcsapattal vagy az üzleti elemzőkkel.
  2. Tesztelési tervek készítése:

    • Tesztstratégia meghatározása.
    • Tesztelési módszerek és eszközök kiválasztása.
    • Tesztadatok mennyiségének tervezése.
  3. Funkcionális tesztelés:

    • Pozitív forgatókönyvek: A várt viselkedés ellenőrzése helyes bemeneti adatok esetén.
    • Negatív forgatókönyvek: Hibás adatok, hibák, határértékek kezelése.
    • Minden művelet (GET, POST, PUT, DELETE stb.) tesztelése.
    • Kérések és válaszok szerkezetének validálása (JSON, XML).
    • HTTP státuszkódok ellenőrzése (2xx - siker, 4xx - klienshiba, 5xx - szerverhiba).
    • A szerver újraindítása működés közben (negatív forgatókönyvekhez).
  4. Integrációs tesztek:

    • A webszolgáltatás és más szolgáltatások vagy rendszerek közötti interakció ellenőrzése.
    • Olyan eszközök használata, amelyek képesek szimulálni az függő szolgáltatások válaszait (mock-szerverek).
  5. Teljesítmény tesztelése:

    • Terheléses tesztelés: A szolgáltatás viselkedésének ellenőrzése várható terhelés alatt.
    • Stressz tesztelés: A működés ellenőrzése nagyobb terhelés alatt a hibapont meghatározásához.
    • Stabilitási tesztelés (Endurance testing):
    • A válaszidő és a sávszélesség mérése.
  6. Biztonsági tesztek:

    • Hitelesítés és jogosultság ellenőrzése.
    • Beviteli adatok validálása SQL injection, XSS és más sebezhetőségek megelőzése érdekében.
    • HTTPS meglétének ellenőrzése.
  7. Adatellenőrzések:

    • A szolgáltatás által visszaadott adatok helyességének ellenőrzése.
    • Az adatok integritásának ellenőrzése létrehozás, frissítés és törlés műveleteknél.
    • Nagy adatmennyiségekkel végzett tesztek.
  8. Teszt automatizálás:

    • Rutinszerű funkcionális tesztek automatizálása.
    • API tesztekhez könyvtárak és keretrendszerek használata (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • CI/CD beállítása az automatikus tesztfuttatáshoz.
  9. Eszközök:

    • Postman, Insomnia (kézi és automatizált tesztek).
    • Apache JMeter, LoadRunner, Gatling (teljesítmény tesztelés).
    • OWASP ZAP, Burp Suite (biztonsági tesztek).
    • Programozási nyelvi könyvtárak (Rest Assured Java-hoz, Requests Python-hoz stb.).
  10. Jelentéskészítés:

    • Talált hibák dokumentálása részletes reprodukálási lépésekkel, várható és tényleges eredményekkel, kérés/válasz adatokkal, HTTP státusszal és naplókkal.
    • A tesztelés előrehaladásáról szóló jelentések készítése.

Automatizált teszt példája Java-ban a Rest Assured használatával:

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") // Az alap URL
            .when()
            .get("/users/" + userId) // Módszer és végpont
            .then()
            .statusCode(200) // Állapotkód ellenőrzése
            .body("id", equalTo(userId)) // A válasz törzsében lévő mező ellenőrzése
            .body("name", equalTo("John Doe")); // Egy másik mező ellenőrzése
    }

    @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") // A tartalom típusa
            .body(requestBody) // A kérés törzse
            .when()
            .post("/users") // Módszer és végpont létrehozásához
            .then()
            .statusCode(201) // "Létrehozva" státuszkód ellenőrzése
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Ellenőrzés, hogy ID létrejött
    }
}