Introduction :
Il existe différents outils dans le métier du test. Un des plus connus et des plus instinctifs est la couverture.
Mais que veut dire exactement j’ai une couverture de 100% ?
Au risque de vous décevoir : rien ! En effet il existe 3 types de couvertures pour les tests. Les 3 sont totalement différentes et sont :
- La couverture des méthodes (des fonctionnalités)
- La couverture des instructions (du code)
- La couverture des chemins d’exécution
Pour expliquer plus en détail ces couvertures je reprendrai l’exemple de l’application mail.
La couverture des méthodes :
Cette couverture correspond à la couverture la plus basique. Elle correspond au pourcentage de fonctionnalités avec au moins 1 cas de test effectué.
Concrètement qu’est-ce que cela veut dire ?
Prenons notre application mail et listons ses fonctionnalités :
– Authentification
– Affichage liste des mails
– Affichage des mails
– Affichage liste des dossiers
– Afficher le contenu d’un dossier
– Ecrire un mail
– Répondre à un mail
– Transférer un mail
– Déplacer un mail
– Supprimer un mail
– enregistrer un brouillon
– Gérer les options de messagerie
Pour avoir une couverture des méthodes de 100%, il suffit donc d’avoir 12 cas de tests, 1 par fonctionnalité.
On a donc ici une couverture qui ne signifie pas que l’ensemble de l’application a été testé, par contre on est sûr que chaque fonctionnalité a au moins été testée 1 fois. Ce type de couverture est très pratique pour les tests vitaux (j’y reviendrai dans un futur article).
La couverture des instructions :
Cette couverture est plus complète que la précédente. Elle correspond au pourcentage de lignes de codes par lesquelles on est passé lors des tests. Plus concrètement on veut que chaque possibilité offerte par l’application soit testée au moins une fois, par contre la façon d’accéder à cette possibilité n’est pas importante.
A quoi cela correspond-t-il sur notre application mail ? Prenons l’exemple de la fonction « déplacer un mail ». On peut déplacer un mail de plusieurs façons soit directement depuis la liste des mails, soit en affichant le mail, si ces 2 façons font appel aux mêmes lignes de code (ce qui semble logique) alors pour valider cette couverture, un seul test est nécessaire, soit avec le mail affiché soit directement depuis la liste des mails. De même il n’est pas nécessaire de déplacer un mail vers tous les dossiers ni de re-déplacer directement un mail préalablement déplacé.
Cette couverture, malgré quelques limites est très utilisée, notamment pour des tests de régression. C’est aussi généralement la dernière couverture vraiment atteignable.
La couverture des chemins d’exécution :
La couverture la plus complète ! Qui est également une couverture que l’on ne peut généralement pas atteindre ou alors atteindre avec un coût particulièrement élevé.
Ici, en plus de tester toutes les lignes du code on test également tous les moyens d’y arriver, tous les chemins possible.
Prenons l’exemple de déplacement de mail.
Il faut donc tester le transfert depuis la liste des mails, sur l’application que j’utilise actuellement il existe 3 façons de le faire depuis la liste des mails :
– Clic long sur le mail
– Glisser à droite
– Glisser à gauche
Il est également possible de déplacer un mail affiché.
Il faut également tester l’annulation de ce déplacement (avant et/ou après la sélection du dossier cible) dans tous les cas.
Les cas de tests plus limites sont aussi important à tester (si gérés par l’application) comme par exemple le déplacement vers les brouillons, le dossier des mails envoyés, un dossier préalablement supprimé…
On a alors rien que pour le déplacement un très grand nombre de tests. Cela peut donc trop coûteux d’atteindre les 100% de couverture avec ce ces tests à définir, exécuter ou maintenir dans le cas d’une application mail, qui, dans la grande majorité des cas est gratuite.
Cette couverture est néanmoins la plus complète et celle qui reflète le mieux les tests fonctionnels. Cette couverture est très intéressante pour les tests de validation.
Conclusion :
Avoir une couverture de 100% ne veut rien dire, tout dépend du type de couverture utilisé. Chaque couverture a ses points forts, points faibles et son lot d’informations.
Le choix de la couverture dépend de ses besoins.
Pour les tests vitaux une couverture de méthode de 100% peut sembler pertinente alors qu’elle ne l’est pas pour des tests de régression et encore moins des tests de validation. Pour ces tests les couvertures des instructions et/ou chemins d’exécution sont plus intéressantes.