Véritable ascenseur émotionnel pour tout développeur, le faisant passer successivement du déni à la frustration, de l’incrédulité à la résignation, puis de l’espoir au soulagement, le débogage est un art à part entière empli d’enseignements qui nécessite une attitude et des compétences spécifiques. À travers cette série d’articles, nous découvrirons méthodes, techniques et astuces pour transformer ce moment en plaisir non dissimulé. Cette première partie s’attachera à décrire les différentes étapes clés d’une résolution effective de bug.
Pour commencer, il est impératif de ne pas foncer tête baissée dans la résolution du problème. Ne touchez pas à une ligne de code et acharnez-vous à reproduire l’erreur ! Cette étape permettra de vous mettre dans des conditions de travail idéales et vous fera, au final, gagner sérénité et temps. Celui d’un développeur est précieux, vous devez avant tout vous assurer de la réelle existence du problème et avoir la certitude de l’avoir au final corrigé. Quoi de plus frustrant que de revoir des semaines plus tard le même bug refaire surface !
La résolution d’un bug débute généralement par l’analyse du rapport fait par la ou les personnes en charge de la recette fonctionnelle de votre application. C’est-à-dire le plus fréquemment… le client. Rarement un profil technique, souvent dépourvu du vocabulaire associé, vous aurez pris soin de lui fournir un processus (voire un template) de remontée de bug le plus dirigé possible. Vous éviterez alors le simple « ça ne marche pas ». Gardez à l’esprit que ce document doit vous fournir les informations essentielles à la reproduction du problème. En voici les dix commandements :
Une fois analysé et compris, faites en sorte de reproduire le bug au plus proche de vous. Vous n’aurez pas accès au même confort d’investigation en local avec l’ensemble de vos outils de prédilection, au sein d’un environnement de test, voire pire en production (oups). Simplifiez-vous la vie en mettant en place en un scénario de reproduction le plus court possible. Idéalement, vous écrirez ou corrigerez à cet instant le test unitaire associé, afin de vous prémunir contre une éventuelle régression future et de fluidifier le travail de diagnostic.
Il arrive malheureusement qu’un bug soit difficilement reproductible. La tentation de classer l’affaire sans suite se montre alors plus grande que jamais ! Résistez et trouvez-en la raison :
Une fois dans les conditions optimales, Vous passerez à la phase d’investigation. Tel un Columbo en puissance, il va falloir faire des hypothèses sur l’origine du problème et vérifier celles-ci pour cibler la section de code incriminée. Les bugs n’apparaissant pas encore par magie ou sous les ordres d’une IA malveillante, vous procéderez avec méthode :
IDE, console API, monitoring, breakpoints, blackboxing, debugging proxy, voici des outils plus ou moins puissants à votre disposition pour débusquer les fauteurs de troubles. Nous consacrerons un article complet à leur utilisation dans le cadre d’une application JavaScript dans la seconde partie de cette série.
Bravo, vous avez identifié la source du problème ! Il est temps maintenant de corriger la section de code qui pose souci sans introduire de régression et dans le respect des normes de qualité en vigueur au sein de votre équipe. Faites attention à bien traiter la cause du problème et non ses symptômes. Dans les cas où le choix d’implémenter un quickfix est fait collectivement, il sera alors clairement identifiable et impérativement temporaire. Si cela se révèle être pertinent, refactorisez votre code. Enfin, aussi rigoureux et expérimenté que vous soyez, faites-vous relire !
Il est maintenant temps de tirer les conclusions des étapes précédentes. Comment ce bug a-t-il pu passer entre les mailles du filet ? Un problème similaire peut-il se produire ailleurs dans votre application ? Comment s’assurer de ne pas le voir réapparaître ? La documentation doit-elle être mise à jour ? Vous devez profiter de cette correction pour améliorer et questionner la qualité de votre codebase.
L’équipe Synbioz.
Libres d’être ensemble.
Nos conseils et ressources pour vos développements produit.