Claude Code para escrever testes: o que dá para delegar e o que você precisa conferir na mão

Usar Claude Code para escrever testes funciona bem na parte mecânica: cobrir casos de borda que você listou, repetir a estrutura de um arquivo de teste existente e iterar a implementação até a suíte passar. O que não sai da sua mesa é o critério: o que o teste prova, se a assertion existe mesmo, qual a política de mock e se a suíte quebra quando o código quebra. O caminho seguro é o fluxo TDD que o doc oficial recomenda (escrever teste, rodar pra ver falhar, commitar, implementar sem mexer no teste) e medir a suíte com mutation testing antes de confiar na cobertura
Fala aí, beleza? Existe uma coisa pior do que não ter teste nenhum: ter uma suíte inteira verdinha que não prova absolutamente nada
Você pediu, o agente entregou, o CI passou, e o bug foi pra produção do mesmo jeito
Se você já roda o agente em código de verdade, a pergunta deixou de ser "dá pra usar?"
A pergunta agora é outra: o que dá pra delegar sem dor de cabeça, e o que você TEM que conferir na mão
É isso que a gente separa aqui: a divisão de trabalho linha a linha, o fluxo passo a passo com os erros comuns de cada etapa, e a técnica que mostra se a suíte que o agente escreveu pega defeito ou só finge que pega 🙂
O que dá para delegar ao Claude Code e o que fica com você
A régua é simples: o agente é ótimo em PRODUZIR teste, e você continua sendo o único responsável pelo CRITÉRIO do teste
Produção é volume, estrutura, repetição
Critério é decidir o que aquele teste precisa provar, e isso não sai de prompt nenhum
| Delegável ao agente | Fica com você (conferência na mão) |
|---|---|
| Cobrir casos de borda que você já listou no prompt, porque o trabalho aqui é traduzir uma lista em código | Definir o que o teste prova, porque o comportamento que importa vem do produto e não do arquivo |
| Repetir a estrutura de um arquivo de teste que já existe no projeto, porque é padrão visível no repo | Revisar a assertion uma por uma, porque teste sem assertion executa a linha e não verifica nada |
| Escrever a implementação até a suíte passar, fluxo que o próprio doc oficial recomenda | Decidir a política de mock, porque mock demais desacopla o teste do código real |
| Rodar a suíte e iterar sozinho no erro, porque é laço mecânico | Validar que a suíte pega defeito de verdade, porque cobertura alta não é sinônimo de suíte útil |
Essa última linha é a que mais dói, e ela tem respaldo: um estudo de replicação de 2026 conclui que cobertura e mutation score de suítes geradas por LLM só valem como sinal confiável quando dá pra assumir que o código sob teste está correto
Se o código pode já estar quebrado e o objetivo do teste é justamente expor isso, as duas métricas deixam de ser indicador confiável (estudo completo no arXiv)
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
O que deixar pronto antes de pedir teste ao agente
Antes de abrir o prompt, três coisas precisam estar de pé
1. Regra fixa de teste no CLAUDE.md:
O Claude Code lê arquivos CLAUDE.md como memória do projeto
O escopo de usuário fica em ~/.claude/CLAUDE.md e o escopo de projeto fica em ./CLAUDE.md, na raiz do repositório
Os arquivos do diretório de trabalho e dos diretórios acima são lidos no início da sessão, e os CLAUDE.md de subpastas são carregados sob demanda, conforme a documentação oficial de memória
Ou seja: o que você escreve ali é a regra que o agente já entra sabendo, sem você repetir em todo prompt
Um bloco enxuto resolve (troque pelos valores do SEU projeto):
## Testes
- Framework de teste do projeto: <o que você usa>
- Comando único da suíte: <o comando que roda tudo>
- Política de mock: mock só na fronteira externa, nunca em módulo interno
- Não altere arquivos de teste já commitados
Repara que a política de mock entra aqui como REGRA, não como pedido solto no chat
2. Suíte rodando por um comando só:
Se rodar a suíte no seu projeto exige três comandos e uma variável de ambiente na mão, o agente não vai fechar o laço sozinho
Um comando único é o que transforma "escreveu teste" em "escreveu, rodou, viu falhar, corrigiu"
Se você ainda está montando essa base, vale ver antes o fluxo completo até o deploy pra ter o projeto redondo antes de meter agente em cima da suíte
3. Saber qual comportamento você quer provar:
Esse é o pré-requisito que ninguém escreve no checklist e é o mais importante
"Escreve testes pra esse arquivo" é um pedido sem critério, e o resultado costuma ser um monte de teste que executa código sem verificar nada
"Prova que quando o usuário está deslogado a função não devolve dado de outro usuário" é um pedido com critério
Passo a passo: o fluxo de teste com o Claude Code
O fluxo abaixo segue o padrão que a página oficial de boas práticas lista entre os workflows recomendados: write tests, commit; code, iterate, commit
A lógica por trás é a mesma do TDD de sempre: se o teste nunca falhou, você não sabe se ele testa alguma coisa
- Escreva os testes primeiro e rode pra confirmar que eles falham. Esse é o passo que separa teste de decoração: um teste que já nasce verde, antes da implementação existir, é um teste que não olha pro código. Erro comum: pular a rodada de confirmação e ir direto pedir a implementação, aí você nunca vê o vermelho e perde a única prova de que a assertion morde
- Commite os testes. Com os testes versionados, existe um contrato fixo que dá pra comparar depois. Erro comum: deixar teste e implementação no mesmo commit, o que apaga a fronteira entre "o que eu queria provar" e "o que o agente fez pra passar"
- Peça a implementação instruindo o agente a NÃO modificar os testes. O doc oficial é explícito nisso: peça código que passe nos testes e diga pra ele não mexer nos testes. Erro comum: não dizer nada e depois descobrir que a assertion foi "ajustada" pra bater com o comportamento que saiu, o que inverte o sentido inteiro do exercício
- Escope o prompt igual o doc exemplifica. O exemplo que está na própria documentação é curto e cirúrgico:
write a test for foo.py covering the edge case where the user is logged out. avoid mocks.
Repara nos três elementos: arquivo alvo, caso de borda específico e restrição de mock explícita. Erro comum: pedir "cobertura" em vez de pedir um comportamento, porque cobertura o agente entrega fácil e ela não garante nada
- Separe papéis com o padrão Escritor/Revisor. O doc oficial descreve esse padrão com duas instâncias: uma escreve os testes, a outra escreve o código que precisa passar neles. Funciona porque a instância que implementa não tem no contexto o raciocínio de quem escreveu a assertion, então ela precisa satisfazer o contrato, não a própria narrativa. Erro comum: fazer tudo na mesma sessão e achar que é a mesma coisa
- Fixe o papel em um subagente. Subagentes personalizados do Claude Code são arquivos Markdown com frontmatter YAML, cada um com system prompt, permissões de ferramenta e modelo próprios. Ficam em
.claude/agents/(nível projeto, versionado com o time) ou~/.claude/agents/(nível usuário, vale em todos os projetos), conforme a documentação oficial de subagentes
---
name: escritor-de-testes
description: Escreve testes a partir do comportamento descrito, sem mock de módulo interno
tools: Read, Grep, Glob, Write
---
Você escreve testes. Nunca escreve implementação.
Cada teste precisa ter assertion explícita sobre o comportamento pedido.
Se o comportamento não estiver claro, pergunte antes de escrever.
Aquele campo de permissões de ferramenta merece atenção de verdade, e não só por causa de teste: dar acesso amplo pro agente é decisão de segurança, e o vazamento no Claude Code é um bom lembrete de por que isso importa. Erro comum: criar o subagente e não versionar no projeto, aí a regra vale só na sua máquina e o time inteiro segue no improviso
- Rode a suíte automaticamente com hook. O evento
PostToolUsedispara depois que a chamada de ferramenta tem sucesso, e o matcherEdit|Writelimita às ferramentas de edição de arquivo (guia de hooks)
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "<comando da sua suíte>"
}
]
}
]
}
}
Dois detalhes que evitam surpresa: o timeout padrão é de 60 segundos e é configurável por hook, e hooks que casam com o mesmo evento rodam em paralelo. Erro comum: apontar o hook pra suíte inteira de um projeto grande e estourar o tempo a cada edição, quando o certo é apontar pro subconjunto rápido
Teste perpetuamente verde: como identificar e como prevenir
O sintoma:
A suíte está toda verde
Ela ficou verde na semana passada, ficou verde depois do refactor, ficou verde depois daquele bug que foi parar em produção
Esse é o cheiro clássico do teste perpetuamente verde: uma suíte que não acusa nada porque não é capaz de acusar nada
As causas:
Duas, principalmente
A primeira é assertion ausente: o teste chama a função, o código executa, ninguém verifica o resultado
A segunda é mock que desacopla o teste do código real: você não está testando a sua lógica, está testando o mock que você mesmo escreveu
Praticantes descrevem exatamente esse quadro: suíte que executa toda linha do código e mesmo assim deixa passar quase todo defeito que aparece depois
Cobertura ali virou métrica de execução, não de verificação
A solução, na prática:
Mutation testing
Que é isso? A técnica é injetar bug de propósito no código (trocar um > por >=, inverter um booleano, remover uma linha) e ver se a suíte quebra
Se você estragou o código e todo mundo continua verde, o teste não estava testando aquilo
A técnica está listada no Technology Radar da Thoughtworks como forma de avaliar a qualidade real da suíte
E dá pra fazer uma versão manual disso hoje, sem ferramenta nenhuma, logo depois que o agente entregar a suíte:
- Escolha uma função crítica que os testes novos cobrem
- Estrague ela de propósito: inverta a condição, troque o operador, apague a linha que faz o trabalho
- Rode o comando único da suíte e olhe o resultado
- Se ficou vermelho, ótimo, a assertion morde. Se continuou verde, aquele teste é decoração e volta pra fila
- Desfaça a alteração e repita na próxima função que importa
É chato? É. Mas é o único jeito de sair do "passou no CI" e chegar em "a suíte pega defeito"
A prevenção:
Mais barata que o remédio, e são só duas regras
Rodar o teste ANTES da implementação existir, pra ver o vermelho
E não deixar o agente mexer nos testes depois de commitados
Um contexto honesto pra fechar: a própria Anthropic avalia formalmente a tendência dos seus modelos de burlar teste (reward hacking) em tarefas de código
O system card usa versões com hidden tests (testes fuzzados a partir dos testes visíveis ao modelo) e classificadores, e a taxa de hack é a fração de problemas em que a solução passa nos testes visíveis mas falha nos escondidos
Se o método de avaliação de quem faz o modelo é esconder teste, dá pra imaginar por que "passou na suíte" não é veredito final
Quando confiar mais no teste gerado (e quando desconfiar)
Cenário 1: regressão, com o código assumido correto
Aqui é onde o agente brilha
O comportamento atual é o comportamento desejado, e o que você quer é congelar isso pra saber quando alguém quebrar
Nesse cenário, o estudo de replicação de 2026 aponta que cobertura e mutation score funcionam como sinal
É trabalho de volume, estrutura repetida, muitos casos parecidos, exatamente o tipo de coisa que sai barata e rápida
Cenário 2: caça a bug, com o código possivelmente quebrado
Aqui a coisa vira
Se o código pode já estar com bug e o objetivo do teste é EXPOR esse bug, as duas métricas deixam de ser indicador confiável, segundo o mesmo estudo
Faz sentido quando você para pra pensar: teste gerado a partir do código existente tende a documentar o comportamento existente
Se o comportamento existente é o bug, você acabou de escrever um teste que protege o bug 😛
Nesse cenário, o comportamento esperado precisa vir de você, do ticket, da spec, da reprodução do usuário, nunca do arquivo que está sob suspeita
Como os times da Anthropic fazem internamente
A Anthropic publicou como os times dela usam o Claude Code, e dois relatos casam direto com essa divisão
O time de Security Engineering trocou o ciclo de "design doc, código porco, refatora, desiste dos testes" por pedir pseudocódigo, conduzir o agente em TDD e revisar de tempos em tempos
O time de Product Design usa o Claude Code para escrever testes de features novas, com comentários automatizados de Pull Request via GitHub Actions (relato completo no blog da Anthropic)
Nos dois casos tem a mesma pegada: o agente produz, o humano conduz e revisa em intervalo definido
O próximo passo
A régua que vale a pena levar daqui é uma frase só: delegue a PRODUÇÃO do teste, nunca delegue o CRITÉRIO do que o teste prova
O agente escreve rápido, cobre caso de borda que você listou, repete estrutura sem reclamar e itera até a suíte fechar
O que ele não faz é decidir o que precisa ser verdade no seu sistema
Três passos concretos pra sair da leitura e ir pro repo:
- Escrever a política de teste no
CLAUDE.mddo projeto (framework, comando da suíte, política de mock, proibição de alterar teste commitado) - Rodar um ciclo TDD completo em uma feature pequena, com os testes commitados antes da implementação
- Estragar uma função de propósito e rodar a suíte, do jeito manual que mostrei ali em cima, antes de confiar na cobertura
Sobre modelo: o Claude Opus 5 foi lançado em 24 de julho de 2026, é o Opus atual da Anthropic e o padrão no plano Claude Max, além de ser o modelo mais forte disponível no Claude Pro
Modelo melhor ajuda, claro, mas nenhum deles substitui você olhando a assertion e perguntando "isso aqui quebra se o código quebrar?"
Testa aí e me conta como foi, até o próximo post! =)
Perguntas frequentes
Teste gerado pelo Claude Code com 100% de cobertura já é garantia de qualidade?
Não. Um estudo de replicação de 2026 mostra que cobertura e mutation score só são sinal confiável quando o código sob teste já está correto. Se o objetivo é expor um bug que pode já existir, essas métricas deixam de servir como indicador, e o jeito de checar de verdade é rodar mutation testing.
O que é mutation testing e por que ele importa pra validar teste feito por IA?
É a técnica de injetar bug de propósito no código (trocar um operador, inverter um booleano, remover uma linha) e ver se a suíte quebra. Importa porque cobertura mede execução, não verificação: se você estraga a função e todo mundo continua verde, aquele teste não estava testando aquilo. Dá pra fazer na mão logo depois que o agente entrega a suíte, função crítica por função crítica.
Como evitar que o Claude Code exagere no uso de mock ao escrever testes?
Trate a política de mock como regra fixa no CLAUDE.md do projeto, não como pedido solto no chat. A própria documentação oficial usa ‘avoid mocks’ como exemplo de prompt bem escopado, junto com o arquivo alvo e o caso de borda específico.
Dá pra automatizar a suíte rodando sozinha a cada edição do Claude Code?
Sim, via hook do evento PostToolUse, que dispara depois que uma ferramenta roda com sucesso. Um matcher como Edit|Write limita o disparo a ferramentas de edição de arquivo. Aponte o hook pro subconjunto rápido da suíte, não pra suíte inteira de um projeto grande, pra não estourar o tempo a cada edição.
O que é o padrão Escritor/Revisor para escrever testes com o Claude Code?
É o fluxo descrito na documentação oficial em que uma instância do Claude escreve os testes e outra instância, separada, escreve o código que precisa passar neles. A separação evita que a mesma sessão ajuste teste e implementação ao mesmo tempo, preservando a fronteira entre o que se queria provar e o que foi entregue.
Vale a pena usar o Claude Opus 5 especificamente para escrever testes?
O Opus 5 é o modelo Opus atual da Anthropic, padrão no plano Claude Max e o mais forte disponível no Claude Pro. Isso não substitui a conferência na mão: nenhum modelo garante sozinho que a suíte gerada tem critério e pega defeito real.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
Bateu o limite de uso do Claude Code? Como retomar a tarefa sem refazer tudo
Bateu o limite de uso do Claude Code? Veja como retomar a tarefa de onde parou com /usage, CLAUDE.md e --continue, sem refazer nada.
Como pagar o Claude Code no Brasil: cartão, dólar, IOF e quanto fica em reais
Claude Code preço Brasil na prática: câmbio, IOF de 3,5% e quanto fica na fatura. Planos Pro e Max convertidos em reais e como pagar com cartão.
Como instalar uma skill no Claude Code: passo a passo
Saiba como instalar skill no Claude Code: use a pasta pessoal para todas as sessões ou a pasta de projeto para versionar. Frontmatter YAML é obrigatório.
