Ir para o conteúdo principal

O que saber para testes de API?

Como Analistas de Qualidade, nosso trabalho vai muito além da interface do usuário. Entender e testar as APIs (Application Programming Interfaces) é fundamental, pois elas são a espinha dorsal da comunicação entre diferentes sistemas. Testar APIs nos permite garantir que nossos sistemas não só funcionem, mas que também se comuniquem de forma robusta e segura.

Aqui estão algumas dicas essenciais para você começar a explorar o mundo dos testes de API:

Dicas Essenciais para Testes de API
  • 🚦 1. Códigos de Resposta (Status Codes):
    • Sempre valide os códigos de resposta das requisições (ex: 200 OK201 Created400 Bad Request404 Not Found500 Internal Server Error).

    • As APIs nunca devem retornar 500 (Internal Server Error) para chamadas malformadas ou fora do padrão. Deve haver um código de resposta tratado (ex: 400 Bad Request404 Not Found) explicando claramente o motivo pelo qual a requisição não foi completada.

    📝 2. Validação de Contrato da API:
    • Realize o teste de contrato da API. A API deve validar rigorosamente os tipos de dados e formatos dos campos passados no body da requisição.

    • Exemplos: Um campo para "data de nascimento" não deve aceitar letras; um campo para "UF" não deve aceitar números.

    ✅ 3. Obrigatoriedade dos Campos:
    • Verifique a obrigatoriedade dos campos. Se um campo for obrigatório, a API não deve permitir que ele seja enviado em branco ou nulo, retornando uma mensagem tratada informando sobre a ausência ou invalidade do valor.

    🚫 4. Tratamento de Registros Inexistentes:
    • Tente excluir, atualizar ou consultar registros que não existem no banco de dados. A API deve retornar uma mensagem tratada indicando que o registro não foi localizado (ex: 404 Not Found).

    ⏱️ 5. Comportamento em Tentativas Sucessivas (Rate Limiting/Flood):
    • Realize tentativas sucessivas de chamada no mesmo endpoint com intervalos curtos entre as requisições. Observe o comportamento da API para identificar se há mecanismos de rate limiting ou throttling e como ela lida com esse tipo de "inundação" de requisições.

    🔑 6. Autenticação e Autorização:
    • Teste a API com diferentes níveis de permissão de usuário (admin, usuário comum, sem autenticação).

    • Verifique se usuários não autorizados conseguem acessar recursos restritos.

    🛡️ 7. Injeção de Dados (Data Injection):
    • Tente enviar dados maliciosos ou inesperados nos parâmetros da requisição (ex: código SQL em campos de texto, scripts em campos de entrada) para verificar a robustez da API contra ataques comuns.

    📊 8. Performance e Estresse:
    • Use ferramentas para simular um grande volume de usuários ou requisições simultâneas para avaliar a performance da API sob carga. Verifique tempos de resposta e se ela se mantém estável.

    📄 9. Paginação e Filtros:
    • Se a API tiver recursos de paginação, teste os parâmetros de limite, offset e número da página.

    • Verifique se os filtros retornam os dados esperados e se a combinação de múltiplos filtros funciona corretamente.

    🔄 10. Consistência dos Dados:
    • Realize operações de criação, leitura, atualização e exclusão (CRUD) e verifique se os dados estão consistentes no banco de dados e são retornados corretamente em outras chamadas.

    ⬆️ 11. Versionamento da API:
    • Se a API possuir versionamento (ex: /v1//v2/), teste se as versões antigas ainda funcionam conforme o esperado e se novas versões introduzem as mudanças corretas sem quebrar a compatibilidade (se for o caso).

    Resumo Visual: Pontos Chave em Testes de API

     

    • 🚥 Status Codes: Respostas claras e corretas.

    • ✍️ Contrato: Dados válidos e formatos esperados.

    • ☑️ Obrigatoriedade: Campos essenciais preenchidos.

    • 👻 Inexistentes: Tratamento adequado para dados não encontrados.

    • 💨 Performance: Respostas rápidas e sem falhas sob carga.

    • 🔐 Segurança: Autenticação e autorização robustas.

    • 💉 Proteção: Resistência contra injeção de dados.

    • 📏 Limites: Paginação e filtros funcionando.

    • ✨ Consistência: Dados sempre corretos.

    • 🗓️ Versão: Compatibilidade entre versões da API.