QA Learning / API

Módulo 2: Contrato da resposta

Os campos certos, com os tipos certos, no formato certo

Teoria

Status 200 não quer dizer "resposta correta". O contrato é a promessa de forma da resposta: quais campos existem, de que tipo, em que formato. Quebra de contrato é dos bugs mais chatos, porque o consumidor da API só descobre em produção.

  • Campo presente: 'preco' in obj ou obj.preco !== undefined.
  • Tipo certo: typeof obj.preco === 'number', typeof obj.nome === 'string', typeof obj.ativo === 'boolean', Array.isArray(obj.itens).
  • Formato: data YYYY-MM-DD → /^\d{4}-\d{2}-\d{2}$/.test(obj.data_pedido).
  • Consistência entre rotas: o mesmo recurso deve ter o mesmo shape na lista e no item individual.

Atenção: um check vermelho aqui pode ser um bug da API, não do seu teste. Se o enunciado descreve o contrato esperado e a verificação falha, você achou algo.

Exemplos

Prática

Complete e clique Rodar. Alguns destes vão ficar vermelhos de propósito: leia o enunciado.

Área livre

Olhar de QA

Contrato é o tipo de defeito que a interface esconde e que explode meses depois, na máquina de outra pessoa. Quando um check de contrato ficar vermelho, resista ao reflexo de ajustar o teste até ele passar: se o enunciado descreve o contrato certo, você achou um defeito. E lembre-se de verificar o campo que veio a mais: um custo interno ou um hash de senha que escapou para a resposta pública é o achado mais valioso que essa verificação costuma produzir.

Terminou este módulo? Marque: o ✓ aparece no índice da trilha e a barra de progresso anda no começo do site. Fica salvo só no seu navegador.