Introduction
J’ai rencontré la problématique des couvertures de 100% dans une de mes première expérience dans le test! On avait préparé une couverture de 100% des scénarios proposés dans les spécifications. Entendez par là que tous les scénarios proposés dans les spécifications faisaient l’objet d’au moins 1 test. Pour être honnête j’étais jeune, inexpérimenté et plutôt fier de ce « 100% ».
Néanmoins cette couverture n’a pas empêché le passage en production de bug non détectés par les tests. Rien de plus normal me direz-vous sauf que… nous avons eu alors une discussion informelle avec le responsable du service qui se plaignait que l’on n’avait pas trouvé certains bugs alors que l’on annonçait une couverture de 100%.
Au delà du problème du 0 bug, cela soulève un autre point qui a le don de m’irriter, une couverture de 100%, seule, en tant que tel ne veut rien dire!
Concrètement une couverture de 100% c’est quoi ?
Une couverture est un outil de mesure. En général il calcule de % d’un point particulier par rapport à un autre. Pour faire simple on peut le comparer à une note.
Imaginez, vous enfant (ou votre enfant si vous en avez), rentrez chez vous avec un note. Vous avez eu « 10 ». Est-ce bien ou non ? Il est pour moi impossible d’y répondre sans contexte mais surtout sans échelle! Selon le contexte et l’échelle, ce 10 peut être un très bonne note comme une très mauvais.
- 10/10 est une très bonne note
- 10/20 est une note moyenne qui peut selon le contexte être encourageante ou non. A l’époque, 10/20 en français représentait pour moi un exploit et une fierté alors que 10/20 en mathématiques étaient une énorme désillusion (je sais ça fait cliché)
- 10/40 (comme les notes au brevet des collèges quand je l’ai passé) c’est mauvais.
- 10/100 c’est très mauvais
Le 100% d’une couverture c’est exactement la même problématique que ce « 10 ». Sans précision, sans contexte, cela ne veut rien dire!
Au final une couverture c’est quoi ?
Un couverture est un très bel outil mais qui est très malléable. Afin de l’utiliser correctement il faut le borner, le définir. Pour continuer sur les analogies, on peut faire le parallèle avec une densité.
Une densité s’exprime par une mesure par rapport à un volume ou une surface. Une concentration de 10mg ou de 10 hommes ne veut rien dire. Par contre une densité de 10 mg / litre et de 10 hommes par m² (ce qui est plus que la densité du métro parisien aux heures de pointes :D) correspond à quelque chose.
Une couverture c’est pareil, elle doit se baser sur un nombre / une mesure par rapport à un étalon:
- les « 100% » qui nous sont si cher (mais qui peuvent être autre chose) représente le nombre qui doit être remis dans son contexte
- Le contexte, l’échelle, la mesure comparative peut quant à elle prendre plusieurs forme. La couverture des instructions c’est le nombre de ligne de code, la couverture des méthodes les fonctionnalités, les couvertures des partitions d’équivalences est par rapport à ces mêmes partitions, on peut aussi parler de couvertures de risques…
Au final les possibilités de contextes peuvent être infinies, on peut toujours en imaginer de nouvelles et c’est bien pour cela que parler d’une couverture de 100% en tant que tel ne veut rien dire. Couvrir toutes les fonctionnalités par au moins 1 test est moindre que couvrir toutes les partitions d’équivalence de toutes ces fonctionnalités ce qui reste moins que parcourir toutes les valeurs limites de ces mêmes partitions d’équivalence.
Conclusion
Ne vous faîtes pas avoir par des annonces vide de sens comme les couvertures de 100% car il sera toujours possible de trouver une couverture de 100% quelque soit les tests effectués. Lorsque vous utiliser l’outil des couvertures pensez à toujours repérer et analyser l’unité de mesure, l’étalon, l’échelle utilisée. C’est seulement à ce moment là que vous saurez quel a été le niveau de test ou la profondeur des tests effectués ainsi que comment ils ont été pensés.
Pensez à rejoindre le groupe « Le métier du test » si vous souhaitez échanger sur le test
Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles
N’hésitez pas à faire vos propres retours d’expérience en commentaire.
Une réponse
Je suis d’accord avec ça à 100% 🙂
Attention à ne pas confondre densité et masse volumique : d = mv / mv(eau) en tant que rapport de masses volumiques elle n’a pas d’unité. ( > 10/20 en physique) 😉