Les couvertures de tests

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.

2 réponses

  1. Bonjour,
    Désolé d’avance pour la question naïve ou peut-être mal posée, est-ce que les cas de tests définis dans la couverture des méthodes s’apparente au niveau de test utilisateur ?
    Merci

    1. Bonjour,
      les tests utilisateurs ne sont pas un niveau de test. En général les tests utilisateurs sont apparentés aux tests d’acceptation. la couverture des méthodes peut s’appliquer à n’importe quel niveau de test et donc les tests utilisateurs même si, assez souvent, les tests utilisateurs sont assez proches de tests Ad’hoc et donc, avec un calcul de couverture complexe à réaliser.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Agilité

ATDD : Ce qu’on peut en conclure

Nous voici arrivés en fin de l’étude ATDD pour comprendre ce dont il s’agit et pour montrer son utilisation en agile à l’aide d’un outil. Un étonnement : pourquoi l’ATDD n’est-il pas encore vu comme un outil indispensable à l’agile ? Il est assez incroyable de voir qu’en 2022 l’ATDD est

Lire la suite »
roue indiquant 5 difficultés du testeur qui entourent une sixième centrale: le temps
testeur

Les difficultés du testeur (6/6): le temps

Cette série part de la présentation faite lors du webinaire « Rendre la vie du testeur plus facile«  L’idée est de développer chaque difficulté abordée et de présenter des techniques pour y faire face. Difficulté: le temps Le temps est sans conteste l’élément central des difficultés des testeurs. Sans limitation de

Lire la suite »
Campagnes

Ce que nous apprend la mythologie sur les tests: Sisyphe

L’histoire de Sisyphe Sisyphe est un personnage bien connu de la mythologie grecque. Sysiphe était un éleveur qui possédait un troupeau. Il se faisait régulièrement voler ses bêtes par Autolycos (fils d’Hermès) qui transformait l’apparence des bêtes volées grâce au pouvoir conféré par son père. Sysiphe, pour réussir à faire

Lire la suite »