Dicas de Debug

Como Criar um Exemplo Mínimo Reproduzível de um Erro

Aprenda a reduzir um problema de programação a um exemplo mínimo reproduzível. A técnica facilita a investigação, a colaboração e a correção de erros.

Publicado em 03/11/2026
Como Criar um Exemplo Mínimo Reproduzível de um Erro
Transparência: alguns links desta página podem ser links de afiliados. Se você realizar uma compra através deles, o Dicas do JP poderá receber uma comissão, sem custo adicional para você.

Quando um erro aparece em um projeto grande, é comum tentar explicar o problema enviando muitos arquivos, dependências e trechos de código. O excesso de informações, porém, pode dificultar a investigação. Uma alternativa mais eficiente é criar um exemplo mínimo reproduzível, também conhecido pela sigla MRE, de Minimal Reproducible Example.

Esse exemplo contém apenas o necessário para demonstrar o comportamento incorreto. Com ele, fica mais fácil descobrir a causa do problema, testar hipóteses, pedir ajuda e confirmar se uma correção realmente funcionou.

O que é um exemplo mínimo reproduzível

Um exemplo mínimo reproduzível é uma versão pequena e isolada de um problema de programação. Ele deve manter as condições essenciais para que o erro continue acontecendo, mas remover partes que não influenciam o resultado.

Na prática, isso significa responder a três perguntas:

  • O que deve ser executado? O código ou comando necessário para iniciar o teste.
  • O que deveria acontecer? O resultado esperado.
  • O que acontece de fato? A saída incorreta, mensagem de erro ou comportamento inesperado.

Um bom exemplo não precisa reproduzir o sistema inteiro. Ele deve reproduzir o problema de forma consistente e compreensível.

Por que reduzir o problema ajuda na depuração

Projetos reais costumam envolver várias camadas: interface, banco de dados, bibliotecas, arquivos de configuração, serviços externos e regras de negócio. Quando tudo permanece no teste, qualquer uma dessas partes pode parecer responsável pelo erro.

Ao remover componentes desnecessários, você reduz o número de possibilidades. O processo também ajuda a perceber que alguns problemas desaparecem durante a redução. Nesse caso, o código retirado provavelmente contém uma condição importante para a falha.

O exemplo mínimo também melhora a comunicação. Outra pessoa consegue executar o caso sem precisar entender toda a arquitetura do projeto, e você pode comparar os resultados em diferentes ambientes.

Como criar um exemplo mínimo reproduzível

1. Registre o comportamento original

Antes de alterar o código, anote os passos que levam ao erro. Inclua a entrada usada, o comando executado e a saída observada. Se o problema ocorrer apenas em uma condição específica, registre essa condição também.

Por exemplo, não basta informar que uma função “retorna um valor errado”. Especifique qual entrada foi fornecida, qual resultado era esperado e qual valor foi recebido.

2. Separe a parte relacionada ao erro

Identifique o arquivo, a função ou o componente diretamente envolvido. Copie o trecho para um ambiente de teste separado, quando isso for possível. Evite começar removendo linhas aleatoriamente: primeiro procure dependências, variáveis e etapas que realmente participam do fluxo.

Se o código depende de dados externos, substitua esses dados por valores simples e controlados. Isso torna o comportamento mais previsível e evita expor informações privadas.

3. Remova componentes desnecessários

Retire elementos que não alteram o resultado do teste. Podem entrar nessa lista:

  • telas que não participam do problema;
  • rotinas de autenticação sem relação com a falha;
  • arquivos de estilo e recursos visuais;
  • integrações externas que podem ser substituídas por dados fixos;
  • funções auxiliares que não afetam a entrada ou a saída;
  • dependências instaladas, mas não utilizadas no trecho analisado.

Depois de cada remoção, execute o exemplo novamente. Se o erro continuar, a alteração provavelmente era dispensável. Se desaparecer, restaure o último item removido e investigue sua participação.

4. Use dados pequenos e previsíveis

Dados de teste devem ser suficientes para demonstrar o problema, mas não maiores do que o necessário. Uma lista com três elementos pode ser melhor do que um arquivo extenso. Um objeto com poucos campos facilita a visualização do fluxo.

Também prefira valores fixos a informações obtidas em tempo real. Datas atuais, números aleatórios, respostas de serviços externos e arquivos pessoais podem fazer o erro aparecer apenas ocasionalmente.

5. Confirme a reprodução em um ambiente limpo

Execute o código novamente depois de reduzir o caso. Verifique se o problema ainda ocorre e se outra pessoa conseguiria reproduzi-lo seguindo as instruções. Quando possível, use uma pasta separada ou um projeto pequeno criado especificamente para o teste.

Essa etapa é importante porque um erro pode ser causado por configurações locais, arquivos antigos ou alterações que não foram percebidas. O objetivo não é necessariamente criar uma cópia perfeita do ambiente original, mas identificar o menor conjunto de condições que mantém a falha.

O que incluir ao compartilhar o exemplo

