Sobes.tech
Junior

Wie überprüfst du, dass du die richtigen Felder zurückgegeben hast?

sobes.tech KI

Antwort von AI

Verifizieren, dass nur die benötigten Felder zurückgegeben werden, kann auf verschiedene Weisen erfolgen, abhängig vom Antworttyp (JSON, XML usw.), dem verwendeten Tool und dem Testniveau (API, E2E):

  1. Schema-Validierung der Antwort (Schema Validation):

    • Die zuverlässigste Methode.
    • Es wird ein Schema (JSON Schema, XML Schema) erstellt, das die Struktur und die erwarteten Datentypen beschreibt.
    • Die Antwort wird gegen dieses Schema validiert.
    • Es garantiert die Anwesenheit/Abwesenheit von Feldern, deren Typen und optional reguläre Ausdrücke für die Werte.
    // Beispiel eines JSON Schema für eine Benutzerantwort
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Direkte Überprüfung der Feldpräsenz/-abwesenheit und Werte (Field Presence and Value Assertion):

    • Antwort parsen.
    • Überprüfung, dass jedes erwartete Feld vorhanden ist.
    • Überprüfung, dass unerwünschte Felder nicht vorhanden sind.
    • Überprüfung der Datentypen der Felder.
    • Überprüfung der Feldwerte (im Vergleich zu einem bestimmten Wert, regulärem Ausdruck, Bereich usw.).
    # Beispiel für die Überprüfung einer JSON-Antwort in Python (mit requests und pytest)
    import requests
    import pytest
    
    def test_user_response_fields():
        response = requests.get("http://api.example.com/users/1")
        assert response.status_code == 200
        data = response.json()
    
        # Überprüfung der Feldpräsenz
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Überprüfung, dass unerwünschte Felder nicht vorhanden sind (z.B. 'password')
        assert "password" not in data
    
        # Überprüfung der Datentypen
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Überprüfung der Werte (Beispiel)
        assert data["id"] > 0
        assert "@" in data["email"]  # Einfache E-Mail-Formatprüfung
    
  3. Vergleich mit Referenz (Golden Master / Snapshot Testing):

    • Es wird eine bekannte korrekte Antwort (Referenz) gespeichert.
    • Die aktuelle Antwort wird mit der Referenz verglichen.
    • Nützlich, um die Stabilität der Struktur zu prüfen, aber weniger flexibel bei erwarteten Änderungen in den Daten.
  4. Verwendung spezialisierter Bibliotheken/Frameworks:

    • RestAssured (Java)
    • Postman (Newman): ermöglicht das Schreiben von Tests in JavaScript, inklusive Schema- und Feldüberprüfungen.
    • Pytest/unittest mit Bibliotheken für JSON/XML.

Die Wahl der Methode hängt von der Komplexität der Antwortstruktur, den Anforderungen an die Prüfgenauigkeit und dem verwendeten Technologiestack ab. Schema-Validierung ist der Goldstandard für API-Tests, da sie alle Aspekte der Struktur und der Datentypen abdeckt.