Pular para o conteúdo
SDETRole
SDETRole

Aprender / Cheat sheet

Cheat sheet de HTTP para testes de API

O que um tester precisa de HTTP em uma folha só: quais métodos são seguros e idempotentes, qual código de status cada situação deve retornar, os headers que valem uma asserção, as flags de cURL que você vai usar todo dia e um checklist para cada resposta.

Conferido com Semântica HTTP conforme a RFC 9110; Problem Details conforme a RFC 9457

Métodos

MétodoUsoSeguroIdempotente
GET Ler um recurso ou uma coleção Sim Sim
HEAD Como o GET, só os headers Sim Sim
OPTIONS Métodos permitidos; preflight de CORS Sim Sim
POST Criar, ou executar uma ação Não Não
PUT Substituir o recurso inteiro Não Sim
PATCH Alterar alguns campos Não Não garantido
DELETE Remover um recurso Não Sim

Idempotente significa que repetir a requisição deixa o servidor no mesmo estado. A resposta pode mudar: um segundo DELETE pode retornar 404.

Códigos de status a verificar

CódigoSignificadoTeste típico
200 OK Sucesso com corpo GET de um recurso existente
201 Created Recurso criado POST com dados válidos; confira o header Location
204 No Content Sucesso, corpo vazio DELETE, ou PUT que não retorna nada
301 / 308 Movido permanentemente URL antiga redireciona; o 308 mantém o método
304 Not Modified A cópia em cache continua válida GET com If-None-Match: <etag>
400 Bad Request Requisição malformada JSON inválido, tipos errados
401 Unauthorized Não autenticado Token ausente ou expirado
403 Forbidden Autenticado, mas sem permissão Acessar o recurso de outro usuário
404 Not Found Recurso inexistente Id desconhecido (ou ocultando um que você não pode ver)
405 Method Not Allowed Método errado para esta URL DELETE em um endpoint somente leitura
409 Conflict Conflita com o estado atual E-mail duplicado, versão desatualizada
415 Unsupported Media Type Formato do corpo não aceito Enviar text/plain para um endpoint JSON
422 Unprocessable Content JSON válido, valores inválidos Erros de validação de regras de negócio
429 Too Many Requests Rate limit atingido Rajada de requisições; confira o Retry-After
500 Internal Server Error Bug no servidor Nunca é esperado: é sempre um defeito
502 / 503 / 504 Falha upstream, indisponível, timeout Dependência fora do ar; confira os retries

Headers que vale verificar

HeaderExemploPor quê
Content-Type application/json; charset=utf-8 O formato da resposta corresponde ao corpo
Accept application/json O cliente pede um formato; espere 406 se não for suportado
Authorization Bearer eyJhbGciOi… Autenticação por token; ausente → 401
Location /api/orders/1043 Enviado no 201 Created e em redirecionamentos
Cache-Control no-store Dados pessoais ou sensíveis não podem ir para cache
ETag / If-None-Match "a1b2c3" GET condicional → 304
Retry-After 30 Enviado com 429 ou 503
Set-Cookie sid=…; HttpOnly; Secure; SameSite=Lax Cookies de sessão precisam de HttpOnly e Secure
Access-Control-Allow-Origin https://app.example.com CORS: nunca * em requisições com credenciais

cURL

TarefaCódigo
Mostrar status e headers curl -i https://api.example.com/users/1
Trace completo da requisição/resposta curl -v https://api.example.com/users/1
POST com JSON
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"email":"qa@example.com"}'
Token Bearer curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me
Basic auth curl -u user:pass https://api.example.com/admin
Seguir redirecionamentos curl -L https://example.com/old
Só o código de status curl -s -o /dev/null -w '%{http_code}' https://api.example.com/health
Falhar em 4xx/5xx em scripts curl --fail-with-body https://api.example.com/health

No cmd do Windows, troque as aspas simples por aspas duplas e escape as internas.

Checklist para cada resposta

VerificaçãoExemplo
Código de status Exatamente 201, e não "qualquer 2xx"
Schema do corpo Campos obrigatórios presentes, tipos corretos, nenhum campo sensível a mais
Valores A entrada ecoada confere; campos calculados (totais, datas) estão certos
Headers Content-Type, Location, Cache-Control
Formato de erro Formato de erro consistente (ex.: problem details da RFC 9457) com uma mensagem útil
Efeitos colaterais O registro existe, ou não existe, quando você faz um GET dele
Tempo de resposta Dentro do orçamento combinado

Pratique e aprofunde

Mais cheat sheets

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →