Sobes.tech
Middle

Jak můžete automatizovat testování API?

sobes.tech AI

Odpověď od AI

Pro automatizaci testování API používám následující:

  1. 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.
  2. 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ářů.

  3. 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
          }
      }
      
  4. 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.

  5. 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.

  6. 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.