Techniques basées sur les spécifications (5/7) – classification arborescente

Après avoir vu quatre techniques différentes dont les tables de décision, je vous propose dans cet article de s’attaquer une nouvelle fois à la combinatoire des entrées d’un logiciel. En effet, c’est toujours un casse tête pour un analyste de test de gérer cette combinatoire qui devient vite trop complexe.

Je vais introduire la définition ISTQB de techniques de test combinatoire puis vous en présenter une en particulier: la classification arborescente.

Je vous présenterai aussi dans un futur article une autre technique combinatoire basée sur les tables orthogonales : pairwise.

PRÉSENTATION DE LA TECHNIQUE

DÉFINITION ISTQB

Le test combinatoire est utilisé lors du test de logiciel avec plusieurs paramètres, chacun avec plusieurs valeurs, ce qui aboutit à davantage de combinaisons que ce qui est faisable dans le temps imparti. Les paramètres doivent être indépendants et compatibles dans la mesure où il doit être possible de combiner toute option d’un facteur avec n’importe quelle fonction d’un autre facteur. La
classification arborescente permet à certaines combinaisons d’être exclues, si certaines options ne sont pas compatibles. Cela ne veut pas dire que les facteurs combinés ne s’influenceront pas, au contraire, mais qu’ils s’influenceront de façon acceptable.

Le test combinatoire offre une façon d’identifier un sous-ensemble adéquat de ces combinaisons pour atteindre un certain niveau de couverture. Le nombre d’éléments à inclure dans les combinaisons peut être sélectionné par l’Analyste de Test, y compris des éléments seuls, des paires, des ensembles de trois éléments et plus. Différents outils existent pour aider l’Analyste de Test dans cette
tâche. Ces outils demandent à ce que les paramètres et leurs valeurs soient listés (test par paires et tests par tableaux orthogonaux) ou graphiquement représentés (classification arborescentes). Le test par paires est une méthode appliquée pour tester des paires de variables combinées. Les tableaux orthogonaux sont des tableaux prédéfinis, mathématiquement justes qui permettent à l’Analyste de Test de remplacer les éléments à tester pour les variables dans un tableau, en produisant un ensemble de combinaisons qui atteindront un certain niveau de couverture lors du test. Des outils de classification arborescente permettent à l’Analyste de Test de définir la taille des combinaisons à tester (c.à.d., combinaison de deux valeurs, trois valeurs, etc.).

APPLICATION

Les techniques de test combinatoire sont pertinentes lorsque l’analyste de test doit dériver les cas de test :

  • d’une application avec plusieurs paramètres d’entrée et dont chacun peuvent avoir plusieurs valeurs: exemple d’un formulaire d’inscription.
  • d’une application utilisable dans plusieurs configurations : navigateurs pour une application web, paramétrage pour un progiciel, configurations système (hardware, OS, etc …) pour une application client lourd, etc …

Ces techniques sont généralement utilisées aux niveaux intégration, système et acceptation.

LIMITATIONS/DIFFICULTÉS/RISQUES

En utilisant ces techniques de réduction de la combinatoire, il y a un risque de ne pas tester une combinaison qui pourrait résulter en une défaillance pour l’utilisateur.

C’est là toute la difficulté pour établir le bon compromis entre couverture (qualité), délai et coût du test au regard du risque produit.  Cette difficulté est augmentée aussi par le fait qu’il faut souvent se justifier de la réduction de couverture faite et que cette dernière n’est pas toujours comprise des parties prenantes non techniques.

Une autre difficulté est l’identification des paramètres et leurs valeurs puis de définir la combinatoire entre eux à la main. La plupart du temps, l’analyste de test devra utiliser des outils pour manipuler cette combinatoire et être à même de proposer une réduction de la combinatoire tout en maîtrisant un niveau de couverture satisfaisant le niveau de risque produit.

Enfin, certains paramètres d’entrée accepteront des valeurs trop nombreuses pour pourvoir les exploiter en l’état. L’analyste de test aura souvent recours aux partitions d’équivalence et analyse des valeurs limites pour réduire le nombre de valeurs possibles.

COUVERTURE

Il y a plusieurs niveaux de couverture avec ces techniques de test combinatoire.

Le plus bas niveau de couverture est appelé « 1-wise » ou couverture de singleton. Il demande à ce que chaque valeur de chaque paramètre soit présente dans au moins l’une des combinaisons choisies: la classification arborescente permet d’identifier rapidement ce niveau de couverture.

