Pular para o conteúdo
Skillpedia
Testes107 mil · #363

test-driven-development

Ajuda seu agente a escrever código baseado em testes. É útil para garantir que o código funcione corretamente, corrigir bugs e provar que as mudanças são válidas.

O que ela faz

Essa ferramenta ajuda a criar código de forma mais confiável. Ela funciona escrevendo um teste que falha primeiro, depois escrevendo o código mínimo para fazer o teste passar, e por fim, limpando o código.

Quando usar

  • ✓Ao criar uma nova funcionalidade.
  • ✓Ao corrigir um erro.
  • ✓Ao modificar um código que já existe.

Exemplo do que pedir para a IA

“Escreva um teste para a função que calcula o fatorial e depois implemente a função.”

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/addyosmani/agent-skills/blob/main/skills/test-driven-development/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/addyosmani/agent-skills/blob/main/skills/test-driven-development/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 sabe que vai falhar. Depois, cria o código mais simples possível para que esse teste passe. Por fim, você revisa e melhora o código, garantindo que os testes continuem passando.

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 addyosmani/agent-skills --skill test-driven-development

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/test-driven-development/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.

Desenvolvimento Guiado por Testes

Visão Geral

Escreva um teste que falha antes de escrever o código que o faz passar. Para correções de bugs, reproduza o bug com um teste antes de tentar corrigi-lo. Testes são provas — "parece certo" não é feito. Uma base de código com bons testes é um superpoder para um agente de IA; uma base de código sem testes é um passivo.

Quando Usar

  • Implementando qualquer nova lógica ou comportamento
  • Corrigindo qualquer bug (o Padrão Prove-It)
  • Modificando funcionalidade existente
  • Adicionando tratamento de casos extremos
  • Qualquer alteração que possa quebrar o comportamento existente

Quando NÃO usar: Mudanças puramente de configuração, atualizações de documentação ou mudanças de conteúdo estático que não tenham impacto comportamental.

Relacionado: Para mudanças baseadas em navegador, combine TDD com verificação em tempo de execução usando Chrome DevTools MCP — veja a seção Testes de Navegador abaixo.

Descubra a Stack Primeiro

O ciclo TDD é universal; os comandos não são. Antes de escrever o primeiro teste, descubra como este repositório testa e use seus comandos para cada etapa RED, GREEN e de verificação:

  • Linguagem e sistema de build — package.json, pom.xml/build.gradle, pyproject.toml, go.mod, Cargo.toml, Gemfile, um Makefile
  • Wrappers registrados — prefira ./gradlew, ./mvnw, make test, ou um script de repositório em vez de ferramentas instaladas globalmente
  • Framework de teste e configuração — e como ele executa um único teste focado versus o conjunto completo
  • Convenções existentes — onde os testes residem, como os arquivos são nomeados, quais padrões os testes vizinhos seguem
  • Comandos documentados — README, CONTRIBUTING e fluxos de trabalho de CI mostram os comandos que realmente controlam as mesclagens

Execute o comando de teste focado do repositório durante o loop e seu comando de conjunto completo antes da conclusão. Nunca assuma um padrão como npm test — um projeto Gradle, Cargo ou pytest tem seu próprio equivalente.

Os exemplos abaixo usam TypeScript para ilustração; o fluxo de trabalho é idêntico em qualquer linguagem depois que você descobrir as ferramentas próprias do projeto.

O Ciclo TDD

    RED                GREEN              REFACTOR
 Write a test    Write minimal code    Clean up the
 that fails  ──→  to make it pass  ──→  implementation  ──→  (repeat)
      │                  │                    │
      ▼                  ▼                    ▼
   Test FAILS        Test PASSES         Tests still PASS

Etapa 1: RED — Escreva um Teste que Falha

Escreva o teste primeiro. Ele deve falhar. Um teste que passa imediatamente não prova nada.

// RED: This test fails because createTask doesn't exist yet
describe('TaskService', () => {
  it('creates a task with title and default status', async () => {
    const task = await taskService.createTask({ title: 'Buy groceries' });

    expect(task.id).toBeDefined();
    expect(task.title).toBe('Buy groceries');
    expect(task.status).toBe('pending');
    expect(task.createdAt).toBeInstanceOf(Date);
  });
});

Etapa 2: GREEN — Faça Passar

Escreva o código mínimo para fazer o teste passar. Não exagere na engenharia:

// GREEN: Minimal implementation
export async function createTask(input: { title: string }): Promise<Task> {
  const task = {
    id: generateId(),
    title: input.title,
    status: 'pending' as const,
    createdAt: new Date(),
  };
  await db.tasks.insert(task);
  return task;
}

Etapa 3: REFACTOR — Limpe

Com os testes verdes, melhore o código sem alterar o comportamento:

  • Extraia lógica compartilhada
  • Melhore a nomenclatura
  • Remova duplicação
  • Otimize se necessário

Execute os testes após cada etapa de refatoração para confirmar que nada quebrou.

O Padrão Prove-It (Correções de Bugs)

Quando um bug é relatado, não comece tentando corrigi-lo. Comece escrevendo um teste que o reproduza.

Bug report arrives
       │
       ▼
  Write a test that demonstrates the bug
       │
       ▼
  Test FAILS (confirming the bug exists)
       │
       ▼
  Implement the fix
       │
       ▼
  Test PASSES (proving the fix works)
       │
       ▼
  Run full test suite (no regressions)

Exemplo:

// Bug: "Completar uma tarefa não atualiza o timestamp completedAt"

// Etapa 1: Escreva o teste de reprodução (ele deve FALHAR)
it('define completedAt quando a tarefa é completada', async () => {
  const task = await taskService.createTask({ title: 'Test' });
  const completed = await taskService.completeTask(task.id);

  expect(completed.status).toBe('completed');
  expect(completed.completedAt).toBeInstanceOf(Date);  // Isso falha → bug confirmado
});

// Etapa 2: Corrija o bug

…
Perguntas frequentes

O que é o ciclo 'Vermelho-Verde-Refatorar'?

É o processo: 1. Escrever um teste que falha (Vermelho). 2. Escrever o código mínimo para o teste passar (Verde). 3. Melhorar o código sem quebrar os testes (Refatorar).

Como isso ajuda a corrigir bugs?

Você escreve um teste que mostra o erro exato. Se o teste falhar, você sabe que o bug existe. Depois, corrige o código e o teste deve passar, provando que o erro foi corrigido.

Quando NÃO devo usar essa ferramenta?

Não use para mudanças simples como atualizar documentação ou configurações que não afetam como o programa funciona.

Detalhes

Descrição original do autor

Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality. Use when asked to add tests to a function, fix a bug in it or change its behavior, even when the code is pasted inline and the request

repo: addyosmani/agent-skills

Popularidade

Estrelas no GitHub
107 mil
Posição no ranking
#363
Licença
MIT
Atualizada em
13/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas