Différence entre Bohr bug, Schrödinbug, Heisenbug, Mandelbug

Pendant plusieurs années, j'ai travaillé dans une équipe QA (Quality Assurance), où mon rôle était de trouver les causes et de corriger les bugs que d'autres équipes avaient faits: il y avait les développeurs qui implémentaient les fonctionnalités, les testeurs / bêta-testeurs, et mon équipe qui prenait en charge les bugs un peu retords. J'avoue avoir eu des fois beaucoup de mal à reproduire certains bugs.

J'ai appris par expérience que certains bugs pouvaient apparaitre seulement dans des cas de tests et ne se seraient jamais reproduits dans une utilisation normale, d'autres n'apparaissent plus lorsqu'on tente de les observer. C'est là, la différence entre les Bohr bugs, Schrödinbugs, Heisenbugs, et Mandelbugs. Toutes ses catégories de bugs tirent leurs noms de physiciens. Voici les différences fondamentales :

  • Un Heisenbug, dont le nom est tiré de Werner_Heisenberg, est un bug dont les caractéristiques sont altérées lorsqu'on l'observe. L'affichage d'un log, l'ajout d'une sonde, le fait de faire tourner un débuggeur ou une console jmx, peut modifier le comportement de l'application qui fait que le bug ne se produit plus. La physique quantique suit également cette règle comme la célèbre expérience des fentes doubles d'Young
  • Un bohr bug, tire son nom de Niels_Bohr, et n'a en rien ses caractéristiques modifiées lorsqu'on l'observe, à la différence d'un heisenbug. C'est un bug dit 'classique'.
  • Un Schrödinbug, lui tire son nom de Erwin Schrödinger .C'est un bug qui n'apparait qu'après une utilisation inhabituelle du logiciel et qui ne serait pas apparu dans une utilisation classique par les utilisateurs. Ce bug est souvent déstabilisant car il apparait sans qu'aucune modification de code ne soit faite. C'est le bug, bien connu, du "oui mais ça marchait avant" :). C'est le cas, par exemple, lorsqu'un test, ou l'utilisation d'un trick mode met le logiciel dans un état instable. A l'inverse après un test, il peut arriver qu'un bug disparaisse, et là c'est le bug, "si je te jure quand je l'ai fais, ça marchait pas". Les Schrödinbugs, vous poussent à croire un peu plus les gens, et à ne pas les considérer comme des mythomanes :)
  • Un Mandelbug, en hommage à Benoit Mandelbrot, est par nature, le bug le plus difficile à reproduire car les étapes pour le reproduire sont tellement complexes qu'il semble se reproduire de façon aléatoire et chaotiques. Souvent le bug est reproductible, mais les étapes imposent des conditions qui ne sont pas toujours identifiées ou sur lesquelles nous n'avons pas la main. Les bugs concernant les threads, ou les bugs apparaissant selon une certaine charge du système sont souvent des mandelbugs. Ce bug engendre souvent des "can not reproduce".

Un bug peut être de plusieurs types à la fois, et si vous tombez sur un mandelbug-heisenbug, je vous souhaite bon courage :)

Il est amusant de constater que tous ces types de bugs tirent leur nom de scientifiques. Comme quoi la correction de bugs est vraiment une science !

La discussion continue ailleurs

URL de rétrolien : https://davidmasclet.gisgraphy.com/index.php?trackback/19

Fil des commentaires de ce billet