Blog de David Masclet - Mot-clé - Schrödinbugs2020-02-11T15:05:04+00:00urn:md5:bd7c47a89c3b735a7167e4bd4cde9285DotclearDifférence entre Bohr bug, Schrödinbug, Heisenbug, Mandelbugurn:md5:a45f580baea5a9705f2cfdc096e87e002009-12-18T12:33:00+01:002015-06-07T11:25:14+02:00MD3804-GANDITests / XUnitBohr bugHeisenbugMandelbugSchrödinbugs<p>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.</p>
<p>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 :</p> <ul>
<li>Un Heisenbug, dont le nom est tiré de <a href="http://fr.wikipedia.org/wiki/Werner_Heisenberg" hreflang="fr">Werner_Heisenberg</a>, 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 <a href="http://fr.wikipedia.org/wiki/Fentes_de_Young" hreflang="fr">fentes doubles
d'Young</a></li>
</ul>
<ul>
<li>Un bohr bug, tire son nom de <a href="http://fr.wikipedia.org/wiki/Niels_Bohr" hreflang="fr">Niels_Bohr</a>, 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'.</li>
</ul>
<ul>
<li>Un Schrödinbug, lui tire son nom de <a href="http://fr.wikipedia.org/wiki/Erwin_Schr%C3%B6dinger" hreflang="en">Erwin
Schrödinger</a> .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 :)</li>
</ul>
<ul>
<li>Un Mandelbug, en hommage à <a href="http://fr.wikipedia.org/wiki/Beno%C3%AEt_Mandelbrot" hreflang="fr">Benoit
Mandelbrot</a>, 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".</li>
</ul>
<p>Un bug peut être de plusieurs types à la fois, et si vous tombez sur un
mandelbug-heisenbug, je vous souhaite bon courage :)</p>
<p>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 !</p>