Le niveau de couverture suivant est appelé « 2-wise » couverture de paires. Il demande à ce que chaque paire de valeurs possible soit incluse dans au moins une combinaison.

Cette idée peut être généralisée à la couverture « n-wise », qui demandera à
ce que toute combinaison de valeurs possible pour n paramètres soit incluse dans l’ensemble de combinaisons sélectionnées. Plus le n est élevé, plus le nombre de combinaisons nécessaires pour atteindre 100% de couverture est important. La couverture minimale avec des techniques est d’avoir un cas de test pour chaque combinaison produite par l’outil.

TYPE DE DÉFAUT

Les défauts les plus communs trouvés avec ce type de test sont les défauts liés aux combinaisons de valeurs avec plusieurs paramètres.

MISE EN ŒUVRE

Cette mise en oeuvre va se focaliser sur la technique de la classification arborescente.

Pour cela, prenons un site Web proposant le formulaire d’inscription suivant:

  • Nom : champs texte libre. Ce champs ne peut pas être vide lors de la soumission du formulaire.
  • Prénom: champs texte libre. Ce champs ne peut pas être vide lors de la soumission du formulaire.
  • Téléphone : champs de 10 chiffres exactement. Chaque numéro doit commencer par 06 ou 07.

La première étape va consister à identifier les paramètres ainsi que les valeurs (ou plages de valeurs) possibles. Voici une proposition:

  • Paramètre 1: nom
    • valeur 1: texte alphanumérique
    • valeur 2: texte vide
  • Paramètre 2 : prénom
    • valeur 1: texte alphanumérique
    • valeur 2: texte vide
  • Paramètre 3 : téléphone
    • valeur 1: format correct:
      • texte numérique de 10 caractères commençant par 06
      • texte numérique de 10 caractères commençant par 07
    • valeur 2 : mauvais format
      • sous-valeur 1 : texte numérique de moins de 10 caractères ou plus de 10 caractères
      • sous-valeur 2 : texte numérique de 10 caractères ne commençant pas par 06 ou 07

Pour l’exercice, cette proposition est suffisante mais il va de soit qu’elle peut être améliorer, notamment sur les mauvais formats. Le nombre de test pour couvrir la combinatoire complète serait de 2*2*4 = 16.

Maintenant que nous avons nos paramètres et valeurs, nous pouvons poser notre classification arborescente:

classification_arborescente.JPG

Déterminons maintenant le nombre de cas de test minimum pour obtenir une couverture de 1-wise. En fait, ce nombre correspond au plus grand nombre de feuilles d’une branche.

Dans notre exemple, la branche téléphone contient 4 feuilles. Il nous faudra donc 4 cas de test pour obtenir cette couverture de 1-wise.

Voici ce que cela donne:

classification_arborescente_02

Cette proposition de couverture, bien qu’elle respecte l’objectif d’obtenir 100% du 1-wise, ne semble pas être la plus pertinente. En effet, il n’est pas pris en considération ici la sortie correspondant dans notre exercice à l’acceptation ou le rejet du formulaire. Notre proposition de couverture n’assure pas qu’un 07 sera accepté, ni permet de savoir si un texte vide est refusé à cause de lui même ou à cause du mauvais format du téléphone.

Tout ça pour dire qu’il vous appartient d’analyser les interactions dans la combinatoire pour faire le bon choix avec cette technique. Voici une seconde proposition avec 6 cas de test plus pertinente:

classification_arborescente_03

CONCLUSION

Les techniques de test combinatoire vous permettront de réduire le nombre de cas de test pour respecter les contraintes de coût et délai de votre projet.

Néanmoins, il faudra rester vigilent sur le risque pris par cette réduction. Il vous faudra aussi être vigilent sur vos choix dans les paramètres, leurs valeurs et leurs combinaisons afin de construire une liste de cas de test pertinents.

Dans mon prochain article, je poursuivrai ce thème en vous présentant pairwise. Cette technique vous permettra de réduire le risque dans le choix des cas de test en assurant de tester toutes les paires de valeur.

SOURCES ET REMERCIEMENTS

Le syllabus ISTQB niveau avancé Test Analyste traduit en français par le CFTL

Le glossaire ISTQB traduit en français par le CFTL

La norme BS-7925-2  « Software component testing standard »

Merci à Marc Hage Chahine pour sa relecture.

Publié par

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s