Sobes.tech
Middle

Wie können Sie API-Tests automatisieren?

sobes.tech KI

Antwort von AI

Um die API-Tests zu automatisieren, verwende ich Folgendes:

  1. Werkzeugauswahl:

    • Postman: Hervorragend für manuelle und halbautomatisierte Tests, Erstellung von Anfragekollektionen, Schreiben von JavaScript-Skripten für Assertions und Umgebungen.
    • Rest-Assured (für Java) / Requests (für Python): Bibliotheken zum Schreiben automatisierter Tests im Code. Ermöglichen flexible Anfragen, Verarbeitung von Antworten und komplexe Prüfungen.
    • Swagger/OpenAPI: Für die Generierung von Client-Code oder Tests basierend auf der API-Spezifikation.
  2. Definition von Testszenarien: Analyse der API-Spezifikation, Festlegung der Endpunkte, Methoden (GET, POST, PUT, DELETE usw.), Parameter, Header, Anfragekörper, erwartete Statuscodes und Antwortformate (JSON, XML). Entwicklung positiver und negativer Testszenarien.

  3. Implementierung der Tests:

    • Mit Postman:

      • Erstellung von Kollektionen zur Gruppierung der Tests.
      • Schreiben von Pre-request-Skripten zur Datenvorbereitung (z.B. Token erhalten).
      • Schreiben von Tests (Post-request-Skripte) zur Überprüfung des Antwortstatus, der Header, des Antwortkörpers (unter Verwendung von pm.response.json(), pm.expect(), chai.expect()).
      • Verwendung von Umgebungsvariablen für Parameter, die zwischen Umgebungen variieren (URL, Anmeldedaten).
      • Ausführung der Kollektionen über Collection Runner oder Newman (für CI/CD).
      // Postman-Test
      pm.test("Statuscode ist 200", function () {
          pm.response.to.have.status(200);
      });
      
      pm.test("Antwortkörper enthält ein bestimmtes Feld", function () {
          const responseJson = pm.response.json();
          pm.expect(responseJson.data).to.have.property('id');
      });
      
    • Mit Rest-Assured (Java):

      • Schreiben von Java-Code unter Verwendung von Test-Frameworks (JUnit, TestNG).
      • Erstellung von Anfragen, Angabe von Parametern, Headern, Körper.
      • Ausführung der Anfrage (when().get(), post(), etc.).
      • Überprüfung der Antwort (then().statusCode(int), body(String Pfad, Matcher<?> matcher)).
      // Beispiel für Rest-Assured (Java) mit 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"; // Basis-URL festlegen
      
              given()
              .when()
                  .get("/users/1") // GET-Anfrage an /users/1
              .then()
                  .statusCode(200) // Statuscode auf 200 prüfen
                  .body("data.id", equalTo(1)); // Feld im Antwortkörper prüfen
          }
      }
      
  4. Verwaltung der Testdaten: Verwendung der Parametrisierung von Tests, um verschiedene Eingabedatenkombinationen zu prüfen. Datenquellen können CSV-, JSON-Dateien, Datenbanken sein.

  5. Ausführung der Tests im CI/CD-Pipeline: Integration automatisierter API-Tests in den Continuous-Integration/Continuous-Delivery-Prozess mit Tools wie Jenkins, GitLab CI, GitHub Actions. Dies ermöglicht das automatische Ausführen der Tests bei jedem Commit und schnelles Feedback zur API-Stabilität. Für Postman wird Newman verwendet, für Code-Lösungen — das Test-Framework ausführen.

  6. Analyse der Ergebnisse und Berichterstellung: Generierung von Testberichten (z.B. mit Allure, HTML-Berichte von TestNG/JUnit). Überwachung der Ergebnisse und Analyse der Fehlerursachen.

Dieser Ansatz gewährleistet eine regelmäßige und zuverlässige Überprüfung der Funktionalität und Stabilität der API in verschiedenen Entwicklungsphasen.