Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Avant de présenter les principales méthodes de tests structurels, nous introduisons un certain
nombre de définition nécessaires à leur compréhension.
1.1.Ses entrées :
Les entrées d’un composant consiste en les :
– paramètres en entrées
– variables globales lues dans le composant
1.2.Ses sorties :
Les sorties d’un composant consiste en les :
– paramètres de la procédure ou de la fonction en sortie
– variables globales écrites dans le composant
Remarque : l’identification des entrées et sorties peut être le résulat d’une analyse du code si
ca n’apparaît pas clairement dans le code
1.3.Son corps
Décrit les relations entre les entrées et les sorties du composant.
VG1, V2 : Int ;
Procedure proc (P1 : in Int ;
P2: inout Int;
P3 :out Int)
Is
L1, L2 : Int ;
Begin
…
L1 := VG1 ;
VG1 := L2 ;
VG2 := 0 ;
…
End ;
1
2. Dossier de test
Les comportements attendues (ou sorties attendues) : ensemble des valeurs de sortie
conformes aux valeurs d’entrées. Représentent une instanciation des sorties du composant.
La conformité des sorties provient de la spécification de la procédure (i.e. ce que l’on veut
que la procédure réalise).
Ainsi toute la difficulté du test d’un logiciel provient, entre autre, de la détermination d’un jeu
d’entrées permettant d’acquérir un certain niveau de confiance dans le logiciel.
Note : Les autres difficultés proviennent de la manière de déterminer les valeurs de sorties attendues
par apport à un jeu d’entrées et du traitement des composants appelés.
5.1.Objectif du graphe
Faciliter l’analyse du flot de contrôle en représentant graphiquement tous les chemins d’exécution
potentiels d’un composant (liées à ces flots).
3
5.2.Définition du Graphe de Contrôle (GC)
C’est un graphe orienté avec un nœud d’entrée E est un nœud de sorti S.
5.3.Exemple
Soit le programme P1 suivant :
If x<=0 then x := -x
Else x := 1 – x ;
If x=-1 then x := 1
Else x := x + 1 ;
Writeln (x) ;
If P1 x<=0 then B1 x := -x
Else B2 x := 1 – x ;
If P2 x=-1 then B3 x := 1
Else B4 x := x + 1 ;
B5 Writeln (x) ;
Remarque : après cette étape, il ne devrait rester aucune instruction nom marquée.
P1
X <=0 X>0
G (P1) :
B1 B2
P2
X =-1 X <>-1
B3 B4
B5 S
4
6. Chemins de contrôle
C’est une suite d’arcs rencontrés dans le graphe, en partant du nœud d’entrée E et se terminant sur
le nœud de sortie S.
Un chemin de contrôle représente une exécution possible d’un composant à partir d’une donnée de
test (DT) donnée.
5.4.Exemple
Etant donnée le graphe de contrôle de l’exemple précédent.
On peut construire le Chemin de Contrôle suivant :
CC1 = [ E, P1, B1, P2, B3, B5, S ]
Par contre le chemin suivant n’est pas un CC :
[B1, P2, B3, B5, S]
Puisqu’il ne commence pas avec E.
5.5.Notation
Pour simplifier les représentations des CC, on adoptera la notation condensée illustrée sur le CC1
comme suit :
CC1 = E P1 B1 P2 B3 B5 S
7.1.Définition
C’est une expression algébrique qui exprime sous forme compact et formelle tous les chemins de
contrôle d’un GC donné.
7.2.Exemple
Etant donné le graphe G1 de l’exemple précédent. Construisons une telle expression :
5
Note : Il apparait fastidieux de construire cette expression algébrique compacte avec cette méthode.
C’est pour cela qu’on va proposer des règles simples pour y parvenir. C’est l’objet de la section
suivante.
B1 B2
Cette structure séquentielle exprime le fait que l’exécution du nœud B1 est immédiatement suivie de
l’exécution du nœud B2.
B1 B2
B3
Cette structure conditionnelle exprime le fait que l’exécution du nœud P (conditionnel) est suivie
selon sa valeur de vérité, soit par l’exécution B1 soit par l’exécution du nœud B2. Et dans les deux
cas, l’exécution se termine par le nœud B3.
P
F
V
C
S 6
Cette structure de boucle (itérative) exprime le fait que l’exécution débute par un nœud D suivie par
celle du test P. Ensuite, selon la valeur de vérité de P, on rentre dans le corps de la boucle pour
exécuter le nœud C (Corps) dans le cas ou le test est « Vrai », ou bien on sort de la boucle pour
exécuter le nœud S qui décrit le code à la sortie de la boucle dans la cas « Faux ».
A noter qu’après l’exécution du nœud C, on revient automatiquement re-tester le nœud P.
Borner la boucle
En pratique, le plus souvent, aucune boucle n’est censée être infinie si non le programme ne se
terminerait jamais.
Ainsi, si par exemple la boucle consiste en une itération sur la taille d’un tableau de quatre éléments,
alors au maximum on itérera 4 fois.
Dans ce cas les chemins potentiellement exécutés sont :
Remarque :
Ne pas confondre (C P)4 avec (C P)4. En effet,
(C P)4 , représente le chemin : CPCPCPCP
(C P)4 , est une expression algébrique qui représente l’ensemble des 5 chemins :
(C P)0 + (C P)1 + (C P)2 + (C P)3 + (C P)4
Exemple :
Reprenons l’exemple du programme P1 et de son graphe G(P1) :
Soit la DT1 = { x = 2 }
7
LA SUITE A VENIR