Les valeurs d’entrée et de sortie attendues pour le composant logiciel doivent être extraites de la spécification du composant. Les valeurs sont ensuite regroupées en ensembles avec des frontières identifiables. Chaque ensemble, ou partition, contient des valeurs qui sont censées être traitées par le composant de la même manière. Le partitionnement des plages de données de test est expliqué dans la technique de conception de cas de test par partitionnement d’équivalence. Il est important de prendre en compte les partitions valides et invalides lors de la conception des cas de test.
La démonstration peut être faite à l’aide d’une fonction écrite en Java.
class Safe { static int add(int a, int b) { int c = a + b ; if (a >= 0 && b >= 0 && c < 0) { System.err.println("Overflow!"); } if (a < 0 && b < 0 && c >= 0) { System.err.println("Underflow!"); } return c; }}
Sur la base du code, les vecteurs d’entrée de sont partitionnés. Les blocs que nous devons couvrir sont l’instruction overflow et l’instruction underflow et aucun de ces 2. Cela donne lieu à 3 classes équivalentes, à partir de la revue de code elle-même.
on constate qu’il existe une taille fixe d’entier d’où :-
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Nous remarquons que le paramètre d’entrée a et b sont tous deux des entiers, donc l’ordre total existe sur eux.Lorsque nous calculons les égalités:-
x + y = MAX_VALUE MIN_VALUE = x + y
nous récupérons les valeurs qui sont sur la frontière, inclusivement, c’est-à-dire que ces paires de (a,b) sont des combinaisons valides,et aucun underflow ou overflow ne se produirait pour elles.
D’autre part:-
x + y = MAX_VALUE + 1
donne des paires de (a,b) qui sont des combinaisons invalides,Overflow se produirait pour elles. De la même manière:-
x + y = MIN_VALUE – 1
donne des paires de (a,b) qui sont des combinaisons invalides,Underflow se produirait pour elles.
Les valeurs limites (dessinées uniquement pour le cas de débordement) sont en train d’être montrées comme la ligne orange dans la figure de droite.
Pour un autre exemple, si les valeurs d’entrée étaient les mois de l’année, exprimés sous forme d’entiers, le paramètre d’entrée ‘mois’ pourrait avoir les partitions suivantes :
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
La frontière entre deux partitions est l’endroit où le comportement de l’application change et n’est pas un nombre réel lui-même. La valeur limite est la valeur minimale (ou maximale) qui se trouve à la limite. Le nombre 0 est le nombre maximum dans la première partition, le nombre 1 est la valeur minimum dans la deuxième partition, les deux sont des valeurs limites. Des scénarios de test doivent être créés pour générer des entrées ou des sorties qui tomberont sur et de chaque côté de chaque limite, ce qui donne deux scénarios par limite. Les cas de test de chaque côté d’une frontière doivent être dans le plus petit incrément possible pour le composant testé, pour un entier, c’est 1, mais si l’entrée était une décimale à 2 positions, ce serait .01. Dans l’exemple ci-dessus, il y a des valeurs limites à 0,1 et 12,13 et chacune doit être testée.
L’analyse des valeurs limites ne nécessite pas de partitions invalides. Prenons un exemple où un chauffage est allumé si la température est de 10 degrés ou plus froide. Il y a deux partitions (température≤10, température>10) et deux valeurs limites à tester (température=10, température=11).
Lorsqu’une valeur limite tombe dans la partition invalide, le cas de test est conçu pour garantir que le composant logiciel traite la valeur de manière contrôlée. L’analyse des valeurs limites peut être utilisée tout au long du cycle de test et est également applicable à toutes les phases de test.