Qui d’entre nous n’a pas eu l’expérience d’un logiciel qui ne fonctionne pas comme prévu :
- Une application sur un smartphone
- Un achat sur une boutique en ligne
- Un écran bleu sur votre ordinateur
- …etc
Les comportements inattendus des logiciels peuvent avoir des conséquences allant de pertes financières ou d’image (comme un bug sur un module de paiement d’un site e-commerce), jusqu’à des pertes humaines (comme les équipements de santé et des moyens de transports).
Plusieurs termes sont utilisés pour désigner un comportement inattendu d’une application : Bug, Erreur, Défaut, anomalies, défaillance…
Parfois ces termes sont utilisés de façon totalement confuse.
L’ISTQB Fondation commence par le vocabulaire pour démarrer sur de bonnes bases.
Les erreurs :
Une erreur est commise par une « Personne » : un être humain
Faire des erreurs est une des caractéristiques de l’homme qui est un être faillible.
Les hommes sont ingénieux, ils sont capables de fabriquer des choses fabuleuses mais ils font aussi des erreurs, des méprises et cela ne réduit en rien leur ingéniosité.
Les méprises sont un synonyme acceptable aux erreurs dans l’ISTQB Fondation.
Les défauts :
Un défaut est lié à un produit comme le code d’une application ou le contenu d’un document.
Une erreur humaine produit un défaut sur un produit logiciel ou un document (produit textuel).
Un développeur peut introduire un défaut dans un produit logiciel, un concepteur peut introduire un défaut dans un document de spécifications.
Le terme défaut a des synonymes tels que : Bug et Anomalie.
Les défaillances :
Quand un défaut qui réside dans le code d’un logiciel est exécuté cela peut générer une défaillance.
Une défaillance est liée à un produit en cours d’exécution :
S’il n’y a pas d’exécution, il n’y a pas de défaillance.
Une défaillance peut être un affichage incorrect sur l’écran jusqu’à un crash total d’une application.
La relation de causalité entre défaut et défaillance n’est pas automatique :
Un défaut peut générer une défaillance ou pas : un défaut dans un code qui n’est jamais parcouru lors de l’exécution ne génère pas de défaillance.
Toutes les défaillances ne sont pas forcément dues à un défaut : parfois des systèmes informatiques sont des comportements inattendus parce qu’ils sont confrontés à un environnement particulier (des pics de températures, des radiations, magnétismes, champs électriques ou la Pollution).
Ce qu’il faut retenir absolument est que :
Une erreur humaine peut générer un défaut dans un produit statique (qui n’est pas en exécution) comme le code d’une application ou une documentation.
Un défaut peut générer une défaillance quand l’application est exécutée.
Les tests permettent de détecter des défauts dans le logiciel avant de l’utiliser dans un environnement opérationnel en production.
Cela permet d’éviter que ces défauts génèrent des défaillances dans l’environnement de production.