Sobes.tech
Junior

Come verificherai di aver restituito i campi corretti?

sobes.tech AI

Risposta dell'AI

Verificare che vengano restituiti solo i campi necessari può essere fatto in diversi modi, a seconda del tipo di risposta (JSON, XML, ecc.), dello strumento utilizzato e del livello di test (API, E2E):

  1. Validazione dello schema di risposta (Schema Validation):

    • Il metodo più affidabile.
    • Si crea uno schema (JSON Schema, XML Schema) che descrive la struttura e i tipi di dati attesi.
    • La risposta viene validata rispetto a questo schema.
    • Garantisce la presenza/assenza di campi, i loro tipi e, opzionalmente, espressioni regolari per i valori.
    // Esempio di JSON Schema per una risposta utente
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Verifica diretta della presenza/assenza di campi e valori (Field Presence and Value Assertion):

    • Analisi della risposta.
    • Verifica che ogni campo atteso sia presente.
    • Verifica che i campi indesiderati non siano presenti.
    • Verifica dei tipi di dati dei campi.
    • Verifica dei valori dei campi (rispetto a un valore specifico, espressione regolare, intervallo, ecc.).
    # Esempio di verifica di risposta JSON in Python (con requests e 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()
    
        # Verifica della presenza dei campi
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Verifica che i campi indesiderati non siano presenti (ad esempio, 'password')
        assert "password" not in data
    
        # Verifica dei tipi di campi
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Verifica dei valori (esempio)
        assert data["id"] > 0
        assert "@" in data["email"]  # Verifica semplice del formato email
    
  3. Confronto con riferimento (Golden Master / Snapshot Testing):

    • Si salva una risposta corretta nota (riferimento).
    • La risposta attuale viene confrontata con il riferimento.
    • Utile per verificare la stabilità della struttura, ma meno flessibile ai cambiamenti attesi nei dati.
  4. Utilizzo di librerie/framework specializzati:

    • RestAssured (Java)
    • Postman (Newman): permette di scrivere test in JavaScript, inclusi controlli di schema e campi.
    • Pytest/unittest con librerie per lavorare con JSON/XML.

La scelta del metodo dipende dalla complessità della struttura della risposta, dai requisiti di precisione della verifica e dallo stack tecnologico utilizzato. La validazione dello schema è lo standard d'oro per i test API, poiché copre tutti gli aspetti della struttura e dei tipi di dati.