Tests et Validation du logiciel

33
1 Tests et Validation du logiciel 02/2007 – 06/2007

description

Tests et Validation du logiciel. 02/2007 – 06/2007. Test structurel. Tests structurels statiques Revue de codes Estimation de la complexité. Test structurel statique. Introduction Regroupe les méthodes qui ne nécessitent pas l’exécution du code binaire. - PowerPoint PPT Presentation

Transcript of Tests et Validation du logiciel

Page 1: Tests et Validation du logiciel

1

Tests et Validation du logiciel

02/2007 – 06/2007

Page 2: Tests et Validation du logiciel

2

Test structurel

Tests structurels statiquesRevue de codesEstimation de la complexité

Page 3: Tests et Validation du logiciel

3

Test structurel statique

IntroductionRegroupe les méthodes qui ne nécessitent

pas l’exécution du code binaire. Intérêt de ce type de tests : caractère

absolu de son approche Inconvénient : pas d’exécution du

programme avec des « vrai » DT.

Page 4: Tests et Validation du logiciel

4

Revue de code

Revue de Code REVUE ou iNSPECTION (REVIEW OR iNSPECTION), IEEE

729: Examen détaillé d’une spécification, d’une conception ou

d’une implémentation par une personne ou un groupe de personnes, afin de déceler des fautes, des violations de normes de développement ou d'autres problèmes.

Technique de contrôle plutôt que de test

Auto-correction (Desk-checking) / Lectures croisées (Author-reader cycle)

Page 5: Tests et Validation du logiciel

5

Revue de codeExemple de check liste

Commentaires Taux Intérêt du commentaire Instructions de tracing d’exécution

Structure du code Goto…

Références aux données Variables non initialisées Pointers fantômes Gestions de indices de tableaux Libération de allocations

Calculs Conversions de types Overflow Division par zéro Précédence des opérateurs

Forme des décisions Complexité des conditions Utilisation de comparaison <> dans une boucle

Définition de constantes

Comparaisons Entre types consistants Vérifier opérateurs < <= et > >=

Contrôle Terminaison des boucles Sortie des procédures et fonctions conditions initiales Une itération en trop (ou en moins) Toutes les possibilités d’un case testées

Taille des modules Mesures de complexité

Le plan qualité prévoit en général l’utilisation de règles de programmation qui doivent également être vérifiées.

Page 6: Tests et Validation du logiciel

6

Mesures de complexité

Statistiquement, la complexité d’un programme est corrélée avec le nombre de ses défauts. Plusieurs modèles mathématiques proposent une définition de cette complexité

Page 7: Tests et Validation du logiciel

7

Métriques d’Halstead

Complexité liée à la distribution des variables et instructions.

Métrique textuelle pour évaluer la taille d'un programme.

Alternative au calcul du nombre de lignes de code source.

Calcul a posteriori qui ne peut donc en aucun cas supplanter COCOMO ou la méthode des points de fonction.

Page 8: Tests et Validation du logiciel

8

Métriques d’Halstead

La base des mesures est fournie par le vocabulaire utilisé. On évalue le nombre d’opérateurs et d’opérandes. n1 = nombre d’opérateurs uniques n2 = nombre d'opérandes uniques (termes,

constantes , variables) N1 = nombre total d’apparition de ces opérateurs N2 = nombre total d’apparition de ces opérandes.

Page 9: Tests et Validation du logiciel

9

Métriques d’Halstead

Exemple : a := a + 1;3 opérateurs + := ;2 opérandes a 1

Page 10: Tests et Validation du logiciel

10

Métriques d’Halstead

Mise en œuvre : « Une fois que le code a été écrit, cette mesure peut être appliquée pour prédire la difficulté d’un programme et d’autres quantités, en employant les équations de Halstead :

l = n1 + n2 Vocabulaire du programmeL = N1 + N2                             Taille observée du programme

Mais aussi

