Tests et Validation du logiciel
description
Transcript of Tests et Validation du logiciel
1
Tests et Validation du logiciel
02/2007 – 06/2007
2
Test structurel
Tests structurels statiquesRevue de codesEstimation de la complexité
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.
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)
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.
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é
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.
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.
9
Métriques d’Halstead
Exemple : a := a + 1;3 opérateurs + := ;2 opérandes a 1
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
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;
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
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.
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
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 !!!
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.
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, …)
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.
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
20
Graphe de contrôle
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
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.
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.
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é
25
Expression des chemins
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
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
28
Expression des chemins
Soit le programme P4 suivant :
For (i=1 to 10)
for (j=1 to 10)
print i*j
next
next
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.
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 !
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
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.
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 ….