Techniques basées sur les spécifications (2/7) – analyse des valeurs limites

Après vous avoir présenté la technique sur les partitions d’équivalence, je vous propose de découvrir sa petite sœur : l’analyse des valeurs limites (Boundary Value Analysis en anglais).

Cette technique permettra de focaliser sur les valeurs pertinentes à prendre au sein d’une partition d’équivalence et réduire la limitation de cette dernière en « piochant » au hasard une valeur.

PRÉSENTATION DE LA TECHNIQUE

DÉFINITION ISTQB

L’analyse des valeurs limites est utilisée pour tester les valeurs aux limites de partitions d’équivalence.
Il y a deux façons d’aborder l’analyse des valeurs limites : prendre deux ou trois valeurs pour le test.
Avec deux valeurs, la valeur limite (sur la limite) et la valeur qui est juste au-delà (par le plus petit incrément possible) sont utilisées. […] Avec trois valeurs, les valeurs inférieure, égale et supérieure à la limite sont utilisées.

APPLICATION

Cette technique est :

  • applicable à tous les niveaux de test: unitaire, intégration, système et acceptation;
  • adaptée lorsque tous les éléments d’un même ensemble de valeurs sont supposés être traitées de la même façon. L’ensemble doit être ordonné afin de pouvoir exploiter les notions de limites. L’exemple sur l’ensemble représentant des formes géométriques pris dans l’article sur les partitions d’équivalence n’est pas candidat à l’analyse des valeurs limites.
  • pertinente pour des tests fumigatoires sur une nouvelle version ou une nouvelle livraison afin de rapidement déterminer si les fonctionnalités de base fonctionnent;
  • peut être utilisée pour déterminer des ensembles de données et leurs limites pour tester la performance de l’application.
  • peut aussi être utilisée dans les contextes suivants:
    • Ensembles de variables non-numériques (p. ex., longueur)
    • Boucles, y compris dans les cas d’utilisation
    • Structures de données enregistrées
    • Objets physiques (y compris la mémoire)
    • Activités limitées en temps

LIMITATIONS/DIFFICULTÉS/RISQUES

La technique s’appuyant sur les partitions d’équivalence, nous retrouvons les mêmes limitations. Pour rappel, une des difficultés est de correctement choisir les partitions. Si au sein d’une partition, toutes les données ne sont pas traitées de manière identiques, il y a un risque de laisser passer des défauts.

Une limitation de la technique est de choisir deux données (limite inférieure et supérieure) au sein de la partition comme représentative du comportement de l’ensemble des valeurs de la partition.

Ce risque peut être réduit avec l’approche à 3 valeurs. Il subsiste tout de même un risque comme pour toutes réductions de couverture de tests et c’est votre analyse de risque qui permettra de déterminer si cette technique est suffisante ou doit être complétée avec d’autres techniques.

COUVERTURE

La couverture est déterminée en prenant le nombre de limites testées et en divisant par le nombre de limites identifiées (en utilisant la méthode des deux ou des trois valeurs). Cela donnera un pourcentage de couverture pour le test des limites.

TYPE DE DÉFAUT

L’analyse des valeurs limites permet de trouver des déplacements ou des omissions de limites, et peut détecter des cas de dépassement des limites: parcours de tableau ou liste, mauvaises opérations logiques dans les conditions d’une décision (ex: x > 2 et x <= 10).

Elle peut aussi être utilisée pour trouver des défauts non-fonctionnels, par exemple de tolérance, de limites de charge, capacité de stockage,etc… .

MISE EN ŒUVRE

La démarche de mise en œuvre est la suivante :

  1. Identifier les partitions d’équivalence
  2. En déduire les limites de chaque partition
  3. Dériver les cas de tests à partir des limites

Reprenons l’exemple utilisé lors du précédent article.

Une application Web calcule le taux d’imposition et le taux de réduction en fonction du revenu du foyer et du nombre d’enfants selon les règles suivantes:

  • Le revenu doit être compris entre 0€ et 100K€;
  • Les revenus de moins de 10K€ ne sont pas imposables;
  • Les revenus à partir de 10k€ sont imposés au taux de 20%;
  • Les foyers avec 2 enfants scolarisés ou plus ont une réduction de 15%;
  • Le montant des revenus et le nombre d’enfants (de 0 à 10) sont fournis via un formulaire avec des champs de saisie libres. Seuls des entiers positifs sont acceptés par le système pour les deux champs.

Nous avons déjà déterminé les partitions d’équivalence dans le premier article.

partition_equivalence_5

avec

  • une entrée E1 sur le revenu:
    • Une partition valide E1V1 : [0; 10k[
    • Une partition valide E1V2 : [10k; 100k]
    • Une partition invalide E1I1 : ]-INF;0[
    • Une partition invalide E1I2 : ]100k;+INF[
    • Une partition invalide E1I3 : ensemble des décimales
    • Une partition invalide E1I4 : ensemble des alphabétiques
  • une entrée E2 sur le nombre d’enfants dans le foyer:
    • Une partition valide E2V1 : [2;10]
    • Une partition invalide E2I1 : [0;2[
    • Une partition invalide E2I2 : ]-INF;0[
    • Une partition invalide E2I3 : ]10;+INF[
    • Une partition invalide E2I4 : ensemble des décimales
    • Une partition invalide E2I5 : ensemble des alphabétiques
  • une sortie S1 : rejet du revenu
  • une sortie S2 : taux d’imposition = 0%
  • une sortie S3 : taux d’imposition = 20%
  • Une sortie S4 : taux de réduction = 15%
  • Une sortie S5 : rejet du nombre d’enfants

Comme la technique ne s’applique que sur des ensembles ordonnés, nous excluons : E1I3, E1I4, E2I4 et E2I5. Cela ne veut pas dire que vous n’allez pas créer des cas de tests spécifiquement pour ces partitions mais ce n’est pas l’analyse des valeurs limites qui est utilisée.

Concentrons-nous sur les autres partitions ordonnées avec la méthode à deux valeurs.

  • Une partition valide E1V1 : [0; 10k[:
    • la limite inférieure et la valeur juste au delà : 0 et -1
    • la limite supérieure et la valeur juste au delà : 9 999 et 10 000
  • Une partition valide E1V2 : [10k; 100k]
    • la limite inférieure et la valeur juste au delà : 10 000 et 9999
    • la limite supérieure et la valeur juste au delà : 100 000 et 100 001
  • Une partition invalide E1I1 : ]-INF;0[
    • la limite inférieure et la valeur juste au delà : -INF et -INF-1
    • la limite supérieure et la valeur juste au delà : -1 et 0
  • Une partition invalide E1I2 : ]100k;+INF[
    • la limite inférieure et la valeur juste au delà : 100 001 et 100 000
    • la limite supérieure et la valeur juste au delà : +INF et +INF+1
  • Une partition valide E2V1 : [2;10]
    • la limite inférieure et la valeur juste au delà : 2 et 1
    • la limite supérieure et la valeur juste au delà : 10 et 11
  • Une partition invalide E2I1 : [0;2[
    • la limite inférieure et la valeur juste au delà : 0 et -1
    • la limite supérieure et la valeur juste au delà : 1 et 2
  • Une partition invalide E2I2 : ]-INF;0[
    • la limite inférieure et la valeur juste au delà : -INF, -INF-1
    • la limite supérieure et la valeur juste au delà :  -1 et 0
  • Une partition invalide E2I3 : ]10;+INF[
    • la limite inférieure et la valeur juste au delà : 11, 10
    • la limite supérieure et la valeur juste au delà :  +INF et +INF+1

Nous pouvons remarquer que certaines limites sont communes entre partition. Cela est normal puisque les ensembles sont ordonnés.

Nous avons en définitive les limites suivantes (voir le schéma suivant pour une meilleure lisibilité):

  • pour l’entrée E1 sur le revenu: -INF-1, -INF, -1, 0, 9999, 10 000, 100 000, 100 001, +INF, +INF+1
  • pour l’entrée E2 sur le nombre d’enfants dans le foyer: -INF-1, -INF, -1, 0, 1, 2, 10, 11, +INF, +INF+1

BVA_1

Avec la méthode à 3 valeurs, il faut ajouter la valeur qui suit la limite et qui aura le même comportement. Le schéma précédent devient ceci avec les troisièmes valeurs indiquées en vert:

BVA_2

Nous avons en définitive les limites suivantes avec l’ajout en vert de celles issues de la méthodes à 3 valeurs.:

  • pour l’entrée E1 sur le revenu: -INF-1, -INF, -INF+1, -1, 0, 1, 9999, 10 000, 10 001, 100 000, 100 001, +INF-1, +INF, +INF+1
  • pour l’entrée E2 sur le nombre d’enfants dans le foyer: -INF-1, -INF, -INF+1, -1, 0, 1, 2, 3, 9, 10, 11, +INF-1, +INF, +INF+1

Maintenant que nous avons nos limites, il convient de créer des cas de test pour couvrir chacune d’entres elles.

Comme pour les partitions d’équivalence, il ne s’agit pas de combiner les entrées entre elles. D’autres techniques vont se charger de faire cette combinatoire en s’appuyant sur des données issues de l’analyse des valeurs limites.

Nous allons également considérer ceci:

    • pour les revenus, les infinis sont: -1012 et 1012
  • pour le nombre d’enfants, les infinis sont: -100 et 100

Dans le tableau suivant, j’ai fait le choix de dériver les cas de test en prenant les limites dans l’ordre de mon schéma précédent. Avec la technique à 3 valeurs, il faut donc 14 cas de test pour couvrir l’ensemble des limites identifiées. Il va de soi que ce choix n’est surement pas le plus pertinent et qu’on cherchera à combiner différemment pour obtenir la même couverture.

BVA_3

CONCLUSION

Puisqu’elle s’appuie sur la technique des partitions d’équivalence, cette technique est particulièrement efficace pour pointer des erreurs de spécifications: omissions, ambiguïtés, contradictions, manques de précision.

En complément, elle augmentera la détection des erreurs faites sur les décisions logiques dans le code.

Elle sera d’une grande aide pour utiliser les limites dans d’autres techniques traitant de la combinatoire (Tables de décision, pairwise , classification arborescente entre autres).

Il convient de ne pas oublier que réduire la combinatoire impose de gérer le risque qualité associée.

SOURCES ET REMERCIEMENTS

Le syllabus ISTQB niveau avancé Test Analyste 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

Une réponse sur « Techniques basées sur les spécifications (2/7) – analyse des valeurs limites »

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