← Últimos artigos
💻 computer science

Exceptional Behaviors: How Frequently Are They Tested?

Este artigo apresenta um estudo empírico de 25 sistemas Python revelando que, embora 21,4% dos métodos executados levantem exceções, esses comportamentos excepcionais são frequentemente exercitados (mediana de 1 em cada 10 chamadas), mas frequentemente permanecem não testados, motivando recomendações para melhores ferramentas de teste e uma reavaliação da raridade de cenários que levantam exceções.

Autores originais: Andre Hora, Gordon Fraser

Publicado 2026-02-06
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Andre Hora, Gordon Fraser

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você é um chef comandando um restaurante movimentado. Na maior parte do tempo, você está cozinhando refeições perfeitas para clientes felizes (isso é o comportamento normal). Mas, às vezes, as coisas dão errado: o forno quebra, um cliente pede um ingrediente que você não tem ou uma entrega atrasa (estas são as exceções).

No mundo da programação de computadores, essas "coisas que dão errado" são chamadas de exceções. Desenvolvedores escrevem códigos especiais para capturar esses erros e lidar com eles de forma elegante, para que todo o restaurante não pegue fogo.

Este artigo é como uma equipe de inspetores de alimentos que foi a 25 restaurantes diferentes do mundo real (sistemas de software) para ver com que frequência a equipe realmente pratica o manuseio desses desastres durante seus exercícios diários (suítes de teste).

Aqui está o que eles descobriram, dividido de forma simples:

1. Os "Exercícios" vs. "O Mundo Real"

Os inspetores descobriram que, embora os chefs (desenvolvedores) sejam muito bons em praticar como cozinhar a refeição perfeita, eles raramente praticam o que fazer quando o forno pega fogo.

  • O Dado: De cada 100 estações de cozinha (métodos) que eles verificaram, apenas cerca de 21 chegaram a encontrar um problema durante os exercícios.
  • A Analogia: É como um treinamento de incêndio onde 79 de cada 100 pessoas nem sequer fingem que o alarme de incêndio está tocando. Elas apenas continuam cozinhando.

2. Com que Frequência os Erros Realmente Acontecem?

Para as estações que encontraram um problema, os inspetores observaram com que frequência o erro acontecia.

  • O Dado: Em média, para uma estação que pode ter um problema, apenas 1 a cada 10 vezes que tentavam cozinhar, o problema realmente ocorria.
  • A Analogia: Imagine um chef que pode queimar um bife. Se ele cozinhar 100 bifes, ele só queima 10. Os outros 90 são perfeitos. Na maioria das vezes, o "queimar" é um evento raro.

3. Desastres "Raros" vs. "Comuns"

Os inspetores notaram dois tipos muito diferentes de estações "propensas a desastres":

  • Os Desastres "Raros" (80% dos casos): A maioria das estações que podem falhar, quase nunca falham. Por exemplo, uma estação pode ter uma regra: "Se o cliente pedir um 'Hambúrguer de Unicórnio', dê um chilique". Mas como ninguém nunca pede um Hambúrguer de Unicórnio, o chef nunca precisa dar um chilique.
  • Os Desastres "Comuns" (20% dos casos): Algumas estações falham o tempo todo. Imagine uma estação que diz: "Se o cliente pedir uma 'Pizza Sem Glúten', dê um chilique". Se 90% dos clientes pedem Pizza Sem Glúten, este chef está dando um chilique constantemente.
    • A Reviravolta: Nesses casos raros, "dar um chilique" (lançar uma exceção) é, na verdade, a forma normal de a estação funcionar! O artigo argumenta que só porque um código de computador lança um erro, não significa sempre que algo está "quebrado" ou é "anormal". Às vezes, o erro é o resultado esperado.

4. Os Erros "Escondidos"

Uma das descobertas mais interessantes é sobre erros que acontecem, mas nunca são vistos pelo "gerente" (a suíte de teste).

  • A Analogia: Imagine que um subchefe derruba um prato, mas o chef principal está usando fones de ouvido com cancelamento de ruído e não ouve. O subchefe rapidamente recolhe o prato e continua cozinhando. O gerente pensa que está tudo bem, mas o prato foi derrubado.
  • A Realidade: O estudo descobriu que muitos erros acontecem dentro do código, são capturados imediatamente por uma rede de segurança (um bloco try/except) e nunca chegam aos testes de alto nível. Os testes não sabem que esses erros ocorreram, embora tenham ocorrido.

5. As Redes de Segurança "Caras"

Finalmente, o artigo aponta um desperdício de energia.

  • A Analogia: Imagine que um chef mantém um extintor de incêndio gigante, pesado e caro bem ao lado do fogão, só por precaução. Mas ele só usa uma vez por ano. É pesado para carregar e ocupa espaço.
  • A Sugestão: O artigo sugere que, para as estações onde os erros acontecem muito raramente (como no exemplo do "Hambúrguer de Unicórnio"), pode ser melhor apenas verificar se o pedido é válido antes de cozinhar, em vez de manter o pesado extintor de incêndio pronto. Isso torna a cozinha mais rápida e eficiente.

Resumo

O artigo nos diz que:

  1. A maioria dos erros é rara: Raramente testamos os cenários de "e se algo der errado" porque eles não acontecem com frequência na vida real.
  2. Alguns erros são normais: Para algumas tarefas específicas, "falhar" é, na verdade, a forma padrão de o sistema funcionar.
  3. Nós perdemos erros ocultos: Muitos erros acontecem e são corrigidos instantaneamente, de modo que nossos testes nem sabem que eles ocorreram.
  4. Podemos ser mais eficientes: Às vezes, estamos usando mecanismos de segurança pesados e caros para problemas que quase nunca acontecem, e poderíamos trocá-los por verificações mais simples.

Os autores sugerem que precisamos de melhores ferramentas para ajudar os chefs (desenvolvedores) a praticar esses cenários de desastres raros e para descobrir quais redes de segurança são pesadas demais para carregar.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →