Sobes.tech
Junior

Como vais verificar que retornaste os campos corretos?

sobes.tech IA

Resposta da IA

Verificar que apenas os campos necessários são devolvidos pode ser feito de várias formas, dependendo do tipo de resposta (JSON, XML, etc.), da ferramenta utilizada e do nível de teste (API, E2E):

  1. Validação do esquema de resposta (Schema Validation):

    • A forma mais confiável.
    • Um esquema (JSON Schema, XML Schema) que descreve a estrutura e os tipos de dados esperados é criado.
    • A resposta é validada contra esse esquema.
    • Garante a presença/ausência de campos, seus tipos e, opcionalmente, expressões regulares para os valores.
    // Exemplo de JSON Schema para uma resposta de usuário
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Verificação direta de presença/ausência de campos e valores (Field Presence and Value Assertion):

    • Análise da resposta.
    • Verificação de que cada campo esperado está presente.
    • Verificação de que campos indesejados não estão presentes.
    • Verificação dos tipos de dados dos campos.
    • Verificação dos valores dos campos (em relação a um valor específico, expressão regular, intervalo, etc.).
    # Exemplo de verificação de resposta JSON em Python (usando 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ção de presença de campos
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Verificação de que campos indesejados não estão presentes (por exemplo, 'password')
        assert "password" not in data
    
        # Verificação de tipos de campos
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Verificação de valores (exemplo)
        assert data["id"] > 0
        assert "@" in data["email"]  # Verificação simples do formato de email
    
  3. Comparação com referência (Golden Master / Snapshot Testing):

    • Uma resposta correta (referência) é salva.
    • A resposta atual é comparada com a referência.
    • Útil para verificar a estabilidade da estrutura, mas menos flexível a mudanças esperadas nos dados.
  4. Uso de bibliotecas ou frameworks especializados:

    • RestAssured (Java)
    • Postman (Newman): permite escrever testes em JavaScript, incluindo validações de esquema e campos.
    • Pytest/unittest com bibliotecas para trabalhar com JSON/XML.

A escolha do método depende da complexidade da estrutura da resposta, dos requisitos de precisão na validação e da pilha tecnológica utilizada. A validação de esquema é o padrão ouro para testes de API, pois cobre todos os aspectos da estrutura e dos tipos de dados.