Sobes.tech
Middle

Come puoi automatizzare i test API?

sobes.tech AI

Risposta dell'AI

Per automatizzare i test API, utilizzo quanto segue:

  1. Selezione degli strumenti:

    • Postman: Ottimo per test manuali e semi-automatici, creazione di collezioni di richieste, scrittura di script in JavaScript per assertions e creazione di ambienti.
    • Rest-Assured (per Java) / Requests (per Python): Librerie per scrivere test automatizzati nel codice. Permettono di costruire richieste flessibili, elaborare risposte e scrivere verifiche complesse.
    • Swagger/OpenAPI: Per generare codice client o test basati sulla specifica API.
  2. Definizione degli scenari di test: Analisi della specifica API, definizione di endpoint, metodi (GET, POST, PUT, DELETE, ecc.), parametri, intestazioni, corpo delle richieste, codici di stato attesi e formati di risposta (JSON, XML). Sviluppo di scenari di test positivi e negativi.

  3. Implementazione dei test:

    • Con Postman:

      • Creazione di collezioni per raggruppare i test.
      • Scrittura di script Pre-request per preparare i dati (ad esempio, ottenere token).
      • Scrittura di Tests (script post-request) per verificare lo stato della risposta, intestazioni, corpo della risposta (usando pm.response.json(), pm.expect(), chai.expect()).
      • Uso di variabili di ambiente per parametri che cambiano tra ambienti (URL, credenziali).
      • Esecuzione delle collezioni tramite Collection Runner o Newman (per CI/CD).
      // Test Postman
      pm.test("Lo stato è 200", function () {
          pm.response.to.have.status(200);
      });
      
      pm.test("Il corpo della risposta contiene un campo specifico", function () {
          const responseJson = pm.response.json();
          pm.expect(responseJson.data).to.have.property('id');
      });
      
    • Con Rest-Assured (Java):

      • Scrittura di codice Java usando framework di testing (JUnit, TestNG).
      • Creazione di richieste, specifica di parametri, intestazioni, corpo.
      • Esecuzione della richiesta (when().get(), post(), ecc.).
      • Verifica della risposta (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Esempio di Rest-Assured (Java) usando 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"; // Imposta URL di base
      
              given()
              .when()
                  .get("/users/1") // Invia richiesta GET a /users/1
              .then()
                  .statusCode(200) // Verifica che lo stato sia 200
                  .body("data.id", equalTo(1)); // Verifica campo nel corpo della risposta
          }
      }
      
  4. Gestione dei dati di test: Uso della parametrizzazione dei test per verificare diverse combinazioni di dati di input. Le fonti di dati possono essere file CSV, JSON, database.

  5. Esecuzione dei test nel pipeline CI/CD: Integrazione dei test API automatizzati nel flusso di integrazione continua e consegna continua usando strumenti come Jenkins, GitLab CI, GitHub Actions. Questo permette di eseguire automaticamente i test ad ogni commit e ottenere feedback rapido sulla stabilità dell'API. Per Postman si usa Newman, per soluzioni di codice — eseguire il framework di test.

  6. Analisi dei risultati e report: Generazione di report di test (ad esempio, usando Allure, report HTML di TestNG/JUnit). Monitoraggio dei risultati e analisi delle cause di fallimento.

Questo approccio garantisce un controllo regolare e affidabile della funzionalità e stabilità dell'API in diverse fasi dello sviluppo.