Módulo 13 - O raio-X do algoritmo
Caçando um bug de verdade: o método do detetive
9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026
O que você vai aprender
- Seguir o roteiro da depuração: reproduzir, hipotetizar, verificar, corrigir, retestar.
- Formular hipóteses de bug que apontam para linhas específicas.
- Estreitar o cerco com teste de mesa até flagrar a linha culpada.
- Corrigir um ponto por vez e retestar tudo, inclusive o que já funcionava.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Caçando um bug de verdade: o método do detetive.
Os objetivos desta aula. Seguir o roteiro da depuração: reproduzir, hipotetizar, verificar, corrigir, retestar. Formular hipóteses de bug que apontam para linhas específicas. Estreitar o cerco com teste de mesa até flagrar a linha culpada. Corrigir um ponto por vez e retestar tudo, inclusive o que já funcionava.
Veja o essencial, parte por parte.
O roteiro do detetive. Depurar segue um roteiro fixo: 1) reproduza o erro com uma entrada conhecida; 2) formule uma hipótese específica; 3) verifique com teste de mesa ou rastreio; 4) corrija UM ponto; 5) reteste tudo.
O caso da média teimosa. Corrigir sem reproduzir: você “conserta” um erro que não entendeu e ele volta na semana seguinte, com outra roupa.
Corrija um ponto, reteste tudo. Causa confirmada, a correção deve ser a MENOR mudança que a ataca: no caso da média, um par de parênteses, e mais nada.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O roteiro do detetive
Programa errado dá uma vontade quase física de sair mexendo em tudo: troca um sinal aqui, inverte uma linha ali, roda de novo torcendo. Esse estilo tem nome (programação por coincidência) e um histórico terrível: às vezes o erro some sem você saber por quê, o que significa que ele voltará sem você saber por quê. O detetive faz o oposto. Primeiro REPRODUZ o crime: encontra uma entrada concreta que faz o erro aparecer sempre. Um bug que aparece toda vez que a entrada é 0 já está meio resolvido; um bug que “às vezes acontece” ainda nem virou caso.
Com o erro reproduzível, entra a HIPÓTESE: um palpite específico e testável sobre a causa. Especificidade é o que separa hipótese de desespero. “O programa está errado” não ajuda ninguém; “a média sai errada porque a divisão acontece antes da soma completar” aponta para uma linha e diz exatamente qual teste a confirma ou derruba. A VERIFICAÇÃO é o rastreio da aula anterior: execute o trecho suspeito no papel e compare cada valor com o esperado. Se a hipótese sobreviver, você achou a causa. Se cair, comemore do mesmo jeito: um suspeito a menos, cerco mais estreito.
- Reproduza: ache a entrada exata que faz o erro aparecer toda vez.
- Hipotetize: escreva um palpite que aponte para uma linha ou trecho específico.
- Verifique: teste de mesa no trecho suspeito, comparando cada valor com o esperado.
- Corrija UM ponto: a menor mudança que ataca a causa encontrada.
- Reteste: a entrada do erro E as entradas que já funcionavam antes.
O caso da média teimosa
Hora de resolver um caso de verdade. A escola encomendou um algoritmo simples: ler duas notas, calcular a média e dizer se o aluno foi aprovado (média 6 ou mais). O programa abaixo foi entregue e a diretora reclamou: um aluno com notas 4 e 6 apareceu APROVADO, com uma média estranha de 7. Reproduza no papel com essas notas, formule sua hipótese e cace a linha culpada. Dica de detetive: a média correta de 4 e 6 é 5, e o programa mostrou 7. Que conta produziria 7 com esses números? Essa pergunta É a hipótese.
🎮 Jogo da aula
A média que aprovava demais
Com as notas 4 e 6, este programa mostra média 7 e aprova o aluno. Faça o teste de mesa, descubra que conta gera o 7 e toque a linha culpada.
Repare como o caso fechou: o valor errado (7) não foi tratado como azar, e sim como PISTA. Perguntar “que conta produz 7 com 4 e 6?” levou direto à divisão executada antes da soma, uma hipótese que o teste de mesa confirmou na terceira linha. É assim que detetives experientes trabalham: o sintoma nunca é aleatório, porque a máquina é literal. Todo valor errado foi calculado por alguma conta exata; encontre a conta e você encontrou o bug.
Corrija um ponto, reteste tudo
Causa confirmada, a correção deve ser a MENOR mudança que a ataca: no caso da média, um par de parênteses, e mais nada. Resistir à tentação de “aproveitar e melhorar outras coisas” é disciplina de profissional, porque cada mudança extra embaralha o experimento. E depois de corrigir vem o passo que separa o detetive do estagiário afoito: retestar TUDO. A entrada que revelava o bug (4 e 6, que agora deve dar 5 e reprovar) e as entradas que já funcionavam (8 e 8, que deve continuar dando 8 e aprovando). Correção que conserta um caso e quebra outro não é correção, é rodízio de bugs.
Um último hábito de quem depura bem: registre o caso. Uma linha de comentário no código (“parênteses obrigatórios: a divisão rodava antes da soma”) ou uma nota no caderno já bastam. Bugs são repetitivos por natureza: o mesmo padrão que pegou você hoje vai rondar seus próximos algoritmos, e o registro transforma cada caso resolvido em vacina. As equipes profissionais fazem isso em escala industrial: todo bug de produção vira um teste automático que impede o retorno dele para sempre. Você acabou de aprender a versão de bolso dessa cultura.
Teste rápido
Qual das frases abaixo é uma boa hipótese de bug?
Perguntas frequentes
- Por onde começo quando o programa dá resultado errado?
- Pela reprodução: encontre uma entrada concreta que faça o erro aparecer toda vez. Sem isso, você não tem como verificar hipóteses nem saber se a correção funcionou. Um erro reproduzível é um erro meio resolvido; um erro que “às vezes acontece” ainda precisa virar caso.
- O que faz uma hipótese de bug ser boa?
- Especificidade: ela aponta para uma linha ou mecanismo e diz que teste a confirma ou derruba. “A divisão roda antes da soma na linha 3” é verificável com um teste de mesa de trinta segundos. “O programa está estranho” não indica onde olhar, então não é hipótese, é desabafo.
- Por que corrigir só um ponto por vez?
- Porque a depuração é um experimento, e experimento com três mudanças simultâneas não tem conclusão. Se o erro sumir, você não sabe qual mudança curou; se surgir um erro novo, não sabe qual mudança o plantou. Uma mudança por vez mantém a relação de causa e efeito visível.
- Minha hipótese estava errada. Perdi tempo?
- Não: eliminou um suspeito, e isso estreita o cerco de verdade. A investigação avança tanto quando a hipótese confirma quanto quando derruba, desde que cada palpite seja específico. O único jeito de perder tempo em depuração é mudar código sem hipótese nenhuma, no chute.
- Espalhar comandos escreva pelo código para ver os valores é gambiarra?
- É técnica legítima e universal, o “escreva de espionagem”: o programa narra o próprio estado enquanto roda, como uma tabela de rastreio automática. Só lembre de remover os escreva temporários depois que o caso fechar. Nas linguagens reais, o depurador faz o mesmo papel com mais conforto.
- Quanto tempo é normal levar para achar um bug?
- Varia de minutos a dias, e isso é normal até para veteranos. O método não promete velocidade, promete progresso: cada hipótese testada estreita o cerco, enquanto o chute anda em círculos. Se travar de verdade, faça uma pausa ou explique o problema em voz alta para alguém: destravar na terceira frase da explicação é um clássico da profissão.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.