test-driven-development
Ajuda seu agente a escrever testes que guiam o desenvolvimento de novas funcionalidades ou correções de bugs.
O que ela faz
Essa ferramenta ajuda a escrever código de forma mais confiável. Você escreve um teste que descreve o que você quer que o código faça, depois faz o código funcionar para passar nesse teste.
Quando usar
- ✓Ao adicionar uma nova funcionalidade.
- ✓Ao corrigir um erro.
- ✓Quando você quer ter certeza que o código faz o que deveria.
Exemplo do que pedir para a IA
“Escreva um teste que falha 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
Mensagem pronta para colar
Como funciona
Primeiro, você escreve um teste que sabe que vai falhar. Depois, escreve o mínimo de código necessário para que esse teste passe. Por fim, você pode limpar o código sem quebrar o teste.
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 test-driven-developmentOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/test-driven-development/SKILL.md -o SKILL.mdConteú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 (TDD)
Visão Geral
Escreva o teste primeiro. Veja ele falhar. Escreva o código mínimo para passar.
Princípio central: Se você não viu o teste falhar, você não sabe se ele testa a coisa certa.
Violar a letra das regras é violar o espírito das regras.
Quando Usar
Use para mudanças de comportamento onde um teste repetível pode demonstrar o requisito ou reproduzir o bug. Inspecione o executor de testes do repositório e a cobertura existente primeiro. Para cópias, saídas geradas ou configurações de baixo impacto, use a validação focada apropriada em vez de fabricar um teste unitário.
Preserve o trabalho existente
Escreva a regressão falha antes do reparo, quando viável, e verifique se ela falha pelo motivo esperado. Se a implementação já existe, preserve-a e adicione testes de caracterização/regressão. Não exclua trabalho do usuário, reinicie um branch ou reescreva código funcionando para reconstruir um histórico ideal de "teste primeiro". Declare honestamente se o teste precedeu a correção.
Red-Green-Refactor
digraph tdd_cycle {
rankdir=LR;
red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#ffcccc"];
verify_red [label="Verify fails\ncorrectly", shape=diamond];
green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#ccffcc"];
verify_green [label="Verify passes\nAll green", shape=diamond];
refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#ccccff"];
next [label="Next", shape=ellipse];
red -> verify_red;
verify_red -> green [label="yes"];
verify_red -> red [label="wrong\nfailure"];
green -> verify_green;
verify_green -> refactor [label="yes"];
verify_green -> green [label="no"];
refactor -> verify_green [label="stay\ngreen"];
verify_green -> next;
next -> red;
}
RED - Escreva o Teste Falho
Escreva um teste mínimo mostrando o que deveria acontecer.
<Bom> ```typescript test('succeeds on the third attempt', async () => { let attempts = 0; const operation = async () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; };const result = await retryOperation(operation);
expect(result).toBe('success'); expect(attempts).toBe(3); });
Nome claro, testa comportamento real, uma coisa
</Bom>
<Ruim>
```typescript
test('retry works', async () => {
const mock = jest.fn()
.mockRejectedValueOnce(new Error())
.mockRejectedValueOnce(new Error())
.mockResolvedValueOnce('success');
await retryOperation(mock);
expect(mock).toHaveBeenCalledTimes(3);
});
Nome vago, testa mock, não o código </Ruim>
Requisitos:
- Um comportamento
- Nome claro
- Código real (sem mocks, a menos que inevitável)
Verifique RED - Veja Ele Falhar
OBRIGATÓRIO. Nunca pule.
npm test path/to/test.test.ts
Confirme:
- Teste falha (não erros)
- Mensagem de falha é esperada
- Falha porque a funcionalidade está faltando (não erros de digitação)
Teste passa? Determine se ele já caracteriza o comportamento necessário. Para uma regressão, prove que ele detecta o defeito usando a revisão anterior ou uma mudança controlada isolada; não altere uma asserção correta apenas para forçar o vermelho.
Teste dá erro? Corrija o erro, reexecute até que ele falhe corretamente.
GREEN - Código Mínimo
Escreva o código mais simples para passar o teste.
<Bom> ```typescript async function retryOperation<T>(fn: () => Promise<T>): Promise<T> { for (let i = 0; i < 3; i++) { try { return await fn(); } catch (e) { if (i === 2) throw e; } } throw new Error('unreachable'); } ``` Apenas o suficiente para passar </Bom> <Ruim> ```typescript async function retryOperation<T>( fn: () => Promise<T>, options?: { maxRetries?: number; backoff?: 'linear' | 'exponential'; onRetry?: (attempt: number) => void; } ): Promise<T> { // YAGNI } ``` Superengenharia </Ruim>Não adicione funcionalidades, refatore outro código ou "melhore" além do teste.
Verifique GREEN - Veja Ele Passar
OBRIGATÓRIO.
npm test path/to/test.test.ts
Confirme:
- Teste passa
- Outros testes ainda passam
- Saída limpa (sem erros, avisos)
Teste falha? Corrija o código, não o teste.
Outros testes falham? Corrija agora.
REFACTOR - Limpeza
Após o verde apenas:
- Remova duplicação
- Melhore nomes
- Extraia helpers
Mantenha os testes verdes. Não adicione comportamento.
Repita
Próximo teste falho para a próxima funcionalidade.
Bons Testes
| Qualidade | Bom | Ruim |
|---|
…
Perguntas frequentes
Por que escrever o teste antes?
Escrever o teste antes garante que você sabe exatamente o que o código precisa fazer e que o teste realmente verifica o comportamento desejado.
O que significa 'vermelho-verde-refatorar'?
É um ciclo: 'Vermelho' (escrever teste que falha), 'Verde' (escrever código mínimo para passar) e 'Refatorar' (limpar o código mantendo os testes passando).
Posso escrever o código primeiro?
É possível, mas escrever o teste primeiro ajuda a evitar erros e garante que o código atenda aos requisitos desde o início.
Detalhes
Descrição original do autor
Use a failing behavioral test to guide a feature or bug fix, then implement and refactor with relevant regression checks.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4354
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC