Académique Documents
Professionnel Documents
Culture Documents
Debugging
Debugging
C’est l’étape qui suit la découverte de défaillance dans un logiciel
Source : https://www.nationalgeographic.org/thisday/sep9/worlds-first-computer-bug/
Debugging : la tâche la moins aimée par les développeurs
L’obstacle de l’égo : le debugging confirme que les programmeurs commettent
des erreurs
Méthode aléatoire
Pas efficace
Corriger l’erreur
Référence : http://web.mit.edu/6.031/www/fa17/classes/13-debugging/
Reproduire le Bug
Trouver le test minimal répétable qui produit la défaillance
Les pièces de Shakespeare incluent 100 000 ligne contenant plus de 800 000
mots → il est plus simple de minimiser la taille de l’entrée
Méthodes de réduction des données
Exemple de Shakespeare :
→ votre propre code (où le bug se trouve probablement) est souvent quelque part
au milieu du stack trace
Exemple de stack trace
Faire une hypothèse
Les hypothèses devraient porter sur l'endroit où se trouve réellement le bug (ou
non) et ce qui pourrait l'avoir causé
Slicing
Trouver les parties du programme qui ont contribué au calcul d’une certaine valeur
Prioriser les hypothèses
- un ancien code bien testé est probablement plus fiable que le code
récemment ajouté.
- Le code de la bibliothèque Java est probablement plus fiable que votre code
- Le compilateur et l'environnement d'exécution Java, la plate-forme du
système d'exploitation et le matériel sont de plus en plus fiables, car ils sont
très utilisés et testés..
Faire des expériences
- Utiliser l'expérience pour tester l’hypothèse
- Possibilité d’utiliser les instructions “print”
- Ne pas oublier de supprimer le print à la fin
- breakpoints
Utilisation du debugger
Permet d’observer l'exécution du programme
- rejeter l’hypothèse
- faire une nouvelle hypothèse
Vérifier qu’il n’y a pas d’effets secondaires : utiliser les tests de régression
Autres conseils
Si on arrive à une impasse :
“Stuckness shouldn’t be avoided. It’s the psychic predecessor of all real understanding.
An egoless acceptance of stuckness is a key to an understanding of all Quality, in
mechanical work as in other endeavors.”
— Robert M. Pirsig
Issue tracking system
Système de gestion des incidents
Utilisation de ticket
suivre l’avancement
ticket
Un ticket = un rapport sur le problème
Structure:
- steps to reproduce
- Expected results / actual results (put triangle (1,1,1) expected…)
[source: https://www.ibm.com/topics/continuous-integration]
Version Control System
Système de gestion de version
Version control
la pratique du suivi et de la gestion des modifications apportées au code logiciel.
Les systèmes de contrôle de version sont des outils logiciels qui aident les
équipes logicielles à gérer les modifications apportées au code source au fil du
temps