Sobes.tech
Junior

Cum vei verifica că ai returnat câmpurile corecte?

sobes.tech AI

Răspuns de la AI

Verificarea faptului că sunt returnate exact câmpurile necesare poate fi realizată în mai multe moduri, în funcție de tipul răspunsului (JSON, XML etc.), instrumentul utilizat și nivelul de testare (API, E2E):

  1. Validarea schemei răspunsului (Schema Validation):

    • Cel mai fiabil mod.
    • Se creează o schemă (JSON Schema, XML Schema) care descrie structura și tipurile de date așteptate.
    • Răspunsul este validat conform acestei scheme.
    • Asigură prezența/absența câmpurilor, tipurile lor și, opțional, expresii regulate pentru valori.
    // Exemplu de JSON Schema pentru răspunsul cu utilizator
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Verificarea directă a prezenței/absenței câmpurilor și valorilor (Field Presence and Value Assertion):

    • Parsarea răspunsului.
    • Verificarea dacă fiecare câmp așteptat este prezent.
    • Verificarea dacă câmpurile nedorite nu sunt prezente.
    • Verificarea tipurilor de date ale câmpurilor.
    • Verificarea valorilor câmpurilor (în raport cu o valoare specifică, expresie regulată, interval etc.).
    # Exemplu de verificare a răspunsului JSON în Python (cu requests și 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()
    
        # Verificarea prezenței câmpurilor
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Verificarea că câmpurile nedorite nu sunt prezente (de exemplu, 'password')
        assert "password" not in data
    
        # Verificarea tipurilor de câmpuri
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Verificarea valorilor (exemplu)
        assert data["id"] > 0
        assert "@" in data["email"]  # Verificare simplă a formatului email
    
  3. Compararea cu referința (Golden Master / Snapshot Testing):

    • Se salvează un răspuns corect cunoscut (referință).
    • Răspunsul actual este comparat cu referința.
    • Util pentru verificarea stabilității structurii, dar mai puțin flexibil în fața modificărilor așteptate în date.
  4. Utilizarea bibliotecilor/frameworkurilor specializate:

    • RestAssured (Java)
    • Postman (Newman): permite scrierea de teste în JavaScript, inclusiv verificări de schemă și câmpuri.
    • Pytest/unittest cu biblioteci pentru JSON/XML.

Alegerea metodei depinde de complexitatea structurii răspunsului, de cerințele de precizie ale verificării și de stack-ul tehnologic utilizat. Validarea schemelor este standardul de aur pentru testarea API-urilor, deoarece acoperă toate aspectele structurii și tipurilor de date.