Test Processes and Techniques

Software Testing, Quality Assurance · exam

Faculté des Sciences Économiques et de Gestion de Tunis

CHAPITRE4

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.

27/04/2015

1

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

27/04/2015

2

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

Fonctionnel

Robustesse

Boite

Blanche

Boite Noire

Niveau

d’accessibilité

Performance

Ergonomie

Sûreté

Sécurité

Caractéristiques

(ce que l’on veut tester)

27/04/2015

3

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

27/04/2015

4

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

définition

C'est une technique qui consiste en

de

la

de

des

d'entrées

données

propriétés communes.

groupes

ayant

Classes

d'entrées

incorrectes

Classes d'entrées

correctes

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

Publicité

n < 100 : donnée non valide

n > 999 : donnée non valide

100 <= n <= 999 : : donnée valide

Classes de

sorties

27/04/2015

5

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.

27/04/2015

6

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,

correctement ?

a-t-on alloué

l'espace

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ù

27/04/2015

7

Exemple: Mesure de complexité de Mac Cabe.

Complexité cyclomatique =

Nb. Arcs - Nb. Nœuds +2

Cette mesure donne le nombre de chemins

minimaux. Elle correspond au nombre de régions

du graphe de flot:

début

1

2

3

Supposons un programme représenté

par l’organigramme suivant:

8

6

9

7

4

5

11

10

Exemple: Mesure de complexité de Mac Cabe.

Le nombre cyclomatique

= Nb.Arcs - Nb. Nœuds +2

= 13-11+2= 4

Pour vérifier, on regarde

les

chemins minimaux (un test par

chemin pour

les

possibilités du programme):

toutes

tester

1-11

1-2-3-4-5-10-1-11

1-2-3-6-7-9-10-1-11

1-2-3-6-8-9-10-1-11

1

2

3

4

5

10

11

6

9

7

8

27/04/2015

8

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:

(cid:1)0 si le triangle défini par a, b et c est invalide,

(cid:1) 1 si le triangle est équilatéral,

(cid:1) 2 si le triangle est isocèle et

(cid:1) 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 = 0 b = 3 c = 4

a = 0 b = 0 c = 3

a = 3 b = 4 c = 10

a = 3 b = 0 c = 4

a = 0 b = 3 c = 0

Publicité

a = 3 b = 10 c = 4

a = 3 b = 4 c = 0

a = 3 b = 0 c = 0

a = 0 b = 0 c = 0

27/04/2015

9

Application 1: Test par Boîte Noire

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

a = 3 b = 3 c = 3

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

a = 3 b = 3 c = 4

a = 3 b = 4 c = 3

a = 4 b = 3 c = 3

(d) 3 dans les autres cas

a = 3 b = 4 c = 5

Application 2: Test par Boîte Blanche

(x > 10)

a = a + 1;

(x % 2)

b = b + 1;

si

alors

Fin si

si

alors

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.

27/04/2015

10

Application 2: Test par Boîte Blanche

1. Couverture des instructions: toute instruction

élémentaire est exécutée au moins une fois

x=12.

(x>10)

a=a+1

2

2. Couverture des arcs

x=5, x=12.

1

3

(x<=10)

(x%2=0)

b=b+1

4

(x%2 <>0)

5

Application 3: Test par Boîte Blanche

Tant que (x >= y)

faire

x=x-y

z=z+1

Fin

z=signe * z

lire(x)

lire(y)

z=0

signe = 1

Si (x < 0)

alors

signe = -1

x = -x

Fin si

si (y < 0)

alors

signe=-signe

y = -y

Fin si

27/04/2015

11

Application 3: Test par Boîte Blanche

lire(x)

lire(y)

z=0

signe = 1

Si (x < 0)

alors

signe = -1

x = -x

Fin si

si (y < 0)

alors

signe=-signe

y = -y

Fin si

Tant que (x >= y)

faire

1

lire(x)

lire(y)

z=0

signe = 1

x=x-y

z=z+1

Fin

z=signe * z

Si (x < 0)

2

Si (y < 0)

4

3

signe = -1

x = -x

5

signe=-signe

y = -y

Tant que (x >= y)

6

z=signe * z

Publicité

8

faire

x=x-y

z=z+1

7

27/04/2015

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 ;

if number of items # 0

then counter := 1 ;

Then

while ( (not found ) and (counter <= number of items) )

loop

if table(counter) = desired element

then found := true ;

end if ;

counter := counter + 1 ;

While

end loop ;

end if ;

if found

then write(\the desired element exists") ;

else write (\the desired element does not exist") ;

end if

Then

IF

6

3

4

5

1

Found=false

IF

2

Counter:=1c

Else

Else

7

Else

9

10

11

12

13

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 (cid:2) 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 (cid:2) 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

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).

1

2

Si

a ab

a b

vide vide

aa ab

a a

aaa aab

i(cid:2)1

Tant que

3

4

(impossible car max longueur = 2)

aa aa

6

Si

i(cid:2)i+1

5

8

7

Afficher

27/04/2015

14