Sobes.tech
Middle

Cum puteți automatiza testarea API-urilor?

sobes.tech AI

Răspuns de la AI

Pentru automatizarea testării API-urilor, folosesc următoarele:

  1. Alegerea instrumentelor:

    • Postman: O soluție excelentă pentru testarea manuală și semi-automatizată, crearea de colecții de solicitări, scrierea de scripturi în JavaScript pentru verificări (assertions) și crearea de medii.
    • Rest-Assured (pentru Java) / Requests (pentru Python): Biblioteci pentru scrierea testelor automatizate în cod. Permite construirea flexibilă a solicitărilor, procesarea răspunsurilor și scrierea de verificări complexe.
    • Swagger/OpenAPI: Pentru generarea de cod client sau teste bazate pe specificația API.
  2. Definirea scenariilor de testare: Analiza specificației API, identificarea endpoint-urilor, metodelor (GET, POST, PUT, DELETE etc.), parametrilor, anteturilor, corpului solicitărilor, codurilor de stare așteptate și formatelor răspunsurilor (JSON, XML). Dezvoltarea scenariilor pozitive și negative.

  3. Implementarea testelor:

    • Cu Postman:

      • Crearea de colecții pentru gruparea testelor.
      • Scrierea de scripturi Pre-request pentru pregătirea datelor (de exemplu, obținerea unui token).
      • Scrierea de Tests (scripturi post-request) pentru verificarea statusului răspunsului, anteturilor, corpului răspunsului (folosind pm.response.json(), pm.expect(), chai.expect()).
      • Utilizarea variabilelor de mediu pentru parametrii care se schimbă între medii (URL, date de autentificare).
      • Rularea colecțiilor prin Collection Runner sau Newman (pentru 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');
      });
      
    • Cu Rest-Assured (Java):

      • Scrierea de cod în Java folosind framework-uri de testare (JUnit, TestNG).
      • Crearea solicitărilor, specificarea parametrilor, anteturilor, corpului.
      • Executarea solicitării (when().get(), post(), etc.).
      • Verificarea răspunsului (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Exemplu Rest-Assured (Java) folosind 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"; // Setarea URL-ului de bază
      
              given()
              .when()
                  .get("/users/1") // Trimiterea solicitării GET către /users/1
              .then()
                  .statusCode(200) // Verificarea codului de stare
                  .body("data.id", equalTo(1)); // Verificarea câmpului din corpul răspunsului
          }
      }
      
  4. Gestionarea datelor de test: Utilizarea parametrizării testelor pentru verificarea diferitelor combinații de date de intrare. Sursele de date pot fi fișiere CSV, JSON, baze de date.

  5. Executarea testelor în pipeline-ul CI/CD: Integrarea testelor automate API în pipeline-ul de integrare continuă / livrare continuă folosind instrumente precum Jenkins, GitLab CI, GitHub Actions. Acest lucru permite rularea automată a testelor la fiecare commit și obținerea rapidă a feedback-ului despre stabilitatea API-ului. Pentru Postman se folosește Newman, pentru soluțiile de cod - rularea framework-ului de testare.

  6. Analiza rezultatelor și raportarea: Generarea de rapoarte despre trecerea testelor (de exemplu, folosind Allure, rapoarte HTML de la TestNG/JUnit). Monitorizarea rezultatelor și analiza cauzelor eșecurilor.

Această abordare asigură verificarea regulată și fiabilă a funcționalității și stabilității API-ului în diferite etape ale dezvoltării.