Vous êtes sur la page 1sur 2

Génie Logiciel Avancé

Année 2014-2015

Prof. Burkhart Wolff Thibaut Balabonski, Delphine Longuet


wolff@lri.fr blsk@lri.fr, longuet@lri.fr

TD 5 - Test à partir du graphe de flot de contrôle


Semaine du 3 novembre 2014

Exercice 1
On considère le programme suivant.
procedure mystere(A,B,X:positive)
if (A > 1 && B = 0) then X := X / A; endif;
if (A = 2 || X > 1) then X := X + 1; endif;
return X;
1. Donner le graphe de contrôle de la procédure mystere.
2. Quel est le nombre de chemins ? Quel est le nombre de chemins exécutables ?
3. Donner un ensemble de données d’entrée permettant de couvrir toutes les instructions.
4. Donner un ensemble de données d’entrée permettant de couvrir toutes les décisions (ou
tous les arcs).
5. Donner un ensemble de données d’entrée permettant de couvrir tous les chemins exécu-
tables.
Exercice 2
On veut écrire un jeu de tests pour le programme suivant, en utilisant des critères de couverture
sur le graphe de flot de contrôle.

int sqrt(int a) {
int tm = 1;
int sum = 1;
int i = 0;
while(sum <= a) {
i = i + 1;
tm = tm + 2;
sum = tm + sum;
}
return i;
}

1. Donner une spécification de ce programme.


2. Construire le graphe de flot de contrôle de ce programme.
3. Sélectionner un ensemble de chemins permettant de satisfaire le critère « toutes les
instructions ». Que peut-on dire à propos de la satisfaction du critère « toutes les déci-
sions » ?

1
4. On considère l’ensemble des chemins qui passent au plus 3 fois dans la boucle. Don-
ner pour chacun de ces chemins le cas de test associé en construisant par exécution
symbolique la condition de chemin correspondante.
5. Choisir une instance de test pour chacun de ces cas de test.

Exercice 3
On considère le programme suivant, qui calcule X N pour N ≥ 0.

int puissance(int X, int N) {


int S = 1;
int P = N;
while(P >= 1) {
if(P mod 2 != 0) {
P = P - 1;
S = S * X;
}
S = S * S;
P = P/2;
}
return S;
}

On veut générer des tests pour ce programme en utilisant un critère de couverture sur le
graphe de flot de contrôle.
1. Écrire la spécification de ce programme sous forme de pré et post-conditions.
2. Construire le graphe de flot de contrôle de ce programme.
3. Sélectionner un ensemble de chemins pour satisfaire le critère « toutes les décisions »
(équivalent au critère « tous les arcs »).
4. Sélectionner un ensemble de chemins pour satisfaire le critère « toutes les chemins de
longueur au plus k », où la longueur d’un chemin est comptée en nombre de nœuds.
Choisir k de façon à sélectionner les chemins passant au plus deux fois dans la boucle.
5. Pour trois des chemins trouvés à la question précédente, calculer par exécution symbo-
lique les conditions de chemin associées.
6. Donner des tests concrets pour chacun des cas de test obtenus.