Vous êtes sur la page 1sur 8

LOG2000

Illustration des techniques de test


S.Fourmanoit E.Merlo R.Roy

Résumé
Ce document exemplifie l’utilisation de différentes méthodes simples de
tests logiciel à boı̂te blanche sur un programme jouet de décompte de
mots adapté de l’exemple désormais classique de K. Gallagher.

École Polytechnique de Montr´eal, 2001


LOG2000 - Illustration des techniques de test

Le programme wc.cpp, compteur de mots

1 #include <iostream .h> 11 while ( ! cin . eof () ) f


2 12 nc += 1;
3 void main(void) f 13 if ( c == ’ nn’ )
4 char c ; // Current caracter 14 nl += 1;
5 int nl = 0, // Lines number 15 if (( c == ’ ’ ) jj ( c == ’ nn’ ) jj ( c == ’ n t ’ ))
6 nw = 0, // Words number 16 inword = false;
7 nc = 0; // Caracters number 17 else if ( ! inword ) f
8 bool inword = false; // Inside word flag 18 inword = true;
9 19 nw += 1;
10 cin . get (c); 20 g
21 cin . get (c);
22 g
23
24 cout << nl << endl
25 << nw << endl
26 << nc << endl;
27 g

École Polytechnique de Montréal, 2001 1


LOG2000 - Illustration des techniques de test

Graphe de flot du programme

V V
14 16

V 12 F F 21
13 15
6 7
F 17

5 8
V 18 19

10 11

F
24 25 26

F IG . 1 – Graphe de flot de wc.cpp

École Polytechnique de Montréal, 2001 2


LOG2000 - Illustration des techniques de test

Couverture des énoncés

Pour couvrir tous les énoncés, un examen rapide de la figure 1 nous apprend
qu’il suffit de passer succesivement par chacune des deux branches condition-
nelles des noeuds 11, 15 et 17 (losanges verts), ainsi que par la branche ’vrai’
du noeud 13. En clair, cela correspond à une entrée :
1. Non vide (noeud 11)
2. Contenant un retour chariot (noeud 13)
3. Contenant au moins deux caractères, un retour chariot, un espace ou une
tabulation ET un autre (noeud 15)
4. Contenant au moins un mot (noeud 17)
L’examen des règles précédentes nous apprend que toute entrée contenant au
moins un retour chariot et un caractère qui n’est ni un retour chariot, ni un
espace, ni une tabulation assurera la couverture des énoncés.

École Polytechnique de Montréal, 2001 3


LOG2000 - Illustration des techniques de test

Couverture des branches

Pour le programme wc.cpp, les conditions à respecter pour couvrir les branches
du programme seront identiques à celles assurant la couverture des énoncés, à
la différence qu’il faudra maintenant également passer dans les deux branches
conditionnelles du noeud 13. Cette fois, l’entrée doit :
1. Être non vide (noeud 11)
2. Contenir aux moins deux caractères, un retour chariot et un autre (noeud 13)
3. Contenir au moins deux caractères, un retour chariot, un espace ou une ta-
bulation ET un autre (noeud 15)
4. Contenir au moins un mot (noeud 17)
Ainsi, une entrée contenant au moins un retour chariot et un caractère qui n’est
ni un retour chariot, ni un espace, ni une tabulation assurera également la cou-
verture des branches du programme.

École Polytechnique de Montréal, 2001 4


LOG2000 - Illustration des techniques de test

Couverture des paires définition-référence

Le programme wc.cpp utilise cinq variables, dont les définitions et les


références sont présentes aux lignes suivantes :

Variables Définitions Références


c 10, 21 13, 15
nl 5, 14 14, 24
nw 6, 19 19, 25
nc 7, 12 12, 26
inword 8, 16, 18 17

C’est la combinaison deux à deux des noeuds de définition et des noeuds de


référence pour une même variable qu’il nous faut couvrir. Ici, il nous faut ainsi
traiter 19 cas.

École Polytechnique de Montréal, 2001 5


LOG2000 - Illustration des techniques de test

Couverture des paires définition-référence (suite)


Paires (Définition, référence) Contraintes résultant sur l’entrée
(10, 13) Au moins un caractère
(10, 15) Au moins un caractère
(21, 13) Au moins deux caractères
(21, 15) Au moins deux caractères
(5 , 14) Au moins une ligne
(5 , 24) Entrée vide
(14, 14) Au moins deux lignes
(14, 24) Au moins une ligne
(6 , 19) Au moins un mot
(6 , 25) Entrée vide
(19, 19) Au moins deux mots
(19, 25) Au moins un mot
(7 , 12) Au moins un caractère
(7 , 26) Entrée vide
(12, 12) Au moins deux caractères
(12, 26) Au moins un caractères
(8 , 17) Le premier caractère n’est pas un séparateur (’ ’, ’\n’ ou ’\t’)
(16, 17) Au moins un séparateur est suivi d’un caractère qui n’en est pas un
(18, 17) Il y a deux caractères consécutifs qui ne sont pas des séparateurs

École Polytechnique de Montréal, 2001 6


LOG2000 - Illustration des techniques de test

Couverture des paires définition-référence (suite et fin)

Il n’est ainsi pas possible ici d’utiliser un test unique permettant de respecter
toutes les contraintes précédentes, certaines de ces contraintes étant conflic-
tuelles : par exemple, il sera impossible d’avoir à la fois une entrée vide et au
moins deux caractères dans une même entrée.

On couvrira cependant l’ensemble des paires définition-référence par deux


tests, qui à eux seuls couvrent l’ensemble des contraintes à respecter :
1. Entrée vide : aucun caractère n’est passé au programme.
2. Entrée ne débutant pas par un séparateur, contenant au moins deux lignes et
deux mots, dont un sera composé de plus d’un caractère.

École Polytechnique de Montréal, 2001 7

Vous aimerez peut-être aussi