Bug (informatique) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Cycle de vie

Les bugs résultent d'erreurs humaines lors des travaux de spécification, de conception, de programmation et de tests de logiciel et de matériel informatique. La complexité grandissante des logiciels, les problèmes de communication, le manque de formation des ingénieurs et la pression des délais et des coûts durant les travaux d'ingénierie sont des facteurs qui tendent à augmenter le nombre de bugs.

Les tests de logiciels sont la première mesure pour contrer les bugs. Pour des raisons pratiques (coût des travaux et délais) il n'est pas possible de tester un logiciel dans toutes les conditions qu'il pourra rencontrer lors de son utilisation et donc pas possible de contrer la totalité des bugs: un logiciel comme Microsoft Word compte 850 commandes et 1600 fonctions, ce qui fait un total de plus de 500 millions de conditions à tester.

L'utilisation de langages de programmation de haut niveau, qui facilitent le travail de l'ingénieur. La mise en application de conventions de rédaction sont d'autres techniques préventives destinées à diminuer le nombre de bugs.

Le débogage est l'activité qui consiste à diagnostiquer et corriger des bugs. Lors du débogage en ligne, l'ingénieur exécute le logiciel pas à pas, et effectue après chaque pas une série de vérifications. Lors du débogage post-mortem, l'ingénieur examine un logiciel à la suite d'un crash informatique.

Lorsque le bug est décelé et corrigé après la distribution du logiciel, le fournisseur met souvent à disposition un patch, c'est-à-dire un kit qui remplace les parties défaillantes du logiciel par celles qui ont été corrigées.

Logiciel de suivi des problèmes

Les ingénieurs utilisent souvent un logiciel de suivi de problèmes: un logiciel de base de données dans lequel sont inscrit les différents bugs ainsi que les étapes du cycle de vie de chacun:

  • Une personne (développeur, testeur, utilisateur...) qui voit quelque chose qui lui semble anormal remplit un formulaire, qui crée une entrée dans la base de donnée et lui affecte un numéro.
  • Ensuite, un expert effectue une analyse, il regarde s'il s'agit réellement d'un bug ou d'une méprise (manuel pas clair par exemple, ou utilisateur mal formé).
  • Si une correction est possible (peut être aussi bien une correction dans le code qu'une précision à ajouter dans le manuel, une spécification à corriger, une traduction à améliorer...), la décision est prise de faire une correction ou pas, et avec quelle priorité. Le travail à faire est généralement affecté à quelqu'un en particulier.
  • Puis, la personne désignée traite le problème, et indique que le problème est réglé.
  • Généralement, une confirmation par une tierce personne (testeur, autre développeur, utilisateur...) est requise.
  • Si tout va bien, le problème est clos. Sinon, le problème est réouvert et le cycle recommence.

Mesures préventives

De nombreux langages de programmation incluent des mécanismes de vérification des dysfonctionnements. Les instructions nécessaire aux vérifications sont ajoutées automatiquement au code machine ou au bytecode du logiciel lors de la compilation. Les instructions peuvent provoquer l'activation automatique du débogueur, le logiciel de diagnostic des bugs.

La revue de code consiste à soumettre le code source fraîchement développé à une tierce personne qui va le relire et rechercher des défauts.

Les tests logiciel sont la première mesure pour contrer les bugs. Ils consistent à utiliser le logiciel dans le plus de conditions possibles. Le but des tests est de déceler différents problèmes :

  • le logiciel ne fait pas ce qu'il doit faire ;
  • le logiciel fait quelque chose qu'il doit NE PAS faire ;
  • le logiciel fait quelque chose qui ne lui est pas demandé ;
  • le logiciel ne fait pas bien ce qu'il doit faire (ex. : trop lentement).

Les tests sont répétés plusieurs fois, à mesure de l'avancée de la programmation et des corrections, ceci afin de valider les corrections et déceler d'éventuels bugs de régression : des bugs survenus suite à la correction erronée d'un autre bug. Les tests peuvent être automatisés à l'aide de logiciels qui agissent à la place de l'utilisateur. Parfois un second logiciel est développé pour servir aux tests.

Les test unitaires consistent à utiliser une fonction unique du logiciel en vue de déceler des dysfonctionnements. Les test d'intégration consistent à utiliser un ensemble de fonctions en vue de contrôler la cohérence de l'ensemble. Les tests de validation consistent à utiliser l'ensemble du logiciel en vue d'évaluer son adéquation au besoin de l'acheteur.

Les tests unitaires et d'intégration sont typiquement effectués par l'ingénieur, tandis que les tests de validation sont typiquement effectués par l'acheteur ou son représentant.

Débogage

Pour le débogage, ou débugage, ou encore débuggage, soit la recherche et la correction de bugs, les ingénieurs se servent d'un logiciel, le débogueur, ainsi qu'un logiciel de suivi de problèmes.

Le logiciel de suivi de problèmes sert à coordonner les travaux de débogage, il est utilisé pour collecter tous les dysfonctionnements constatés, inscrire les causes et les actions de correction effectuées et ainsi suivre l'avancement des corrections. Les causes peuvent être des bugs, mais aussi des défauts dans les paramètres de configuration ou des erreurs de manipulation. Le logiciel de suivi de problèmes est utilisé aussi bien par les usagers du logiciel défaillant que par les ingénieurs ou les administrateurs systèmes.

Le débogueur permet d'analyser l'état d'exécution d'un logiciel à un instant donné, les opérations en cours, les informations en mémoire, les fichiers ouverts, etc. Avec un débogueur en ligne, il est possible de suspendre l'exécution du logiciel à tout moment, d'analyser l'état, puis de continuer les traitements.

Avec un débogueur post-mortem, il est possible d'analyser l'état d'exécution d'un logiciel après un crash. L'analyse se fait sur la base d'un fichier qui contient la copie du contenu de la mémoire au moment du crash. Fichier appelé core dump sur les systèmes d'exploitation Unix.

Après la correction

Une version de logiciel est l'état d'un logiciel à une date donnée, y compris toutes les corrections et améliorations qui ont été faites jusqu'à cette date. La version est dite alpha ou beta lorsqu'elle correspond à l'état du logiciel avant la fin de la durée des tests. Une telle version est susceptible de contenir des bugs qui ont entre temps été décelés et corrigés.

Une fois un ou plusieurs défauts corrigés, ceux-ci sont regroupés dans un patch, un kit qui contient uniquement les composants du logiciel qui ont été corrigés. Il sera utilisé par toute personne qui possède une copie du logiciel pour y appliquer les corrections et le faire correspondre à une version donnée.

Page générée en 0.108 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise