Vous êtes sur la page 1sur 14

27/04/2015

Faculté des Sciences Économiques et de Gestion de Tunis

4
CHAPITRE

Test

2014-2015

Définition

« Le test est un processus manuel ou automatique, qui vise à établir qu’un


système vérifie les propriétés exigées par sa spécification, ou à détecter des
différences entre les résultats engendrés par le système et ceux qui sont
attendus par la spécification ». (norme IEEE 729)

Le test vise à mettre en évidence les erreurs d’un logiciel.

1
27/04/2015

Pratique actuelle du Test

Problématique: On ne peut pas tester tout le temps ni tous les cas


possibles
Il faut des critères pour choisir les cas intéressants et la bonne
échelle pour le test

Un logiciel est testé en cours de programmation et à l'issue de cette


phase de programmation par mise en œuvre des données similaires
aux données réelles

Les tests ne vérifient que la présence d'erreurs pas leur absence

Problématique

Plusieurs facteurs contribuent à rendre cette activité difficile:


Complexité du système
Taille
Etc.

Il vaut mieux procéder méthodiquement:


diviser l’étape de tests en phases
Planifier les tests
Utiliser des techniques de tests

2
27/04/2015

Planification des Tests


Planification
Description des principales phases du processus de test.

Procédures d'enregistrement des tests :


Ne pas se contenter d'exécuter les tests, penser systématiquement à
en enregistrer les résultats.
Effectuer un audit pour vérifier que les tests ont été effectués
correctement.

Contraintes
Anticiper ici les contraintes qui risquent d'affecter le processus de
test, comme le manque de personnel, par exemple.

Types de Test
Niveau de détail
(situation dans le CV)
Système
Intégration
Module
Unitaire

Niveau
Fonctionnel d’accessibilité
Boite Boite Noire
Robustesse Blanche
Performance
Ergonomie
Sûreté
Sécurité
Caractéristiques
(ce que l’on veut tester)

3
27/04/2015

Les phases de Test


Test unitaires : Fonctionnement correct des procédures

Test modules : Coopération des modules

Test du sous-système : Certain nombre de modules

Test d'intégration : Fonctionnement correct de l'ensemble


Adéquation aux spécifications des besoins

Test d'acceptation : Données réelles + client

Techniques des Tests

Test fonctionnel : Tests par Boîte Noire (TBN)


Fonction globale du programme
Partitionnement en classes d'équivalence

Test structurel : Tests par Boîte Blanche (TBB)


Inspection de code
Rechercher tous les chemins indépendants
Tester la validité des structures de données

4
27/04/2015

Techniques des Tests: Test par Boite Noire


Le TBN est utilisé pour tester un programme en vérifiant que les
sorties obtenues sont bien celles prévues pour des entrées données.

Le terme Boîte Noire est utilisé car le programme testé n'est pas
étudié.

Données de test

Programme

Résultats d’exécution

Test par Boite Noire : Classes d’équivalence


Méthode: Partition en classes
d’équivalence Classes Classes d'entrées
d'entrées correctes
incorrectes
C'est une technique qui consiste en
la définition de groupes de
données d'entrées ayant des
propriétés communes.

Le programme doit se comporter


de la même manière pour toutes
les données de la classe.
Exemple : Un programme prenant en entrée
des entiers de 3 chiffres
n < 100 : donnée non valide
n > 999 : donnée non valide Classes de
100 <= n <= 999 : : donnée valide sorties

5
27/04/2015

Techniques des Tests

Test fonctionnel : Tests par Boîte Noire (TBN)

Test structurel : Tests par Boîte Blanche (TBB)

Techniques des Tests: Test par Boite Blanche


Ce test consiste à analyser la structure interne du programme.
Les données de Test sont produites à partir d’une analyse du code
source.

Technique de vérification statique.

Selon des études, on peut détecter jusqu'à 60% des erreurs d'un
programme par cette technique.

6
27/04/2015

Test par Boite Blanche: Inspection de Code


Toutes les variables du programme sont-elles initialisées avant d'être
utilisées ?

Toutes les constantes ont-elles un nom ?

Pour chaque instruction conditionnelle, la condition est-elle correcte,


est-ce que chaque boucle termine ?

Lorsque l'on traite des tableaux, la borne inférieur est-elle 0, 1 ou autre


valeur ?

Si on utilise un stockage dynamique, a-t-on alloué l'espace


correctement ?

Les instructions composées sont-elles correctement parenthésées ?

Test par Boite Blanche: Inspection de Code


C'est une technique qui consiste à passer par tous les chemins
d'exécution possibles du composant, de manière à exécuter toutes les
instructions au moins une fois.
Un test exhaustif de chemins d'un programme est impossible à faire
de manière générale
Chemins d'exécutions : chemins tirés du graphe de flux (graphe de
décision).

si-alors-sinon faire tant que cas où

7
27/04/2015

Exemple: Mesure de complexité de Mac Cabe.


début
Complexité cyclomatique =
Nb. Arcs - Nb. Nœuds +2
1
Cette mesure donne le nombre de chemins
minimaux. Elle correspond au nombre de régions
2
du graphe de flot:
3

6 4

Supposons un programme représenté 8 7


5
par l’organigramme suivant: 9
11
10

Exemple: Mesure de complexité de Mac Cabe.


Le nombre cyclomatique
= Nb.Arcs - Nb. Nœuds +2 1
= 13-11+2= 4
2
Pour vérifier, on regarde les
chemins minimaux (un test par
chemin pour tester toutes les 3
possibilités du programme): 6 4
1-11
1-2-3-4-5-10-1-11
8 7 5
1-2-3-6-7-9-10-1-11
1-2-3-6-8-9-10-1-11 9
10 11

8
27/04/2015

Application 1: Test par Boîte Noire

On considère une procédure 'triangle' qui reçoit en paramètres 3


entiers a, b et c qui sont les longueurs des côtés d'un triangle.
La procédure retourne comme résultat un code:
0 si le triangle défini par a, b et c est invalide,
1 si le triangle est équilatéral,
2 si le triangle est isocèle et
3 pour un triangle valide quelconque (ni isocèle, ni équilatéral).

Donner un jeu d'essai pour cette procédure testant tous les cas de
figure en distinguant les 3 entrées a, b et c.

Application 1: Test par Boîte Noire

2. (a) La procédure 'triangle' renvoie 0 si le triangle est invalide


Triangle est invalide lorsqu'un côté est plus grand que la somme
des 2 autres ou si un côté au moins est nul

a = 10 b = 3 c = 4 a=0b=3c=4 a=0b=0c=3
a = 3 b = 4 c = 10 a=3b=0c=4 a=0b=3c=0
a = 3 b = 10 c = 4 a=3b=4c=0 a=3b=0c=0
a=0b=0c=0

9
27/04/2015

Application 1: Test par Boîte Noire

(b) 1 si les 3 côtés sont égaux (équilatéral)


a=3b=3c=3

(c) 2 si 2 côtés sont égaux (isocèle)


a=3b=3c=4
a=3b=4c=3
a=4b=3c=3

(d) 3 dans les autres cas


a=3b=4c=5

Application 2: Test par Boîte Blanche


si (x > 10)
alors a = a + 1;
Fin si
si (x % 2)
alors b = b + 1;
Fin si

(où x % 2 donne le reste de la division entière de x par 2).

1. Par quelle suite de nœuds faut-il passer pour satisfaire le critère


de couverture des instructions ? Donner un jeu d'essai minimum
qui satisfait ce critère.

2. Par quelle suite de nœuds faut-il passer pour satisfaire le critère


de couverture des arcs? Donner un jeu d'essai minimum qui
satisfait ce critère.

10
27/04/2015

Application 2: Test par Boîte Blanche

1. Couverture des instructions: toute instruction


1
élémentaire est exécutée au moins une fois (x>10)
x=12.
a=a+1 2
(x<=10)

2. Couverture des arcs


x=5, x=12. 3
(x%2=0)

b=b+1 4 (x%2 <>0)

Application 3: Test par Boîte Blanche


lire(x) Tant que (x >= y)
lire(y) faire
z=0 x=x-y
signe = 1 z=z+1
Si (x < 0) Fin
alors z=signe * z
signe = -1
x = -x
Fin si
si (y < 0)
alors
signe=-signe
y = -y
Fin si

11
27/04/2015

Application 3: Test par Boîte Blanche


1
lire(x)
lire(x) Tant que (x >= y) lire(y)
z=0
lire(y) faire signe = 1

z=0 x=x-y Si (x < 0) 2


signe = 1 z=z+1 signe = -1
3
Si (x < 0) Fin x = -x
alors z=signe * z
signe = -1 Si (y < 0) 4
x = -x signe=-signe
5
Fin si y = -y
si (y < 0)
alors Tant que (x >= y) 6
signe=-signe faire
y = -y x=x-y
z=signe * z 8 z=z+1
Fin si 7

12
27/04/2015

Application 2: Test par Boîte Blanche


Soit le code suivant ; table[i] dénote le ième élément du tableau table,
les indices variant de 1 au nombre d‘éléments du tableau :
found := false ;
if number of items # 0
then counter := 1 ;
while ( (not found ) and (counter <= number of items) )
loop
if table(counter) = desired element
then found := true ;
end if ;
counter := counter + 1 ;
end loop ;
end if ;
if found
then write(\the desired element exists") ;
else write (\the desired element does not exist") ;
end if

Application 2: Test par Boîte Blanche


found := false ; 1 Found=false
if number of items # 0
then counter := 1 ; Then IF
while ( (not found ) and (counter <= number of items) ) 2
loop
if table(counter) = desired element 3 Counter:=1c
then found := true ; Else
end if ;
counter := counter + 1 ; While 4
end loop ; Else
end if ;
if found IF 5 9
then write(\the desired element exists") ;
else write (\the desired element does not exist") ;
end if 6
Then
10
7 11
Else

12

13
27/04/2015

Application 4: Test par Boîte Blanche


Soit le programme de comparaison de chaînes de caractères suivant
exprimé en pseudo code :
equal : un booléen
string1, string2 : chaîne de caractères
Lire(string1, string2)
SI (string1.length = string2.length) // sring1.length donne la longueur de
la chaîne string1
Alors i 1 // la flèche correspond à une affectation = teste une égalité
Tant que ((i <= string1.length) et (string1.character[i] =
string2.character[i]))
// string1.character[i] donne le ième caractère de la chaîne string1
i i+1
Fin tant que
SI (i = string1.length + 1)
Alors Afficher("chaînes égales") // le premier caractère a l'indice 1
Fin si
Fin si

Application 4: Test par Boîte Blanche


1
Donner un jeu d'essai couvrant tous les
chemins possibles ; on suppose que la plus
petite chaîne a une taille <= 2 (0 ou 1 ou 2). 2 Si

a ab 3 i 1
ab
vide vide Tant que
aa ab
4
aa
aaa aab
(impossible car max longueur = 2)
5 i i+1
aa aa 6 Si

7
8 Afficher

14

Vous aimerez peut-être aussi