← Derniers articles
💻 computer science

Exceptional Behaviors: How Frequently Are They Tested?

Cet article présente une étude empirique de 25 systèmes Python révélant que, bien que 21,4 % des méthodes exécutées lèvent des exceptions, ces comportements exceptionnels sont fréquemment exercés (médiane de 1 sur 10 appels) mais restent souvent non testés, ce qui incite à recommander l'amélioration des outils de test et une réévaluation de la rareté des scénarios de levée d'exceptions.

Auteurs originaux : Andre Hora, Gordon Fraser

Publié 2026-02-06
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Andre Hora, Gordon Fraser

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous êtes un chef gérant un restaurant très fréquenté. La plupart du temps, vous cuisinez des repas parfaits pour des clients heureux (c'est le comportement normal). Mais parfois, les choses tournent mal : le four tombe en panne, un client commande un ingrédient que vous n'avez pas, ou une livraison est en retard (ce sont des exceptions).

Dans le monde de la programmation informatique, ces « choses qui tournent mal » sont appelées des exceptions. Les développeurs écrivent des codes spéciaux pour attraper ces erreurs et les gérer avec élégance, afin que tout le restaurant ne finisse pas en flammes.

Ce document est comme une équipe d'inspecteurs alimentaires qui sont allés dans 25 restaurants différents (systèmes logiciels) pour voir à quelle fréquence le personnel pratique réellement la gestion de ces catastrophes lors de ses exercices quotidiens (suites de tests).

Voici ce qu'ils ont découvert, présenté simplement :

1. Les « Exercices » vs La « Réalité »

Les inspecteurs ont constaté que, bien que les chefs (développeurs) soient très doués pour s'entraîner à cuisiner le repas parfait, ils pratiquent rarement ce qu'il faut faire quand le four prend feu.

  • Le chiffre : Sur 100 postes de cuisine (méthodes) contrôlés, seuls environ 21 ont réellement rencontré un problème lors des exercices.
  • L'analogie : C'est comme un exercice incendie où, sur 100 personnes, 79 ne font même pas semblant que l'alarme incendie sonne. Elles continuent simplement de cuisiner.

2. À quelle fréquence les erreurs se produisent-elles réellement ?

Pour les postes qui ont pu rencontrer un problème, les inspecteurs ont regardé à quelle fréquence l'erreur se produisait.

  • Le chiffre : En moyenne, pour un poste capable d'avoir un problème, le problème ne se produisait que 1 fois sur 10 essais de cuisine.
  • L'analogie : Imaginez un chef qui peut brûler un steak. S'il cuit 100 steaks, il n'en brûlera que 10. Les 90 autres sont parfaits. La plupart du temps, le fait de « brûler » est un événement rare.

3. Les catastrophes « Rares » vs Les « Communes »

Les inspecteurs ont remarqué deux types de postes très différents sujets aux « catastrophes » :

  • Les catastrophes « Rares » (80 % des cas) : La plupart des postes qui peuvent échouer ne le font presque jamais. Par exemple, un poste pourrait avoir une règle : « Si le client commande un "Burger Licorne", faites une crise de nerfs ». Mais comme personne ne commande jamais de "Burger Licorne", le chef n'a jamais besoin de faire une crise de nerfs.
  • Les catastrophes « Communes » (20 % des cas) : Certains postes échouent tout le temps. Imaginez un poste qui dit : « Si le client commande une "Pizza Sans Gluten", faites une crise de nerfs ». Si 90 % des clients commandent une Pizza Sans Gluten, ce chef fait des crises de nerfs constamment.
    • Le rebondissement : Dans ces cas rares, « faire une crise de nerfs » (lever une exception) est en réalité la manière normale dont le poste fonctionne ! Le document soutient que le fait qu'un code informatique lève une erreur ne signifie pas toujours que quelque chose est « cassé » ou « anormal ». Parfois, l'erreur est le résultat attendu.

4. Les erreurs « Cachées »

L'une des découvertes les plus intéressantes concerne les erreurs qui se produisent mais qui ne sont jamais vues par le « manager » (la suite de tests).

  • L'analogie : Imaginez qu'un sous-chef fasse tomber une assiette, mais que le chef de cuisine porte un casque antibruit et ne l'entend pas. Le sous-chef ramasse rapidement l'assiette et continue de cuisiner. Le manager pense que tout va bien, mais l'assiette a été effectivement tombée.
  • La réalité : L'étude a révélé que de nombreuses erreurs se produisent à l'intérieur du code, sont immédiatement capturées par un filet de sécurité (un bloc try/except) et n'atteignent jamais les tests de haut niveau. Les tests ne savent même pas que ces erreurs se sont produites, même si elles ont eu lieu.

5. Les filets de sécurité « Coûteux »

Enfin, le document souligne un gaspillage d'énergie.

  • L'analogie : Imaginez qu'un chef garde un énorme, lourd et coûteux extincteur juste à côté de la cuisinière, au cas où. Mais il ne s'en sert qu'une fois par an. C'est lourd à porter et cela prend de la place.
  • La suggestion : Le document suggère que pour les postes où les erreurs arrivent très rarement (comme l'exemple du "Burger Licorne"), il serait peut-être préférable de simplement vérifier si la commande est valide avant de cuisiner, plutôt que de garder l'extincteur lourd et coûteux prêt à l'emploi. Cela rend la cuisine plus rapide et plus efficace.

Résumé

Le document nous dit que :

  1. La plupart des erreurs sont rares : Nous testons rarement les scénarios de type « et si ça tourne mal » car ils n'arrivent pas souvent dans la vie réelle.
  2. Certaines erreurs sont normales : Pour certaines tâches spécifiques, « échouer » est en fait la manière standard dont le système fonctionne.
  3. Nous manquons des erreurs cachées : Beaucoup d'erreurs se produisent et sont corrigées instantanément, de sorte que nos tests ne savent même pas qu'elles ont eu lieu.
  4. Nous pouvons être plus efficaces : Parfois, nous utilisons des mécanismes de sécurité lourds et coûteux pour des problèmes qui n'arrivent presque jamais, et nous pourrions les remplacer par des vérifications plus simples.

Les auteurs suggent que nous avons besoin de meilleurs outils pour aider les chefs (développeurs) à pratiquer ces scénarios de catastrophes rares et à déterminer quels filets de sécurité sont trop lourds à porter.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →