Techniques basées sur les spécifications (6/7) – Pairwise

Dans la continuité de mon précédent article, je vais vous parler d’une technique fort utile pour réduire drastiquement la combinatoire: Pairwise.

Pour vous remettre dans le contexte des techniques combinatoires, je vous invite à (re)lire mon précédent article : Techniques basées sur les spécifications (5/7) – classification arborescente.

Définition

Test combinatoire: un moyen d’identifier un sous ensemble adéquat de combinaisons de tests pour atteindre un niveau de couverture pré-déterminé dans le cadre des tests d’un objet ayant plusieurs paramètres, chacun de ces paramètres ayant plusieurs valeurs. Le test combinatoire crée un nombre de combinaisons que le temps alloué aux tests ne permet pas d’exécuter.

Test par paires (Pairwise): Une technique de conception de test boîte noire, par laquelle les cas de tests sont conçus pour exécuter toutes les combinaisons de paires possibles des paramètres d’entrée.

Tableau orthogonal: Un tableau à deux dimensions construit à partir de propriétés mathématiques particulières, tel que le choix de deux colonnes du tableau fournit toutes les paires de combinaisons de chaque nombre du tableau.

Test par tableaux orthogonaux: Une approche de test systématique pour tester toutes les combinaisons de paires de variables en utilisant des tableaux orthogonaux. Ceci réduit de manière significative le nombre de combinaisons de variables à tester par rapport à l’ensemble des combinaisons possibles.

Construction d’une table orthogonale

Prenons l’exemple d’une situation avec 3 paramètres de chacun 2 valeurs.

La table orthogonale se construit selon les étapes suivantes:

  1. Poser dans une première colonne les deux valeurs du premier paramètre
  2. Puis poser une seconde colonne pour le second paramètre; La première valeur de ce second paramètre est mise en face des deux valeurs du première paramètre
  3. Puis on duplique les deux lignes en mettant cette fois-ci les valeurs du second paramètre.
  4. On recommence pour la 3 ème colonne avec sa première valeur
  5. Puis avec sa seconde valeur.

pairwise_01

Mathématiquement, cette table orthogonale s’écrit L8(23).

Plus généralement, une table orthogonale s’écrit mathématiquement: Lx(∏ny) avec:

    • x le nombre de lignes totales de la table. Il est le résultat du produit ∏ny
    • ∏ny : le produit du nombre de valeurs n pour chaque ensemble de colonnes y.

Pour une table construite à partir de 2 paramètres à 2 valeurs, 1 paramètre à 3 valeurs et 2 paramètres à 4 valeurs, elle se noterait L192(223142).

Mise en oeuvre de Pairwise

Prenons en exemple un magasin de jouets qui vend des petits trains.

Les clients peuvent personnaliser leur petit train via une application disponible sur une borne à l’entrée du magasin.

Le client pourra :

  • choisir le matériau du train: fer, bois ou plastique
  • choisir la couleur du train: Noir, Gris, Vert
  • choisir d’ajouter un logo sur le dessus du train: logo de la SNCF, logo TGV ou aucun logo.

En analysant cette spécification, nous pouvons en déduire 3 paramètres avec chacun 3 valeurs:

  • Matériau: fer, bois, plastique
  • Couleur: Noir, Gris, Vert
  • Logo: SNCF, TGV, Aucun

La combinatoire globale pour tester toutes les combinaisons est de 3*3*3 = 27 combinaisons et notre table se noterait L27(33).

Voyons comment Pairwise va nous aider à réduire cette combinatoire.

Tout d’abord, nous allons identifier les combinaisons deux à deux: matériau+couleur, matériau+Logo puis couleur+logo.

pairwise_02

Cela nous donne 9 tableaux de combinaison. Nous pouvons dores-et-déjà en déduire qu’il y aura 9 lignes dans notre tableau final et par conséquence, 9 cas de test permettront de couvrir toutes les paires de valeurs.

pairwise_03

Commençons par poser les premières paires, celles de matériau et couleur.

pairwise_04

Puis nous complétons notre tableau avec les paires qui restent.

pairwise_05

Le choix précédent permet d’éliminer 3 autres paires induites.

pairwise_06

Puis nous poursuivons ainsi de suite jusqu’à avoir utiliser toutes les paires.

pairwise_07

pairwise_08

pairwise_09

pairwise_10

pairwise_10.2.JPG

pairwise_11

En sortie de cette méthode, nous avons 9 cas de test qui couvrent toutes les paires de valeurs d’entrée de notre logiciel.

Pairwise au quotidien

Pour vous convaincre de la puissance de cette technique, voici quelques exemples de réduction possible de combinatoire.

Valeurs et paramètres d’entrée 100% couverture (combinatoire totale) Réduction possible avec Pairwise
322211 36 9
10474836232524291 14.338.695.168.000.000 144
1015 1.000.000.000.000.000 199
105563525 2.430.000.000.000 142
33425262718210191 15.676.416.000 96

Vous avez parfois des paires impossibles car la valeur d’une paire ne peut pas être satisfaite à cause la seconde autre valeur: par exemple, un couple OS/navigateur.

De plus, nous voyons bien que plus la combinatoire augmente, plus il est irréaliste de se lancer dans la construction de la table sans s’aider d’un outil.

Le site Pairwise propose 45 outils permettant de mettre en oeuvre cette technique avec des comparaisons d’exactitude sur chacun d’entre eux.

Pour ma part, j’ai beaucoup utilisé celui de Microsoft, PICT, que je trouve facile à appréhender.

Conclusion

Pairwise est une très bonne méthode pour réduire la combinatoire en se focalisant sur la couverture des paires de valeur.

Comme pour toute technique de réduction de couverture, il convient d’analyser le risque produit résiduel.

Sources:

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

Le site officiel de Pairwise.

Merci à Marc Hage Chahine pour sa relecture.

6 Responses

  1. Pairwise can be restrictive some times. This is why I would prefer to consider a N-wise approach where instead of combining data 2 by 2, it can be combining them n by n. With n=6, you can reach 99,9999% of the exhaustive coverage but still reduce considerably the number of tests.

    1. You absolutely right. Pairwise is a subset of N-Wise techniques. With a tool like PICT you can quickly enhance coverage. Risk based testing should be used to make a choice about the appropriated value of N

  2. Boujour,

    Je me demande s’il n’y a a pas une coquille dans le premier exemple donné:
    « Mathématiquement, cette table orthogonale s’écrit L8(3^2). »
    Est-ce que ce ne serais pas plutôt L8(2^3) ?
    Le produit du nombre de valeurs n (2) pour chaque ensemble de colonnes y (3) ?

    Mais n’ai peut-être pas compris ma méthode…

    Bien à vous et merci pour ce site.

Laisser un commentaire

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

Agilité

13 : Concevoir rapidement et progressivement les scénarios de tests d’une fonctionnalité avec l’algorithme des tamis successifs (1 / 3) 

Prenons le cas d’une fonctionnalité “F” du produit et essayons de concevoir des scénarios de test qui pourraient représenter leurs critères d’acceptation. En termes clairs “F” représente un macro-UC ou un UC (Use Case) du produit à un instant T de sa conception. Autrement dit, “F” intègre et synthétise tous

Lire la suite »
Agilité

Vous avez dit DevOps ?

Les DevOps tel qu’il est (souvent) mal perçu On parle régulièrement de DevOps. Ce mot est devenu un mot « valise » derrière lequel on met beaucoup de choses toutes plus merveilleuses les unes que les autres. Le plus souvent ce qui est « sous-entendu » par DevOps est une chaîne d’intégration continue, une

Lire la suite »