200 likes | 342 Views
Tests et Validation du logiciel. 02/2007 – 06/2007. Couverture de flot de contrôle. Inconvénients tous-les-chemins-indépendants La modification du flot d’un décision ne génère pas forcément un chemin indépendant
E N D
Tests et Validation du logiciel 02/2007 – 06/2007
Couverture de flot de contrôle • Inconvénients tous-les-chemins-indépendants • La modification du flot d’un décision ne génère pas forcément un chemin indépendant • Démarche vectorielle. Un « bug » sur un chemin complexe ne sera pas forcément décelé. Un chemin est une combinaison de chemins de base. Couvrir tous les chemins de base, ne signifie pas couvrir tous les chemins.
Exemple : P recherche d’une valeur dans un tableau à 2 valeurs program p (input, output) ; var a : array[1..2] of integer; E, i : integer; begin read(i, E, a[1], a[2]); found:= false; while i <= 2 do begin if (a[i] = E) then found:= true; else found:= false; i := i + 1; end; writeln(found); end; Appliquez la démarche Couverture de flot de contrôle
Couverture de flot de contrôle • A DT au hasard • DT1={i=3} • C1=[u1,u2] • Modification du sens de 2 • DT2={i=1,E=10,a[1]=20, a[2]=10} • C2=[u1,u3,u4,u6,u8,u3,u5,u7,u8,u2] • Modification du sens de 3 • DT3={i=1,E=10,a[1]=1à,a[2]=20} • C3=[u1,u3,u5,u7,u8,u3,u4,u6,u8,u2] • C2 et C3 ne sont pas indépendant car ils acceptent le même vecteur • V=[1,1,2,1,1,1,1,2] • C2 et C3 différents mais passent par les mêmes arcs le même nombre de fois. exclusion de DT3
Couverture de flot de contrôle • L’ajout de DT aurait permis de trouver d’autres chemins indépendants : • DT4={i=1,E=10,a[1]=10,a[2]=10} • DT5={i=1,E=10,a[1]=20,a[2]=30} • Constat sur les résultats • Seul C3 pouvait mettre en évidence le bug, cependant on l’a exclus car elle n’apportait pas de nouveau chemin indépendant
Couverture de flot de contrôle • Couverture des PLCS (Portion Linéaire de Code Suivie d’un Saut) • Objectif : augmenter le nombre de chemins pour accroître les possibilités de détection d’erreurs
Couverture de flot de contrôle • On considère, dans le graphe de flot de contrôle, 2 type de noeuds • l’entrée et la sortie et les noeuds qui constituent l’arrivée d’un branchement : type (a) • les autres noeuds : type (b). • On considère, dans le graphe de flot de contrôle, 2 type d’arcs • Ceux qui constituent un saut • Les autres noeud • On appelle PLCS un chemin partant d’un noeud de type (a) et aboutissant à nouveau à un noeud de type (a); l’avant dernier et le dernier noeud doivent constituer le seul saut du chemin.
Couverture de flot de contrôle • Exemple 005 INPUT A, C 010 B = 2 * A 020 A = A + 1 030 IF A < 0 THEN GOTO 60 040 B = -A 050 PRINT A + B 060 IF B = 2 * C THEN GOTO 80 070 A = 1 : GOTO 90 080 A = -2 : GOTO 20 090 PRINT A 100 END
Couverture de flot de contrôle • Rappel : On appelle PLCS un chemin partant d’un noeud de type (a) et aboutissant à nouveau à un noeud de type (a); l’avant dernier et le dernier noeud doivent constituer le seul saut du chemin. • Exemple : • [K20,K30,K40,K60,K80] est un PLCS • [K60,K80,K20] n’est pas PLCS (2 sauts)
Couverture de flot de contrôle • PLCS : • [K5, K20, K30, K60] • [K5, K20, K30, K40, K60, K80] • [K5, K20, K30, K40, K60, K70, K90] • [K20, K30, K60] • [K20, K30, K40, K60, K80] • [K20, K30, K40, K60, K70, K90] • [K60, K80] • [K60, K70, K90] • [K80, K20] • [K90, K100]
Couverture de flot de contrôle • Critère de couverture : • TER3 = PLCS couvertes / Total des PLCS • TER3=1TER2=1TER1=1 • Autres critères de type PLCS • TER4=Chemins composés de 2 PLCS / Total des chemins composés de 2 PLCS • TER5 =Chemins composés de 3 PLCS / Total des chemins composés de 3 PLCS
Couverture de flot de contrôle • Couverture des chemins limites et intérieurs • Les chemins limites traversent la boucle mais ne l’itèrent pas • Les chemins intérieurs itèrent la boucle une seule fois
Couverture de flot de contrôle • Couverture des chemins limites et intérieurs • Les chemins limites traversent la boucle mais ne l’itèrent pas • Les chemins intérieurs itèrent la boucle une seule fois
Couverture de flot de contrôle • Chemin limite • G1 [1,2,3] • Chemin intérieur • G1 [1,2,1,2,3] • G2 [1,2,4,2,3] • Pour satisfaire ce critère de couverture, il faut couvrir tous les chemins intérieurs et limites de chaque boucle
Couverture de flot de contrôle • Chemins limites : • [1,2,3,5,6] • [1,2,4,5,6] • Chemins intérieurs : • [1,2,3,5,2,3,5,6] • [1,2,3,5,2,4,5,6] • [1,2,4,5,2,3,5,6] • [1,2,4,5,2,4,5,6]
Couverture de flot de contrôle • Puissance de cette couverture si on ajoute des chemins qui exécutent 2 fois (ou n fois) la boucle
Couverture de flot de contrôle • Le critère MCDC (Modified Condition Decision Coverage) • Norme DO178B • Pour remplir ce critère il faut satisfaire les contraintes suivantes : • Chaque condition doit avoir été au moins une fois Vrai et une fois Fausse • La décision doit avoir été au moins une fois Vraie et une fois Fausse • Chaque condition seule influe sur le résultat de la décision
Couverture de flot de contrôle • Exemple : • If ((c1 and c2) or (c3 and c4)) and c5 then • Vrai/Faux 2 DTs suffisent au test • VRAI : DT1={c1=vrai, c2=vrai, c5=vrai} • FAUX : DT2={c5=false} • Test exhaustif : 32 combinaisons