Na investigação de bugs, a inteligência artificial funciona melhor quando entra como apoio ao método: descrever o sintoma, levantar hipóteses concorrentes, escolher a mais testável, reproduzir o problema em condição controlada e só então confirmar a causa.
A IA ajuda quando aumenta a qualidade das perguntas. Ela atrapalha quando vira atalho para pular a reprodução.
O papel da IA antes da hipótese virar causa
Um defeito raramente chega com a causa escrita na testa. Ele costuma chegar como sintoma: um botão que não conclui a compra, uma tela que carrega dados antigos, uma cobrança com valor inesperado, uma integração que falha apenas em alguns casos.
Para quem lidera produto e engenharia, a dificuldade não é apenas técnica. O problema é decidir onde concentrar atenção sem transformar a investigação em caça aleatória. Uma mudança recente pode ser pista. Um log pode indicar um ponto de falha. Um relato de usuário pode revelar uma condição de uso. Mas nenhuma dessas evidências, isoladamente, prova a causa.
É aqui que a IA para investigar bugs pode ser útil. Ela pode organizar evidências dispersas, sugerir explicações alternativas, comparar sintomas com trechos de código e propor caminhos de reprodução. Também pode ajudar a escrever perguntas melhores para logs, testes e revisão de código.
Mas há um limite claro: IA não substitui logs, testes, inspeção técnica nem julgamento humano. A documentação do GitHub sobre uso responsável de agentes com Copilot descreve agentes com ambientes e permissões distintos e ressalta a necessidade de supervisão humana e revisão das saídas. Em investigação de defeitos, essa supervisão não é formalidade. É parte do controle de risco.
A pergunta útil não é “qual é o bug?”. A pergunta útil é: “quais hipóteses explicam esse sintoma e como posso derrubar ou confirmar cada uma com o menor teste possível?”.
Separe sintoma, hipótese e causa confirmada
A confusão mais perigosa no debug assistido por IA é tratar uma explicação plausível como diagnóstico. Modelos de linguagem são bons em produzir narrativas coerentes. Em software, coerência não basta.
Três conceitos precisam ficar separados:
- Sintoma é o comportamento observado. Por exemplo: “clientes com cupom e frete grátis recebem desconto diferente do esperado”.
- Hipótese é uma explicação possível. Por exemplo: “a regra de frete grátis está sendo aplicada antes do cálculo do cupom”.
- Causa confirmada é a explicação que foi reproduzida, isolada e testada. Por exemplo: “com esta combinação de carrinho, cupom e frete grátis, o erro aparece antes da correção e desaparece depois da mudança no cálculo”.
Essa distinção parece básica, mas muda o comportamento da equipe. Quando o time chama uma hipótese de causa, tende a editar código cedo demais. Quando chama uma causa de sintoma, pode ficar preso em observação sem avançar. A investigação melhora quando cada afirmação recebe o rótulo correto.
Uma boa resposta da IA, portanto, não é a mais elegante. É a que permite avançar de sintoma para hipótese testável e de hipótese para causa confirmada.
Essa lógica também conversa com decisões mais amplas sobre adoção de IA. Em uma estratégia de inteligência artificial conectada ao negócio, o ganho não está em automatizar qualquer etapa possível, mas em decidir onde a tecnologia melhora qualidade, velocidade e controle. No caso de bugs, qualidade significa reduzir explicações prematuras.
Monte um pacote mínimo de contexto antes de pedir ajuda
A IA depende do contexto que recebe. A Anthropic define engenharia de contexto como a seleção e manutenção das informações disponíveis ao modelo durante a inferência, incluindo instruções, ferramentas, dados externos e histórico, dentro de uma janela limitada.
Na investigação de defeitos com IA, contexto não é despejar o repositório inteiro no prompt. Também não é mandar uma frase solta e esperar precisão. O objetivo é fornecer informação suficiente para gerar hipóteses testáveis, sem abrir escopo demais.
Um pacote mínimo de contexto pode incluir:
- comportamento esperado, descrito em linguagem de produto ou regra de negócio;
- comportamento observado, sem embutir causa provável;
- passos conhecidos para chegar ao erro, mesmo que incompletos;
- versão, ambiente ou configuração afetada;
- mudança recente possivelmente relacionada, tratada como pista e não como prova;
- logs relevantes, reduzidos ao trecho necessário;
- trecho limitado de código associado ao fluxo investigado;
- restrições conhecidas, como feature flag, integração externa, cache, fila ou dado específico.
Também vale dizer à IA o que ela não deve fazer. Por exemplo: não sugerir alteração ampla, não assumir causa sem reprodução, não ignorar hipóteses alternativas, não usar dados sensíveis, segredos ou credenciais.
Esse cuidado importa porque o contexto molda as respostas. Se você envia apenas o erro final, tende a receber causas genéricas. Se envia sintoma, regra esperada, logs reduzidos e trecho de código, aumenta a chance de receber hipóteses que podem ser testadas.
Não exige modelo próprio nem arquitetura sofisticada para começar. Exige critério sobre o que entra na análise, quem revisa a saída e como o aprendizado volta para o processo. Esse tipo de decisão aparece também em diagnósticos de maturidade em IA, quando a organização separa ferramenta, processo e responsabilidade.
Peça hipóteses concorrentes, não uma resposta única
A formulação do pedido muda o resultado. “Qual é o bug?” convida a IA a escolher uma narrativa. “Liste hipóteses concorrentes, evidências a favor, evidências contra e o menor teste de reprodução para cada uma” força uma estrutura de investigação.
Um bom pedido pode seguir esta forma:
- “A partir do sintoma, dos logs e do trecho de código abaixo, liste hipóteses plausíveis.”
- “Para cada hipótese, indique que evidência a apoiaria.”
- “Indique também que evidência derrubaria a hipótese.”
- “Sugira o menor teste manual ou automatizado para reproduzir o defeito.”
- “Separe claramente fatos observados, inferências e suposições.”
Esse formato reduz um vício comum: a equipe perguntar para confirmar aquilo que já acredita. Se a suspeita inicial é uma mudança recente, a IA pode ajudar a explorar outras possibilidades: dado incomum, ordem de execução, cache, concorrência, arredondamento, diferença de ambiente, integração instável ou regra de negócio ambígua.
Hipóteses boas competem entre si. Elas não servem para enfeitar a conversa. Servem para reduzir incerteza.
Uma hipótese forte deve permitir uma ação concreta: buscar um log específico, criar uma entrada de teste, reproduzir uma sequência, isolar uma dependência, comparar duas versões ou inspecionar um trecho delimitado. Se a hipótese não sugere nenhum teste possível, talvez ela ainda seja vaga demais para orientar trabalho.
Use reprodução mínima como filtro de verdade
A reprodução de bugs é o ponto em que a investigação deixa de ser narrativa e vira evidência operacional. Uma hipótese só deve avançar se a equipe consegue fazer o defeito aparecer em uma condição controlada, remover variáveis irrelevantes e observar mudança de comportamento após a correção.
Esse critério protege contra dois erros. O primeiro é corrigir algo que parece relacionado, mas não dispara o problema. O segundo é comemorar uma mudança que apenas mascara o sintoma em um cenário específico.
A orientação do DORA sobre lotes pequenos recomenda unidades de trabalho pequenas, independentes e testáveis para obter retorno sobre mudanças e revisar hipóteses mais cedo. A mesma página alerta para a dificuldade de revisar e integrar grandes mudanças geradas com IA. Aplicado à investigação de bugs, isso aponta para um critério prático: antes de pedir uma alteração ampla, reduza o defeito a uma condição mínima verificável.
Reprodução mínima não significa reproduzir todas as variações do erro. Significa encontrar um cenário controlado que demonstre a hipótese principal. Depois, se necessário, a equipe expande a cobertura.
Um bom filtro de confirmação pergunta:
- o defeito aparece antes da correção?
- a condição que dispara o defeito está documentada?
- variáveis irrelevantes foram removidas ou controladas?
- a correção altera exatamente o comportamento investigado?
- existe teste automatizado quando ele é aplicável ao tipo de falha?
- alguém revisou a explicação, o código e o risco da mudança?
A integração contínua descrita pelo DORA envolve integração frequente ao código principal, com construção e testes automatizados. A mesma orientação afirma que corrigir uma construção quebrada deve ter prioridade sobre novas mudanças. Em um fluxo de investigação, isso reforça a disciplina de levar a correção do bug para testes, revisão e integração.
Como testar um erro intermitente no cálculo de desconto
Imagine uma loja digital fictícia que recebe relatos de desconto incorreto, mas apenas em alguns pedidos. O suporte identifica um padrão inicial: clientes com cupom promocional e frete grátis parecem receber um valor final diferente do esperado. O erro não aparece em todos os carrinhos.
A equipe poderia perguntar à IA: “qual é o problema no cálculo de desconto?”. Essa pergunta provavelmente geraria uma resposta plausível, mas pouco segura.
Um pedido melhor seria:
- “Com base neste sintoma, nestas regras de negócio, nestes logs reduzidos e neste trecho do cálculo, liste hipóteses concorrentes.”
- “Separe fatos observados de suposições.”
- “Para cada hipótese, sugira o menor teste de reprodução.”
- “Não proponha correção antes de indicar como confirmar a causa.”
A IA poderia sugerir hipóteses como:
- a ordem de aplicação das regras está invertida, aplicando frete grátis antes do cupom;
- há arredondamento diferente entre subtotal e total final;
- o cupom pode chegar como dado nulo em uma condição específica;
- uma promoção em cache pode estar sendo reaproveitada entre carrinhos semelhantes.
Nenhuma dessas hipóteses é causa confirmada. Elas são caminhos de investigação.
A equipe escolhe a hipótese mais testável: ordem de aplicação das regras. Cria então uma reprodução mínima com um carrinho simples, um cupom válido e frete grátis. O objetivo não é cobrir todo o motor promocional. É verificar se aquela combinação dispara o comportamento observado.
Se o teste falha antes da correção e passa depois de ajustar a ordem do cálculo, a hipótese ganha força. Ainda assim, o encerramento exige revisão: o teste representa a regra correta? Há outros cupons afetados? A mudança altera casos existentes? O log confirma a sequência de cálculo? A explicação da IA foi revisada por alguém responsável?
O aprendizado final não é apenas “corrigimos o desconto”. O aprendizado útil é: “a combinação de cupom e frete grátis disparava uma ordem incorreta de cálculo; hipóteses de arredondamento, dado nulo e cache foram consideradas; um teste foi criado para proteger a regra”.
Esse registro melhora a próxima investigação. Também ajuda a distinguir correção pontual de melhoria de processo.
Critérios para confirmar uma hipótese em investigação com IA
Antes de encerrar uma investigação assistida por IA, vale aplicar estes critérios de confirmação. Eles não garantem ausência de novos defeitos, mas ajudam a reduzir falsa segurança.
O sintoma foi descrito sem misturar causa provável?
Escreva o comportamento observado, o comportamento esperado e as condições conhecidas. Se a descrição já contiver uma causa, marque como suposição. “Erro após a última mudança” pode ser um fato temporal. “Erro causado pela última mudança” ainda precisa de prova.
A IA recebeu contexto suficiente e limitado?
Inclua logs, passos, versão, mudança recente e trecho de código relevante. Evite dois extremos: despejar informação sem recorte ou omitir dados que mudam a interpretação. Contexto bom é aquele que permite hipóteses testáveis.
Existem pelo menos duas hipóteses concorrentes?
Peça explicações alternativas e sinais que confirmariam ou derrubariam cada uma. Hipótese única tende a virar narrativa. A investigação melhora quando a equipe compara possibilidades antes de editar código.
A hipótese escolhida tem um teste de reprodução mínimo?
Antes de alterar o código, defina qual entrada, estado ou sequência de ações deve fazer o defeito aparecer. Se ninguém sabe como o erro deveria aparecer, talvez a investigação ainda esteja cedo demais para uma correção.
A reprodução falha antes da correção e passa depois?
Esse é o filtro mais forte. Se a equipe não consegue demonstrar a mudança de comportamento, a causa ainda não está suficientemente confirmada. O resultado honesto pode ser uma hipótese priorizada, não uma causa fechada.
A saída da IA foi revisada por uma pessoa responsável?
Use a IA para levantar caminhos, comparar hipóteses e sugerir testes. Mantenha a decisão técnica com alguém capaz de avaliar código, risco e impacto. Revisão humana não é carimbo final. É parte do desenho do processo.
O aprendizado foi registrado para a próxima investigação?
Documente a condição que disparava o defeito, a hipótese confirmada, hipóteses descartadas e teste criado ou ajustado. Esse registro ajuda a equipe a não começar do zero quando um sintoma parecido aparecer.
A decisão prática para a próxima investigação
Na próxima investigação de defeito, não comece pedindo à IA uma causa. Comece pedindo hipóteses concorrentes e o menor caminho para reproduzir cada uma. Depois escolha a hipótese mais testável, reproduza o comportamento, confirme ou descarte a causa e registre o aprendizado.
Trate a investigação como encerrada apenas quando a equipe demonstrar a reprodução antes da mudança e a alteração do comportamento depois dela.
Se quiser discutir essa decisão no contexto da sua empresa, converse com a dooop.
Leituras para continuar
- Desenvolvimento amplificado por IA: como organizar o processo
- Como coordenar tarefas paralelas de agentes de código
- Como redesenhar o fluxo de desenvolvimento com IA
Fontes
- DORA: lotes pequenos
- DORA: integração contínua
- Anthropic: engenharia de contexto
- GitHub: uso responsável de agentes com Copilot
Para continuar esta leitura
Conversar sobre a aplicação na empresa
Conversa sobre o contexto da empresa de software
Conteúdo de dooop. O cadastro permite relacionar esta pauta à jornada do leitor e acompanhar o interesse pelo tema.