SkillProgramaçãoQA

Revisão de Cobertura de Testes

Avalia se os testes de um PR cobrem adequadamente comportamentos novos, edge cases e cenários de falha. Use ao revisar PRs que adicionam ou modificam lógica de negócio, verificando também a robustez dos testes.

Ações
PerfilDev
ProfundidadeMédia
IdiomaInglês (skill original)
Objetivo

Em uma frase.

Avaliar se os testes do PR cobrem adequadamente o comportamento novo ou modificado — verificando fluxos principais, edge cases e cenários de falha — e julgar se os testes existentes são robustos ou frágeis.

Aplicação

Quando
faz sentido.

Usar
  • Como etapa de revisão de testes de qualquer PR que adiciona ou modifica lógica de negócio.
  • Quando há suspeita de que testes foram escritos só para aumentar o percentual de cobertura.
  • Quando o PR altera código em módulos historicamente propensos a regressão.
Não usar
  • Para PRs de chore (formatação, configuração) sem lógica nova.
  • Para escrever os testes faltantes — use a skill writing-tests.
  • Antes de executar reviewing-logic-and-correctness — os caminhos de lógica mapeados lá são a referência aqui.
Prompt

Instruções
para a IA.

### Passo 1 — Mapeie os comportamentos novos ou modificados

Com base nos caminhos de lógica de reviewing-logic-and-correctness, liste o que precisa de cobertura: cada novo caminho de execução, cada comportamento alterado, cada edge case e cada cenário de erro. Esse mapa é a referência para avaliar suficiência.

### Passo 2 — Verifique cobertura dos fluxos principais

Para cada comportamento principal, confirme se há um teste ponta a ponta, se ele verifica o resultado correto (não só ausência de exceção) e se usa inputs representativos — não apenas o caso mais simples.

### Passo 3 — Verifique edge cases e cenários de falha

Confira testes para input nulo/vazio, valores limite, falhas de dependências externas, exceções esperadas (por tipo e mensagem) e comportamento de rollback/cleanup.

### Passos 4 e 5 — Qualidade e rastreabilidade

Sinalize testes frágeis (acoplados à implementação, dependentes de ordem, mock em excesso, assertions vagas, dependentes de timing, sem assertion). Confirme nomes que descrevem o comportamento testado. Lembre-se: cobertura se mede em comportamentos cobertos, não em percentual de linhas — 100% de line coverage com assertions vagas cria falsa segurança. Declare "Test coverage is adequate" quando estiver satisfatória.
Casos

Exemplos
de uso.

**Contexto:** um PR implementa desconto progressivo por tier de cliente.

```typescript
function calculateDiscount(orderTotal: number, customerTier: string): number {
  if (customerTier === 'gold') return orderTotal * 0.15;
  else if (customerTier === 'silver') return orderTotal * 0.10;
  else return orderTotal * 0.05;
}
```

Os testes incluídos cobrem apenas os três tiers (`gold`, `silver`, `regular`) com `orderTotal = 100`.

**Saída esperada do agente**

**Fluxos principais:** cobertos — os três branches têm teste.

**Gaps identificados:**
- **`orderTotal = 0`** (Linha 3): caso válido (pedido vazio); o desconto deve ser 0. Severidade: média.
- **`orderTotal` negativo** (Linha 3): sem validação, geraria desconto negativo (acréscimo). Severidade: média.
- **`customerTier` desconhecido ou vazio** (Linha 3): o `else` final aplica 5% para `null`, `undefined`, string vazia ou typo como `'Gold'` (case sensitive), mascarando bugs de carregamento. Severidade: alta — comportamento incorreto silencioso.

**Qualidade dos testes existentes:** robustos — orientados a comportamento, assertions específicas, nomes claros. A falha está nos edge cases, não na abordagem.
Execução

Como usar
com IA.

  1. 01Copie a skill (botão "Copiar skill para IA", no topo): o texto copiado já é a skill completa, não um resumo.
  2. 02Abra o Claude ou Claude Code e cole — a IA recebe todas as instruções e fica pronta para a tarefa.
  3. 03Prefere usar como arquivo reutilizável? Baixe o .zip e coloque o SKILL.md em .claude/skills/ (Claude Code) ou anexe o arquivo no Claude (claude.ai).