Sobes.tech
Middle

Ako môžete automatizovať testovanie API?

sobes.tech AI

Odpoveď od AI

Za automatizáciu testovania API používam nasledovné:

  1. Výber nástrojov:

    • Postman: Vynikajúce riešenie pre ručné a poloautomatické testovanie, tvorbu kolekcií požiadaviek, písanie skriptov v JavaScripte na kontroly (assertions) a tvorbu prostredí.
    • Rest-Assured (pre Java) / Requests (pre Python): Knihovny na písanie automatizovaných testov v kóde. Umožňujú flexibilne zostavovať požiadavky, spracovávať odpovede a písať zložité kontroly.
    • Swagger/OpenAPI: Na generovanie klientskeho kódu alebo testov na základe špecifikácie API.
  2. Definovanie scenárov testovania: Analýza špecifikácie API, určenie endpointov, metód (GET, POST, PUT, DELETE atď.), parametrov, hlavičiek, telies požiadaviek, očakávaných kódov stavu a formátov odpovedí (JSON, XML). Vypracovanie pozitívnych a negatívnych scenárov.

  3. Implementácia testov:

    • S použitím Postman:

      • Vytváranie kolekcií na zoskupovanie testov.
      • Písanie Pre-request skriptov na prípravu dát (napríklad získanie tokenu).
      • Písanie Tests (post-request skriptov) na kontrolu stavu odpovede, hlavičiek, telies odpovedí (pm.response.json(), pm.expect(), chai.expect()).
      • Použitie premenných prostredia pre parametre, ktoré sa menia medzi prostrediami (URL, prihlasovacie údaje).
      • Spustenie kolekcií cez Collection Runner alebo Newman (pre CI/CD).
      // Test v 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):

      • Písanie kódu v Java s použitím testovacích frameworkov (JUnit, TestNG).
      • Vytváranie požiadaviek, určenie parametrov, hlavičiek, telies.
      • Spustenie požiadavky (when().get(), post(), atď.).
      • Kontrola odpovede (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Rest-Assured (Java) prí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"; // Nastavenie základného URL
      
              given()
              .when()
                  .get("/users/1") // Odoslanie GET požiadavky na /users/1
              .then()
                  .statusCode(200) // Kontrola, že kód stavu je 200
                  .body("data.id", equalTo(1)); // Kontrola poľa v tele odpovede
          }
      }
      
  4. Správa testovacích dát: Použitie parametrizácie testov na kontrolu rôznych kombinácií vstupných dát. Zdrojmi dát môžu byť CSV, JSON súbory, databázy.

  5. Spustenie testov v CI/CD pipeline: Integrácia automatizovaných API testov do pipeline kontinuálnej integrácie / kontinuálnej dodávky pomocou nástrojov ako Jenkins, GitLab CI, GitHub Actions. To umožňuje automatické spúšťanie testov pri každom commite a rýchle získavanie spätnej väzby o stabilite API. Pre Postman sa používa Newman, pre kódové riešenia - spustenie testovacieho frameworku.

  6. Analýza výsledkov a reportovanie: Generovanie správ o priebehu testov (napríklad pomocou Allure, HTML reportov od TestNG/JUnit). Sledovanie výsledkov a analýza príčin neúspechov.

Takýto prístup zabezpečuje pravidelnú a spoľahlivú kontrolu funkčnosti a stability API na rôznych etapách vývoja.