Le = n1(Log2 n1) + n2 (Log2 n2)   Taille estimée du programmeV = L Log2 (n1 + n2)                       Volume du programmeD = (n1/2) (N2/n2)                           Difficulté du programmeL1 = 1/D                                           Niveau du programmeE = V/L1                                           EffortB = V/3000                                       Nombre d’erreursT = E/S                                             Temps

NB log2=logarithme en base 2

Page 11: Tests et Validation du logiciel

11

Métriques d’Halstead

Calculez les mesures de Halstead pour le pseudo-code suivant :

read x , y , z;

type=’’scalène’’;

i f ( x==y or x==z or y==z ) type=”isocèle”;

i f ( x==y and x==z ) type=”équilatéral”;

i f ( x>=y+z or y>x+z or z>=x+z ) type=”pas un triangle”;

i f ( x<=0 or y<=0 or z<=0) type=”données erronées”;

print type;

Page 12: Tests et Validation du logiciel

12

Métriques de Mc Cabe

Mac Cabe étudier le logiciel en analysant le graphe de contrôle du programme et calcule la complexité structurelle ou nombre cyclomatique de ce graphe

Soit n = Nombre de noeuds (blocs d’instructions

séquentielles) e = Nombre d’arcs (branches suivies par le

programme) v = nombre cyclomatique

Page 13: Tests et Validation du logiciel

13

Métriques de Mc Cabe

Le nombre cyclomatique donne une évaluation du nombre des chemins indépendants dans le graphe et donc une indication sur le nombre de tests nécessaires

Cette métrique indique la borne supérieure du nombre de tests à effectuer pour que tous les arcs soient couverts au moins une fois.

Page 14: Tests et Validation du logiciel

14

Métriques de Mc Cabe

Calcul du nombre cyclomatique: Cas n° 1: 1 point d’entrée; 1 point de sortie

v= e-n +2 Cas n° 2 i points d’entrée; s points de sortie

v = e - n + i + s

Rappelv = nombre cyclomatique n = Nombre de noeuds e = Nombre d’arcs

Page 15: Tests et Validation du logiciel

15

Métriques de Mc Cabe

Dans la pratique il semble que la limite supérieure du nombre cyclomatique soit de 30 environ.

La valeur maximum du nombre cyclomatique peut être définie comme un critère de qualité dans le plan qualité.

Rq : Le ‘selon’(switch) peut donner un nombre cyclomatiquecatastrophique avec une compréhension fort simple du code !!!

Page 16: Tests et Validation du logiciel

16

Métriques de Mc Cabe

Exercice : soit le programme « recherche dichotomique » en langage C:void recherche_dico (elem cle, elem t[], int taille, boolean &trouv, int &A){ int d, g, m;

g=0; d=taille -1;A (d+g) /2;if (t[A]= =cle) trouv=true;else trouv=false;while (g <=d && !trouv)

{ m= (d+g) /2;if (t[m]= =cle){ trouv=true;

A=m;}else if (t[m]> cle) g=m+1;

else d=m-1;}

}Calculer le nombre cyclomatique de cette procédure.

Page 17: Tests et Validation du logiciel

17

Tests structurels dynamiques

Basés sur le graphe de flot de contrôle (couverture de toutes les instructions, toutes les branches, tous les chemins, …)

Basés sur la couverture du flot de données(toutes les définitions de variable, toutes les utilisations, …)

Page 18: Tests et Validation du logiciel

18

Tests structurels dynamiques

Objectif : Produire les dt qui exécuteront un

certain ensemble de comportements (chemins dans le graphe de contrôle) du programme.

Page 19: Tests et Validation du logiciel

19

Chemins dans un graphe de contrôle

Graphe de contrôle1 seul sommet1 seule sortieNœuds = blocs d’instructionsArcs=possibilité de transfert d’un nœud à un

autreChemin de contrôle : chemin qui part de

l’entrée pour rejoindre la sortie du graphe

