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í:
-
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.
-
Plánování testování:
- Stanovení testovací strategie.
- Výběr metod a nástrojů testování.
- Plánování objemu testovacích dat.
-
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).
-
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).
-
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.
-
Bezpečnostní testování:
- Kontrola autentifikace a autorizace.
- Validace vstupů k prevenci SQL injection, XSS a dalších zranitelností.
- Kontrola přítomnosti HTTPS.
-
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.
-
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ů.
-
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.).
-
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
}
}