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

Download Report

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

Tests et Validation du logiciel
02/2007 – 06/2007
1
Test structurel

Tests structurels statiques
Revue de codes
 Estimation de la complexité

2
Test structurel statique

Introduction
Regroupe 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.

3
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)
4
Revue de code
Exemple de check liste

Commentaires



Taux
Intérêt du commentaire
Instructions de tracing d’exécution

Définition de constantes

Comparaisons



Structure du code

Goto…

Contrôle


Références aux données





Variables non initialisées
Pointers fantômes
Gestions de indices de tableaux
Libération de allocations





Calculs





Entre types consistants
Vérifier opérateurs < <= et > >=
Conversions de types
Overflow
Division par zéro
Précédence des opérateurs
Taille des modules


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
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.
Forme des décisions


Complexité des conditions
Utilisation de comparaison <> dans une boucle
5
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é
6
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.

7
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.
8
Métriques d’Halstead

Exemple : a := a + 1;
3 opérateurs  + := ;
 2 opérandes  a 1

9
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
L = N1 + N2
Vocabulaire du programme
Taille observée du programme
Mais aussi

Le = n1(Log2 n1) + n2 (Log2 n2)
V = L Log2 (n1 + n2)
D = (n1/2) (N2/n2)
L1 = 1/D
E = V/L1
B = V/3000
T = E/S

NB log2=logarithme en base 2
Taille estimée du programme
Volume du programme
Difficulté du programme
Niveau du programme
Effort
Nombre d’erreurs
Temps
10
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;
11
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
12
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.

13
Métriques de Mc Cabe

Calcul du nombre cyclomatique:

Cas n° 1: 1 point d’entrée; 1 point de sortie


Cas n° 2 i points d’entrée; s points de sortie


v= e-n +2
v=e-n+i+s
Rappel
v = nombre cyclomatique
 n = Nombre de noeuds
 e = Nombre d’arcs

14
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 !!!
15
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.
16
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, …)
17
Tests structurels dynamiques
Objectif :
 Produire les dt qui exécuteront un certain
ensemble de comportements (chemins
dans le graphe de contrôle) du
programme.

18
Chemins dans un graphe de
contrôle

Graphe de contrôle
1 seul sommet
 1 seule sortie
 Nœuds = blocs d’instructions
 Arcs=possibilité de transfert d’un nœud à un
autre


Chemin de contrôle : chemin qui part de
l’entrée pour rejoindre la sortie du
graphe
19
Graphe de contrôle
20
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
21
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.

22
Expression des chemins

Le graphe G1 peut-être exprimé sous forme
algébrique sous la forme suivante :



Simplification de l’expression de chemins



G1 = abdfg+ abdeg+ acdfg+ acdeg
le signe + désigne le «ou» logique entre 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.
23
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é

24
Expression des chemins
25
Expression des chemins
Soit le programme P2
suivant :


if n <= 0 then
n := 1-n
end;
if not 2 div n
Then n := n / 2
Else n := 3*n + 1
end ;
write(n);
Fournir le graphe de
contrôle
Calculez l’expression
des chemins
26
Expression des chemins
Soit le programme P3 suivant :


i := 1;
found:= false;
while(not found) do
begin
if (a[i] = E) then
begin
found:= true;
s := i;
end;
i := i + 1;
end;
Fournir le graphe de contrôle
Calculez l’expression des
chemins
27
Expression des chemins
Soit le programme P4
suivant :
For (i=1 to 10)
for (j=1 to 10)
print i*j
next
next
28
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.
29
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 !
30
Chemins exécutables et non
exécutables

Chemin non
exécutable : bug
systématique ?

P le programme
suivant :

Fournir le graphe de
contrôle
 Fournir une DT pour
traiter chaque
chemin
Read (choix);
If choix=1 then x:=x+1;
If choix=2 then x:=x-1;
31
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.
32
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 ….
33