Page 20: Tests et Validation du logiciel

20

Graphe de contrôle

Page 21: Tests et Validation du logiciel

21

Expression des chemins

Exemple : soit P le programme suivant

If x <= 0 then x:=-x

Else x:=1-x;

If x=-1 then x:=1;

Else x:=x+1;

Writeln(x);

P admet le graphe ci contre

Page 22: Tests et Validation du logiciel

22

Expression des chemins

Le graphe G1 est un graphe de contrôle qui admet une entrée -le noeud a -, une sortie -le noeud g. le chemin [a, c, d, e, g]est un chemin de

contrôle, le chemin [b, d, f, g]n’est pas un chemin de

contrôle.

Page 23: Tests et Validation du logiciel

23

Expression des chemins

Le graphe G1 peut-être exprimé sous forme algébrique sous la forme suivante : G1 = abdfg+ abdeg+ acdfg+ acdeg le signe + désigne le «ou» logique entre chemins.

Simplification de l’expression de chemins G1 = a (bdf+ bde+ cdf+ cde) g G1 = a (b + c) d (e + f) g

Cette expression s’appelle l’expression des chemins du graphe.

Page 24: Tests et Validation du logiciel

24

Expression des chemins

Facilité de construction en se basant sur un graphe structuré.

Association d’opération (+ ou *) aux structures primitives d’un graphe structuré

Page 25: Tests et Validation du logiciel

25

Expression des chemins

Page 26: Tests et Validation du logiciel

26

Expression des chemins

Soit le programme P2 suivant :

if n <= 0 then n := 1-n

end;if not 2 div n Then n := n / 2Else n := 3*n + 1end ;write(n);

Fournir le graphe de contrôle

Calculez l’expression des chemins

Page 27: Tests et Validation du logiciel

27

Expression des chemins

Soit le programme P3 suivant :

i := 1;found:= false;while(not found) dobegin

if (a[i] = E) thenbegin

found:= true;s := i;

end;i := i + 1;

end;

Fournir le graphe de contrôle Calculez l’expression des

chemins

Page 28: Tests et Validation du logiciel

28

Expression des chemins

Soit le programme P4 suivant :

For (i=1 to 10)

for (j=1 to 10)

print i*j

next

next

Page 29: Tests et Validation du logiciel

29

Chemins exécutables et non exécutables

Reprenons le graphe ci contre

Trouver une DT permettant de couvrir le chemin [a,b,d,f,g]

On dit que ce chemin est non exécutable.

Page 30: Tests et Validation du logiciel

30

Chemins exécutables et non exécutables

Trouver une DT permettant d’exécuter le chemin

[a,c,d,e,f,g,h]

De nouveau… expression de chemin !

Page 31: Tests et Validation du logiciel

31

Chemins exécutables et non exécutables

Chemin non exécutable : bug systématique ?

P le programme suivant :

Read (choix);

If choix=1 then x:=x+1;

If choix=2 then x:=x-1;

Fournir le graphe de contrôle

Fournir une DT pour traiter chaque chemin

Page 32: Tests et Validation du logiciel

32

Chemins exécutables et non exécutables

P le programme suivant :

Read (choix);

If choix=1 then x:=x+1;

If choix=2 then x:=x-1;

Restructurer le programme

Fournir le nouveau graphe de contrôle

Fournir une DT pour traiter chaque chemin

Fournir l’expression de chemin.

Page 33: Tests et Validation du logiciel

33

Expression et nombre de chemins

Exemples d’expressions déjà traitée: ab(c(1 + d)eb)*f a (1+b)c(e+d)f a ( 1+b c (1 + de (1 + fg (1 + i) ) ) h

Lien direct entre expression et nombre de chemins de contrôle maximum Remplacer chaque nœud par « 1 » et effectuer

l’operation arithmétique. 1*1(1(1+1)1*1)*1=2 1(1+1)1(1+1)1=4 Le dernier ….