Um exemplo reproduzível precisa vir acompanhado de contexto suficiente. Organize as informações em uma sequência simples:

  1. descreva em uma frase o comportamento inesperado;
  2. informe o resultado esperado;
  3. mostre o código mínimo completo;
  4. indique como executar o teste;
  5. apresente a saída obtida, incluindo a mensagem de erro;
  6. registre as versões relevantes da linguagem, biblioteca ou ferramenta;
  7. mencione se o problema ocorre sempre ou apenas em determinadas condições.

Evite frases vagas como “não funciona” ou “deu erro”. A mensagem exata pode conter uma pista importante, principalmente quando inclui o nome de uma operação, arquivo ou variável.

Exemplo prático de redução

Imagine uma aplicação que calcula o total de itens de um pedido, mas retorna um valor incorreto quando um produto é removido. O projeto original pode ter cadastro de clientes, conexão com banco de dados, tela de carrinho e envio de notificações.

Para investigar, crie um caso com apenas uma lista de itens, uma operação de remoção e a função que calcula o total. Em vez de consultar o banco, use dados fixos. Em vez de abrir a tela, execute a função diretamente. Se o erro continuar, o foco passa a ser a regra de remoção ou o cálculo, e não o restante da aplicação.

Esse processo também pode revelar uma diferença entre o que se imaginava e o que o código realmente faz. Talvez a remoção altere a lista original, mas o total seja calculado a partir de uma cópia antiga. Um exemplo pequeno torna essa sequência mais fácil de observar.

Erros comuns ao preparar o caso

Manter código demais

Um arquivo inteiro pode esconder a causa entre dezenas de funções. Se o exemplo ainda exigir uma explicação longa para ser entendido, continue reduzindo-o.

Excluir justamente a condição necessária

Reduzir não significa apagar tudo sem critério. Uma configuração, uma ordem de execução ou um valor específico pode ser essencial. Teste cada mudança e mantenha um registro do que foi alterado.

Depender de serviços instáveis

Se o teste exige uma API, uma rede ou um banco de dados, a falha pode ser confundida com indisponibilidade externa. Sempre que possível, substitua a dependência por uma resposta simulada ou por dados locais.

Expor dados confidenciais

Antes de compartilhar o exemplo, remova senhas, tokens, chaves, nomes de clientes, endereços e arquivos privados. Troque esses valores por dados fictícios que preservem a estrutura necessária para reproduzir o erro.

Como saber se o exemplo está realmente mínimo

Faça um teste simples: remova mais um componente e execute novamente. Se o erro persistir, o componente provavelmente não era necessário. Se desaparecer, ele faz parte das condições do problema e deve permanecer, ainda que em uma versão simplificada.

O exemplo também deve ser determinístico sempre que possível. Isso significa apresentar o mesmo comportamento quando executado nas mesmas condições. Se o resultado variar, investigue fatores como horário, aleatoriedade, concorrência, cache e dados externos.

FAQ sobre exemplos mínimos reproduzíveis

Preciso criar um projeto novo para todo erro?

Não. Um projeto separado pode ajudar, mas nem sempre é necessário. Em muitos casos, basta isolar uma função ou preparar um pequeno arquivo de teste dentro do projeto atual.

O exemplo precisa conter a solução?

Não. O objetivo inicial é demonstrar o problema com clareza. Se você já tiver uma hipótese, pode apresentá-la separadamente, sem modificar o comportamento que precisa ser investigado.

Posso usar dados fictícios?

Sim. Dados fictícios são recomendáveis, desde que mantenham as características que fazem o erro acontecer, como tipos, formatos, valores vazios ou uma determinada ordem.

O que fazer se o erro desaparecer durante a redução?

Compare a última versão que falhava com a primeira que deixou de falhar. O componente removido ou alterado nessa etapa pode indicar uma condição necessária para o problema.

Conclusão

Criar um exemplo mínimo reproduzível é uma forma prática de transformar um problema amplo em um teste controlável. Ao registrar o comportamento, reduzir dependências, usar dados previsíveis e documentar a execução, você torna a causa do erro mais fácil de investigar.

A técnica também melhora a colaboração: quem recebe o caso consegue reproduzir a falha sem conhecer todo o projeto. Com prática, essa redução deixa de ser apenas uma etapa para pedir ajuda e passa a fazer parte do processo normal de depuração.

Jogo De Chaves Combinada 8 A 19 Mm 8 Peças Gedore 002614
DESTAQUE
Jogo De Chaves Combinada 8 A 19 Mm 8 Peças Gedore 002614
R$ 183,75
Compra segura • Consulte frete e disponibilidade
Máquina De Lavar Brastemp 12kg Branca Água Quente Com Ciclo Cor Branco
Máquina De Lavar Brastemp 12kg Branca Água Quente Com Ciclo Cor Branco
R$ 1.999,00
Compra segura • Consulte frete e disponibilidade
Transparência: Alguns links deste artigo podem ser links de afiliados. Podemos receber uma comissão quando uma compra é realizada por meio desses links, sem custo adicional para você.