Pular para o conteúdo
Skillpedia
Testes48 mil · #4325

tdd

Ajuda seu agente a desenvolver funcionalidades ou corrigir bugs usando o método 'red-green-refactor'. É útil para testes integrados.

O que ela faz

Essa ferramenta ajuda a criar código de forma mais confiável. Ela foca em escrever testes antes do código real, garantindo que tudo funcione como esperado.

Quando usar

  • ✓Quando você quer ter certeza de que um novo recurso funciona corretamente.
  • ✓Quando você precisa corrigir um erro e quer garantir que ele não volte.
  • ✓Quando você ouve falar sobre 'red-green-refactor' e quer entender como funciona.

Exemplo do que pedir para a IA

“Escreva um teste para a funcionalidade de login e depois crie o código para que ele passe.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/tdd/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/tdd/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Primeiro, você escreve um teste que descreve o que o código deve fazer. Esse teste vai falhar porque o código ainda não existe. Depois, você escreve o mínimo de código necessário para fazer o teste passar. Por fim, você pode melhorar o código sem quebrar os testes.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill tdd

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/tdd/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Test-Driven Development

Quando Usar

Use quando este fluxo de trabalho corresponder à solicitação do usuário: Use esta habilidade para seu fluxo de trabalho documentado.

Fonte: mattpocock/skills (MIT).

Filosofia

Princípio central: Testes devem verificar o comportamento através de interfaces públicas, não de detalhes de implementação. O código pode mudar completamente; os testes não devem.

Bons testes são do tipo integração: eles exercitam caminhos de código reais através de APIs públicas. Eles descrevem o que o sistema faz, não como ele faz. Um bom teste soa como uma especificação - "o usuário pode finalizar a compra com um carrinho válido" informa exatamente qual capacidade existe. Esses testes sobrevivem a refatorações porque não se importam com a estrutura interna.

Maus testes estão acoplados à implementação. Eles simulam colaboradores internos, testam métodos privados ou verificam através de meios externos (como consultar um banco de dados diretamente em vez de usar a interface). O sinal de alerta: seu teste falha quando você refatora, mas o comportamento não mudou. Se você renomear uma função interna e os testes falharem, esses testes estavam testando a implementação, não o comportamento.

Veja tests.md para exemplos e mocking.md para diretrizes de simulação.

Anti-Padrão: Fatias Horizontais

NÃO escreva todos os testes primeiro, depois toda a implementação. Isso é "fatiamento horizontal" - tratar VERMELHO como "escrever todos os testes" e VERDE como "escrever todo o código".

Isso produz testes de má qualidade:

  • Testes escritos em massa testam comportamento imaginado, não comportamento real
  • Você acaba testando a forma das coisas (estruturas de dados, assinaturas de funções) em vez do comportamento voltado para o usuário
  • Testes se tornam insensíveis a mudanças reais - eles passam quando o comportamento falha, falham quando o comportamento está bom
  • Você corre mais rápido do que seus faróis, comprometendo-se com a estrutura de teste antes de entender a implementação

Abordagem correta: Fatias verticais via "tracer bullets". Um teste → uma implementação → repita. Cada teste responde ao que você aprendeu no ciclo anterior. Como você acabou de escrever o código, sabe exatamente qual comportamento é importante e como verificá-lo.

WRONG (horizontal):
  RED:   test1, test2, test3, test4, test5
  GREEN: impl1, impl2, impl3, impl4, impl5

RIGHT (vertical):
  RED→GREEN: test1→impl1
  RED→GREEN: test2→impl2
  RED→GREEN: test3→impl3
  ...

Fluxo de Trabalho

1. Planejamento

Ao explorar a base de código, leia CONTEXT.md (se existir) para que os nomes dos testes e o vocabulário da interface correspondam à linguagem de domínio do projeto, e respeite os ADRs na área que você está tocando.

Antes de escrever qualquer código:

  • Confirme com o usuário quais alterações na interface são necessárias
  • Confirme com o usuário quais comportamentos testar (priorize)
  • Identifique oportunidades para módulos profundos (interface pequena, implementação profunda) — execute a habilidade /codebase-design para o vocabulário e as verificações de testabilidade
  • Liste os comportamentos a serem testados (não os passos de implementação)
  • Obtenha a aprovação do usuário no plano

Pergunte: "Como deve ser a interface pública? Quais comportamentos são mais importantes de testar?"

Você não pode testar tudo. Confirme com o usuário exatamente quais comportamentos são mais importantes. Concentre o esforço de teste em caminhos críticos e lógica complexa, não em todos os casos de borda possíveis.

2. Tracer Bullet

Escreva UM teste que confirme UMA coisa sobre o sistema:

RED:   Write test for first behavior → test fails
GREEN: Write minimal code to pass → test passes

Este é o seu "tracer bullet" - prova que o caminho funciona de ponta a ponta.

3. Loop Incremental

Para cada comportamento restante:

RED:   Write next test → fails
GREEN: Minimal code to pass → passes

Regras:

  • Um teste por vez
  • Apenas código suficiente para passar no teste atual
  • Não antecipe testes futuros
  • Mantenha os testes focados no comportamento observável

4. Refatorar

Após todos os testes passarem, procure por candidatos à refatoração:

  • Extrair duplicação
  • Aprofundar módulos (mover complexidade para trás de interfaces simples)
  • Aplicar princípios SOLID onde for natural
  • Considere o que o novo código revela sobre o código existente
  • Execute os testes após cada etapa de refatoração

Nunca refatore enquanto estiver VERMELHO. Chegue ao VERDE primeiro.

Checklist Por Ciclo

[ ] Test describes behavior, not implementation
[ ] Test uses public interface only
[ ] Test would survive internal refactor
[ ] Code is minimal for this test
[ ] No speculative features added

Limitações

  • Requer a ferramenta upstream, conta, chave de API ou configuração local quando o fluxo de trabalho nomeia um.

…

Perguntas frequentes

O que é 'red-green-refactor'?

É um ciclo: 'Red' (vermelho) significa que o teste falha. 'Green' (verde) significa que o teste passa. 'Refactor' (refatorar) significa melhorar o código sem mudar o que ele faz.

Por que escrever testes antes?

Garante que você está construindo o que o usuário realmente precisa e que o código se comporta como esperado, tornando mais fácil fazer mudanças no futuro.

Posso escrever todos os testes de uma vez?

Não é recomendado. O ideal é escrever um teste, depois o código para ele passar, e repetir. Isso garante que você está testando o comportamento real e não apenas a estrutura do código.

Detalhes

Descrição original do autor

Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4325
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas