Un bug informatique est un comportement d’un logiciel qui n’est pas conforme à ses spécifications. Une conséquence direct est que s’il n’y a pas de spécification il n’y a pas de bug…
Cette définition n’est pas universelle. Il m’est arrivé de travailler chez un éditeur de logiciel dont le responsable du développement affirmait qu’un bug était un dysfonctionnent identifié par un utilisateur final. Il n’est pas surprenant que cet éditeur ait quasiment disparu à cause du manque de fiabilité de ses solutions…
En fait plus un bug est identifié tardivement dans le processus de développement d’un logiciel plus il coûte cher.
L’idéal est qu’il n’y ait pas de bug. Ceci est possible, si les spécifications sont de qualités et si le développeur est compétent. L’organisation de revue de code est une bonne pratique pour diminuer le nombre de bug.


Si un bug est identifié par le développeur lui même, alors la partie droite de son cerveau communique avec la partie gauche et au bout de quelques minutes de réflexion, de codage et de compilation le problème est résolu.
Si un bug est trouvé par l’équipe de test alors celle-ci doit formaliser sa description dans un ticket d’incident. Le développeur doit alors comprendre le contenu du ticket, reproduire le problème (ce qui n’est pas toujours simple), le corriger, et livrer la correction en environnement de qualification. L’équipe de test peut ainsi vérifier la correction et clore le ticket.
Si un bug est identifié par l’utilisateur final cela devient beaucoup plus complexe. Cet utilisateur doit faire appel à l’équipe support qui doit analyser le problème et ouvrir un ticket d’incident. Il est bien évident que cette étape est particulièrement délicate car le diagnostique est réalisé dans un contexte de production. Un bug a parfois des conséquences néfastes sur l’intégrité des données de production. Il est souvent nécessaire de livrer et d’exécuter des scripts correctifs pour remettre les données en état.
Il est donc important de ne pas négliger l’étape des tests unitaires pour que le maximum de bugs soit identifié par le développeur lui-même. C’est au chef de projet de prévoir du temps et de contrôler que les tests sont bien réalisés. Les développeurs sont souvent réticents à ce genre tâche car ils préfèrent le codage qui est une activité plus créative et plus valorisante. Le chef de projet doit exiger des rapports de tests unitaires formalisés dans lesquels les développeurs s’engagent sur le périmètre de leurs tests.
En synthèse, plus un bug est trouvé tardivement dans le processus de développement d’un logiciel plus il implique un nombre important d’acteur et plus il coûte cher. Il est utile de mettre en place des revues de code formelles et des tests unitaires formels pour que les bugs soient identifiés et corrigés au plus tôt.
Gwenael Oliot





