Módulo 13 - O raio-X do algoritmo
Casos de borda: as entradas que derrubam algoritmos
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026
O que você vai aprender
- Definir caso de borda e diferenciá-lo do caso comum (o caminho feliz).
- Conhecer a lista clássica: zero, vazio, limite exato, negativo e valor gigante.
- Fazer as perguntas de fronteira sobre qualquer algoritmo novo.
- Testar um algoritmo com entradas extremas usando teste de mesa.
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: Casos de borda: as entradas que derrubam algoritmos.
Os objetivos desta aula. Definir caso de borda e diferenciá-lo do caso comum (o caminho feliz). Conhecer a lista clássica: zero, vazio, limite exato, negativo e valor gigante. Fazer as perguntas de fronteira sobre qualquer algoritmo novo. Testar um algoritmo com entradas extremas usando teste de mesa.
Veja o essencial, parte por parte.
O caminho feliz engana. Caso de borda é a entrada extrema, na fronteira do que o algoritmo aceita: zero, vazio, limite exato, negativo, valor gigante.
A lista clássica das bordas. As bordas variam com o problema, mas cinco famílias respondem por quase todos os desastres.
Testando as bordas na prática. Terminou o algoritmo? Pergunte na ordem: e se for zero? E se estiver vazio? E se empatar com o limite? E se for negativo? E se for gigante?
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O caminho feliz engana
Imagine um algoritmo que calcula a média de notas de uma turma: soma as notas, divide pela quantidade de alunos, mostra o resultado. Você testa com as notas 7 e 8, dá 7,5, tudo lindo. Aí chega a turma nova, ainda sem alunos matriculados, e o programa trava na frente da secretária: soma zero dividida por quantidade zero. O algoritmo não estava errado para a entrada que você imaginou; estava despreparado para uma entrada que você não imaginou. Esse é o retrato falado do caso de borda: legítimo, possível e ignorado.
Por que o autor não enxerga as bordas? Porque quem escreve um algoritmo escreve pensando no uso típico, e o cérebro testa com exemplos do mesmo molde que usou para criar. É um ponto cego natural, não falta de capacidade. A solução é transformar a caça às bordas em ritual mecânico: terminou o algoritmo, rode a lista de perguntas de fronteira ANTES de dar por pronto. Zero? Vazio? Limite exato? Negativo? Gigante? Cinco perguntas, trinta segundos, e a maior parte dos vexames de produção morre no papel.
A lista clássica das bordas
As bordas variam com o problema, mas cinco famílias respondem por quase todos os desastres. O ZERO, que zera multiplicações e explode divisões. O VAZIO, a lista sem itens ou o texto sem letras, que faz laços não executarem nenhuma volta. O LIMITE EXATO, o valor que empata com a fronteira: o saque exatamente igual ao saldo, a nota exatamente 6 na régua “maior que 6”. O NEGATIVO, onde ele for possível: idade -3, preço -10. E o GIGANTE, o valor absurdamente grande que estoura o razoável: 999 parcelas, um milhão de convidados. Decore as cinco famílias; elas valem para qualquer linguagem, pelo resto da sua vida de programador.
| Família de borda | Exemplo concreto | O que costuma quebrar |
|---|---|---|
| Zero | turma com 0 alunos | divisão por zero na média |
| Vazio | lista de compras sem itens | laço que não roda; “maior valor” de nada |
| Limite exato | saque igual ao saldo | condição com > onde deveria ser >= |
| Negativo | idade digitada como -3 | cálculo aceita e produz resultado sem sentido |
| Gigante | 999999 parcelas | resultado absurdo, tela ilegível, programa lento |
Cinco famílias de borda cobrem a maioria dos bugs de fronteira.
🎮 Jogo da aula
Detector de bordas
Um bom testador fareja a fronteira de longe. Classifique cada entrada: é um caso de borda que merece teste especial ou um caso comum do caminho feliz?
Repare no critério que o jogo treina: borda não é entrada esquisita, é entrada POSSÍVEL que encosta numa fronteira do algoritmo. A turma sem alunos existe todo início de semestre; o saque igual ao saldo acontece todo fim de mês. O programador que trata essas situações não está sendo pessimista, está sendo realista: o mundo entrega essas entradas com uma frequência que o caminho feliz esconde.
Testando as bordas na prática
Caçada a borda, o teste é o de sempre: teste de mesa com a entrada extrema. Pegue o algoritmo da média e execute no papel com quantidade 0: a tabela chega na linha da divisão e não tem como continuar, porque dividir por zero não tem resposta. Pronto, o bug apareceu na folha, e não na frente do usuário. A correção usa o que você aprendeu no módulo 8: uma decisão de guarda antes da conta perigosa. SE a quantidade for zero, avise que não há dados; SENÃO, calcule a média. Uma linha de SE, um vexame a menos.
leia(quantidade)
leia(total)
se quantidade = 0 então
escreva("Não há notas para calcular a média.")
senão
media <- total / quantidade
escreva("Média: ", media)
fim
// entrada de borda: quantidade 0 -> mensagem amigável, sem travarA decisão de guarda: a borda tratada vira mensagem clara em vez de travamento.
Teste rápido
Um algoritmo de saque libera o dinheiro quando “valor < saldo”. O cliente com saldo de 100 reais tenta sacar exatamente 100 e recebe recusa. Que tipo de problema é esse?
Perguntas frequentes
- Por que os casos de borda causam tantos bugs?
- Porque quem escreve o algoritmo testa com entradas do mesmo molde que usou para criá-lo, e as fronteiras ficam num ponto cego natural. O código funciona por meses no caminho feliz, até o dia em que o mundo entrega o zero, o vazio ou o valor empatado no limite. O bug parece surpresa, mas estava agendado.
- Quais são os casos de borda mais comuns?
- Cinco famílias cobrem quase tudo: o zero (que explode divisões), o vazio (lista ou texto sem conteúdo), o limite exato (o valor que empata com a fronteira da condição), o negativo onde só se esperava positivo e o gigante que estoura o razoável. Rodar essas cinco perguntas vira hábito rápido.
- Como descubro as bordas de um algoritmo que acabei de escrever?
- Olhe cada entrada e cada condição. Para as entradas, pergunte: qual o menor valor possível? O maior? Pode ser zero, vazio ou negativo? Para as condições, pergunte: o que acontece quando o valor EMPATA com o limite? Cada resposta duvidosa merece um teste de mesa com aquela entrada exata.
- Caso de borda é sinônimo de entrada inválida?
- Não. A borda é uma entrada válida porém extrema: a turma sem alunos e o saque do saldo inteiro são situações reais. Entrada inválida é outra categoria (texto onde se esperava número, por exemplo) e se resolve com validação. As duas merecem tratamento, mas confundi-las esconde bugs.
- Divisão por zero acontece em programas de verdade?
- O tempo todo: média de uma lista vazia, percentual sobre um total que veio zerado, rateio de conta entre zero participantes. A conta em si quase nunca é o problema; o problema é o divisor que PODE ser zero e ninguém perguntou. A decisão de guarda antes da divisão é o antídoto padrão.
- Preciso tratar todas as bordas que eu encontrar?
- Trate as que podem acontecer no seu contexto, com decisão de guarda e mensagem clara. As impossíveis de verdade (uma quantidade que o próprio programa garante ser positiva, por exemplo) podem ficar sem tratamento, mas anote a suposição em comentário. Suposição escrita é documentação; suposição na cabeça é bug futuro.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.