Sobes.tech
Middle

Hoe kunt u API-testen automatiseren?

sobes.tech AI

Antwoord van AI

Om API-testautomatisering te implementeren, gebruik ik het volgende:

  1. Selectie van tools:

    • Postman: Uitstekend voor handmatige en semi-geautomatiseerde tests, het maken van collecties van verzoeken, het schrijven van scripts in JavaScript voor assertions en het maken van omgevingen.
    • Rest-Assured (voor Java) / Requests (voor Python): Bibliotheken voor het schrijven van geautomatiseerde tests in code. Ze maken het mogelijk om flexibel verzoeken te bouwen, antwoorden te verwerken en complexe controles uit te voeren.
    • Swagger/OpenAPI: Voor het genereren van clientcode of tests op basis van de API-specificatie.
  2. Definitie van testscenario's: Analyse van de API-specificatie, bepalen van endpoints, methoden (GET, POST, PUT, DELETE, etc.), parameters, headers, request bodies, verwachte statuscodes en responseformaten (JSON, XML). Ontwikkeling van positieve en negatieve testscenario's.

  3. Implementatie van tests:

    • Met Postman:

      • Maken van collecties om tests te groeperen.
      • Schrijven van Pre-request scripts om gegevens voor te bereiden (bijvoorbeeld, een token verkrijgen).
      • Schrijven van Tests (post-request scripts) om de status van het antwoord, headers, response body te controleren (pm.response.json(), pm.expect(), chai.expect()).
      • Gebruik van omgevingsvariabelen voor parameters die tussen omgevingen veranderen (URL, inloggegevens).
      • Uitvoeren van collecties via Collection Runner of Newman (voor CI/CD).
      // Postman Test
      pm.test("Statuscode is 200", function () {
          pm.response.to.have.status(200);
      });
      
      pm.test("Response body bevat een specifiek veld", function () {
          const responseJson = pm.response.json();
          pm.expect(responseJson.data).to.have.property('id');
      });
      
    • Met Rest-Assured (Java):

      • Schrijven van Java-code met gebruik van testframeworks (JUnit, TestNG).
      • Aanmaken van verzoeken, specificeren van parameters, headers, body.
      • Uitvoeren van het verzoek (when().get(), post(), etc.).
      • Verifiëren van het antwoord (then().statusCode(int), body(String path, Matcher<?> matcher)).
      // Voorbeeld van Rest-Assured (Java) met 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"; // Stel basis-URL in
      
              given()
              .when()
                  .get("/users/1") // Verstuur GET-verzoek naar /users/1
              .then()
                  .statusCode(200) // Controleer of statuscode 200 is
                  .body("data.id", equalTo(1)); // Controleer veld in response body
          }
      }
      
  4. Beheer van testgegevens: Gebruik parametrisatie van tests om verschillende invoercombinaties te controleren. Gegevensbronnen kunnen CSV-, JSON-bestanden of databases zijn.

  5. Uitvoering van tests in CI/CD pipeline: Integratie van geautomatiseerde API-tests in de continue integratie/continue delivery pipeline met tools zoals Jenkins, GitLab CI, GitHub Actions. Dit maakt het mogelijk om tests automatisch uit te voeren bij elke commit en snel feedback te krijgen over de stabiliteit van de API. Voor Postman wordt Newman gebruikt, voor code-oplossingen — het testframework uitvoeren.

  6. Analyse van resultaten en rapportage: Generatie van testrapporten (bijvoorbeeld met Allure, HTML-rapporten van TestNG/JUnit). Resultaten volgen en oorzaken van falen analyseren.

Deze aanpak zorgt voor regelmatige en betrouwbare controle van de functionaliteit en stabiliteit van de API in verschillende ontwikkelingsfasen.