Sobes.tech
Middle

Kako možete automatizovati testiranje API-ja?

sobes.tech АИ

Одговор од АИ

Za automatizaciju testiranja API-ja koristim sledeće:

  1. Izbor alata:

    • Postman: Odlično rešenje za ručno i poluautomatsko testiranje, kreiranje kolekcija zahteva, pisanje skripti u JavaScript-u za provere (assertions) i kreiranje okruženja.
    • Rest-Assured (za Java) / Requests (za Python): Biblioteke za pisanje automatizovanih testova u kodu. Omogućavaju fleksibilno sastavljanje zahteva, obradu odgovora i pisanje složenih provera.
    • Swagger/OpenAPI: Za generisanje klijentskog koda ili testova na osnovu specifikacije API-ja.
  2. Definisanje scenarija testiranja: Analiza specifikacije API-ja, definisanje endpoints-a, metoda (GET, POST, PUT, DELETE itd.), parametara, zaglavlja, tela zahteva, očekivanih status kodova i formata odgovora (JSON, XML). Razvijanje pozitivnih i negativnih scenarija.

  3. Implementacija testova:

    • Sa korišćenjem Postman-a:

      • Kreiranje kolekcija za grupisanje testova.
      • Pisanje Pre-request skripti za pripremu podataka (npr. dobijanje tokena).
      • Pisanje Tests (post-request skripti) za proveru statusa odgovora, zaglavlja, tela odgovora (pm.response.json(), pm.expect(), chai.expect()).
      • Korišćenje promenljivih okruženja za parametre koji se menjaju između okruženja (URL, podaci za prijavu).
      • Pokretanje kolekcija putem Collection Runner ili Newman (za CI/CD).
      // Postman Test
      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');
      });
      
    • Sa korišćenjem Rest-Assured (Java):

      • Pisanje koda u Java koristeći test framework-e (JUnit, TestNG).
      • Kreiranje zahteva, navođenje parametara, zaglavlja, tela.
      • Izvršavanje zahteva (when().get(), post(), itd.).
      • Provera odgovora (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Rest-Assured (Java) primer koristeći 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"; // Postavljanje osnovnog URL-a
      
              given()
              .when()
                  .get("/users/1") // Slanje GET zahteva na /users/1
              .then()
                  .statusCode(200) // Provera da je status kod 200
                  .body("data.id", equalTo(1)); // Provera polja u telu odgovora
          }
      }
      
  4. Upravljanje test podacima: Korišćenje parametrizacije testova za proveru različitih kombinacija ulaznih podataka. Izvori podataka mogu biti CSV, JSON fajlovi, baze podataka.

  5. Pokretanje testova u CI/CD pipeline-u: Integracija automatizovanih API testova u pipeline kontinuirane integracije / kontinuirane isporuke pomoću alata kao što su Jenkins, GitLab CI, GitHub Actions. Ovo omogućava automatsko pokretanje testova pri svakom commit-u i brzo dobijanje povratnih informacija o stabilnosti API-ja. Za Postman se koristi Newman, za kodna rešenja - pokretanje testnog okvira.

  6. Analiza rezultata i izveštavanje: Generisanje izveštaja o prolaznosti testova (npr. korišćenjem Allure, HTML izveštaja od TestNG/JUnit). Praćenje rezultata i analiza uzroka neuspeha.

Ovaj pristup obezbeđuje redovno i pouzdano proveravanje funkcionalnosti i stabilnosti API-ja na različitim fazama razvoja.