0% ont trouvé ce document utile (0 vote)
75 vues9 pages

Comprendre le nombre cyclomatique en tests

Ce document décrit diverses métriques pour mesurer la qualité des tests unitaires, notamment le nombre cyclomatique, la couverture des conditions, des décisions et des chemins. Il présente également des exercices sur ces notions.

Transféré par

Ali Mahamat Issa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
75 vues9 pages

Comprendre le nombre cyclomatique en tests

Ce document décrit diverses métriques pour mesurer la qualité des tests unitaires, notamment le nombre cyclomatique, la couverture des conditions, des décisions et des chemins. Il présente également des exercices sur ces notions.

Transféré par

Ali Mahamat Issa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Nombre cyclomatique

Le nombre total de chemins est généralement trop grand pour être, en pratique, représentatif
du nombre de tests à réaliser. On utilise plutôt une autre mesure, issue de la théorie des gra-
phes : le nombre cyclomatique.

Il mesure le nombre de chemins indépendants du graphe de contrôle. En eet, l'ensemble des


circuits d'un graphe forme un espace vectoriel, qui a donc une dimension : c'est le nombre
cyclomatique.

Il y a plusieurs manières de le calculer (pour un graphe connexe) :


I E ¡ N + 2 où E est le nombre d'arcs et N le nombre de n÷uds
I nombre de zones délimitées dans le plan (si le graphe est planaire)
I nombre de décision binaire + 1 (si uniquement des décisions binaires)

1
Exercice
Pour la fonction found dont le code est donné ci-dessous :
1. Donner le graphe de contrôle G(found) associé à la fonction f .
2. Calculer le nombre cyclomatique n de G(found).
3. Construire l'expression régulière représentant les chemins d'execution.
4. Exhiber les n chemins indépendants choisis et les n cas de test correspondants.

2
boolean found (int[] tab, int n){
int inf = 0;
int sup = [Link] ¡ 1;
int middle;
while (inf < sup) {
middle = (inf + sup) / 2;
if (n < tab[middle])
sup = middle;
else
inf = middle + 1;
}
return (n == tab[middle]);
}

3
Exercice
Pour la fonction f dont le code est donné ci-dessous :
1. Donner le graphe de contrôle G(f ) associé à la fonction f .
2. Donner l'expression des chemins du graphe de contrôle G(f ).
3. En déduire le nombre de chemins de contrôle du graphe G(f ).
4. Calculer le nombre cyclomatique de G(f ).
5. Donner des DT qui vont couvrir les instructions return de la fonction.
6. Donner un chemin de contrôle non exécutable de G(f ).

4
int f (int b, int c, int x) {
int a, y , d , e;
if (0 < b && b < c && c < 10) {
d = 2 * b;
f = 3 * c;
if (x >= 0) {
y = x;
e = c;
if (y = 0) {
a = f ¡ e;
if (d < a) {
return a;
} else {
return d;
}
}
}
}
return ¡1;
}

5
Couverture des conditions
Une condition est une formule atomique d'une décision (une formule qui n'est pas un opéra-
teur logique).

La couverture des conditions consiste à s'assurer que les tests exercent toutes les conditions
de chaque décision au moins une fois à true et une fois à false.

Attention, la couverture des conditions n'implique pas la couverture des décisions. En eet,
considérez les instructions suivantes :

bool f (bool e, bool f ) { return (e && f ) }

if (f (a,b)) ...

6
Couverture des conditions mutiples

La couverture des conditions multiples consiste à s'assurer que les test exercent toutes les
combinaisons de valeurs possibles pour les conditions.

Attention, la couverture des conditions n'implique toujours pas la couverture des décisions.
En eet, considérez les instructions suivantes :

bool f (bool e, bool f ) { return false; }

if (f (a,b)) ...

Ce genre de problème est détecté par la couverture des décisions.

Remarque. Le nombre de tests à réaliser pour une décision est exponentiel en le nombre de
conditions de cette décision.

7
Couverture des conditions/décisions modiée
La couverture des conditions/décisions modifiée (MC/DC) consiste à vérifier que chaque
condition d'une décision a un impact sur la décision [DO178] :
 every condition in a decision in the program has taken all possible outcomes at least
once
 every condition in a decision has been shown to independently aect that decision's
outcome

Autrement dit, pour chaque décision, pour chaque condition de cette décision, il faut au
moins deux tests qui dièrent uniquement sur la valeur de cette condition, et qui changent la
valeur de la décision.

Remarque. La couverture MC/DC est plus faible que la couverture des conditions multiples
mais elle est plus réaliste en pratique (elle permet d'éviter l'explosion combinatoire).

8
Exercice
Reprendre la fonction f dénie précédemment et fournir des données de test de manière à
atteindre les niveaux de couverture suivants :
1. couverture des décisions
2. couverture des conditions
3. couverture des conditions multiples
4. couverture des conditions/décisions modiée

Vous aimerez peut-être aussi