Jak můžete automatizovat testování API?
sobes.tech AI
Odpověď od AI
Pro automatizaci testování API používám následující:
-
Výběr nástrojů:
- Postman: Skvělé řešení pro ruční a poloautomatické testování, tvorbu kolekcí požadavků, psaní skriptů v JavaScriptu pro kontroly (assertions) a tvorbu prostředí.
- Rest-Assured (pro Java) / Requests (pro Python): Knihovny pro psaní automatizovaných testů v kódu. Umožňují flexibilně sestavovat požadavky, zpracovávat odpovědi a psát složité kontroly.
- Swagger/OpenAPI: Pro generování klientského kódu nebo testů na základě specifikace API.
-
Definice scénářů testování: Analýza specifikace API, určení endpointů, metod (GET, POST, PUT, DELETE atd.), parametrů, hlaviček, těla požadavků, očekávaných kódů stavu a formátů odpovědí (JSON, XML). Vývoj pozitivních a negativních scénářů.
-
Implementace testů:
-
S použitím Postman:
- Vytváření kolekcí pro seskupení testů.
- Psaní skriptů Pre-request pro přípravu dat (například získání tokenu).
- Psaní Tests (post-request skriptů) pro kontrolu stavu odpovědi, hlaviček, těla odpovědi (
pm.response.json(),pm.expect(),chai.expect()). - Použití proměnných prostředí pro parametry, které se mění mezi prostředími (URL, přihlašovací údaje).
- Spouštění kolekcí přes Collection Runner nebo Newman (pro CI/CD).
// Test Postman pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("Response body contains specific field", function () { const responseJson = pm.response.json(); pm.expect(responseJson.data).to.have.property('id'); }); -
S použitím Rest-Assured (Java):
- Psaní kódu v Java s použitím testovacích frameworků (JUnit, TestNG).
- Vytváření požadavků, specifikace parametrů, hlaviček, těla.
- Spuštění požadavku (
when().get(),post(), atd.). - Kontrola odpovědi (
then().statusCode(int),body(String path, Matcher<?> matcher)).
// Rest-Assured (Java) příklad s použitím JUnit import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; public class ApiTest { @Test public void testGetUser() { RestAssured.baseURI = "https://api.example.com"; // Nastavení základní URL given() .when() .get("/users/1") // Odeslání GET požadavku na /users/1 .then() .statusCode(200) // Kontrola, že kód stavu je 200 .body("data.id", equalTo(1)); // Kontrola pole v těle odpovědi } }
-
-
Správa testovacích dat: Použití parametrizace testů pro kontrolu různých kombinací vstupních dat. Zdroj dat mohou být CSV, JSON soubory, databáze.
-
Spouštění testů v CI/CD pipeline: Integrace automatizovaných API testů do kontinuální integrace / kontinuálního doručení pomocí nástrojů jako Jenkins, GitLab CI, GitHub Actions. To umožňuje automatické spouštění testů při každém commitu a rychlou zpětnou vazbu o stabilitě API. Pro Postman se používá Newman, pro kódová řešení - spuštění testovacího frameworku.
-
Analýza výsledků a reportování: Generování zpráv o průběhu testů (například pomocí Allure, HTML reportů od TestNG/JUnit). Sledování výsledků a analýza příčin selhání.
Takový přístup zajišťuje pravidelnou a spolehlivou kontrolu funkčnosti a stability API v různých fázích vývoje.