La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "1 Tests et Validation du logiciel 02/2007 – 06/2007."— Transcription de la présentation:

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

2 2 Expression et nombre de chemins Rappel : Nb de chemins de contrôles = Nb de chemins exécutables + Nb de chemins non exécutables Certaines instructions comme le « for » génèrent énormément de chemins non exécutables

3 3 Expression et nombre de chemins s:=0; For i:=1 to 1000 do s:=s+a[i]; Expression des chemins ? Nombre de chemins de contrôle ? Nombre de chemins exécutables et non exécutables ?

4 4 Hiérarchie des tests techniques Soit T1 un test structurel qui nécessite la couverture des chemins Soient δ1=cdebcde et δ2=ce T1= {δ1, δ2}. Soit DT1={a[1]=-2, a[2]=3, a[3]=17,i=1} une donnée de test qui sensibilise le chemin de contrôle M1= abcebcdebcdebf M1 couvre δ1=cdebcde et δ2=ce Donc DT1 satisfait T1

5 5 Hiérarchie des tests techniques Rappel : M1= abcebcdebcdebf Soient T1 = {cdebcde, ce} Soit un T2 nécessitant les couvertures des chemins suivantes T2={bcd, e} On remarque que si T1 satisfait, alors T2 lest aussi On écrit : T1 T2 T1 est un test plus fort et plus fiable que T2 Règle de transitivité T1 T2 et T2 T3 alors T1 T3

6 6 Catégories de critères de couverture Approche Flot de contrôleavec couverture de tous les arcs : DT1={x=-2, y=0} sensibilise le chemin M1=abcd DT2={x=1, y=0} sensibilise le chemin M1=ace Si laffectation du noeud b est erronée, cette erreur ne sera pas détectée par DT1 et DT2. Approche Flot de données Laffectation de y au noeud b nest pas utilisée par DT1 et DT2 : il faudrait tester le chemin sensibilisé par la DT3={x=2, y=0}

7 7 Couverture de flot de contrôle Couverture de tous-les-noeuds But : sensibiliser tous les chemins de contrôle qui nous permettent de visiter tous les noeuds du graphe. Nom du critère de couverture : «tous les noeuds» A chaque critère de couverture est associée une valeur que lon appelle taux de couverture ou mesure de complétude. Taux de couverture : TER1 (Test Effectiveness Ratio 1 ou C1) TER1 = {noeuds couverts} / {noeuds} TER1=1 C1=1 Tous-les-nœuds est satisfait Toutes les instructions ont été exécutées au moins une fois

8 8 Couverture de flot de contrôle Exemple Function sum (x,y: integer) : integer; Begin If (x=0) then sum := x Else sum := x + y; End; Un test fonctionnel ne permettrait pas de trouver le défaut. Lanomalie est détectée par le chemin [acd] Toutes les DTs fournissent un TER=0.75

9 9 Couverture de flot de contrôle Soit le programme Read(x); … If x<>0 then x:=1; … Y:=1/x; Le critère tous-les-nœuds est satisfait par le chemin [abcd] cependant le bug ne sera pas mis en évidence

10 10 Couverture de flot de contrôle Couverture tous-les-arcs Le critère tous-les-nœuds est insuffisant pour détecter une majorité derreurs de programmation. TER2 = {arcs couverts} / {arcs} Lorsque le critère tous-les-arcs est totalement réalisé, cela implique que le critère tous-les-nœuds est satisfait Équivaut à la couverture de toutes les valeurs de vérité pour chaque nœud de décision

11 11 Couverture de flot de contrôle Conditionnelles composées Exemple : if ((a < 2) and (b = a)) Then x := 2 -a Else x := a -2 Le jeu de test DT1 = {a=b=1}, DT2 = {a=b=3} satisfait le critère tous-les-arcs sans couvrir toutes les décisions possibles -ex. DT3 = {a=3, b=2}.

12 12 Couverture de flot de contrôle Le graphe de flot de contrôle doit décomposer les conditionnelles : 4 DTs pour couvrir le multi graphe DT1={a=b=1} DT1={a=1,b=0} DT1={a=3,b=2} DT1={a=b=3}

13 13 Couverture de flot de contrôle Le critère condition-décision multiple est satisfait si Le critère tous les arcs est satisfait Chaque sous-expression dans les conditions prend toutes les combinaisons de valeurs possibles Si A & B Then ………..Nécessite : A = B = vrai A = B = faux A = vrai, B = faux A = faux, B = vrai Problème de la combinatoire lors dexpression logique complexe

14 14 Couverture de flot de contrôle Problème de la sensibilité du traitement des conditionnelles par le compilateur => proposer un graphe alternatif qui pourrait correspondre à une optimisation du compilateur

15 15 Couverture de flot de contrôle Note : bOK:=(a < 2) and (b = a); If bOK Then x := 2 -a Else x := a -2 Le problème devient « masqué » Ambiguïté du critère tous-les-arcs, car dépend de lalgo ainsi que du compilateur

16 16 Couverture de flot de contrôle Limites du critère tous-les-arcs et condition multiples Soit le programme suivant : évaluer linverse de la somme des éléments compris entre la place inf et sup dun tableau a comprenant des entiers positifs read(inf, sup); i := inf; sum:= 0; while(i <= sup) do begin sum:= sum+ a[i]; i := i + 1; end; writeln(1/sum); Existe-t-il un bug potentiel ?

17 17 Couverture de flot de contrôle La DT1 = {a[1]=50, a[2]=60,a[3]=80, inf=1, sup=3} couvre le critère tous- les-arcs adbc B1={u1,u2, u3,u2, u3, u2, u3, u4} Problème non détecté par le critère tous-les-arcs: si inf >sup erreur sur 1/sum Chemin maquant : [u1,u4] avec DT2={inf=2,sup=1} B2={u1, u4}

18 18 Couverture du flot de contrôle Couverture de tous-les-chemins-indépendants Le critère tous-les-chemins-indépendants vise à parcourir tous les arcs dans chaque configuration possible (et non pas au moins une fois comme dans le critère tous-les-arcs) Lorsque le critère tous-les-chemins- indépendants est satisfait, cela implique : le critère tous-les-arcs est satisfait, le critère tous-les-nœuds est satisfait.

19 19 Couverture de flot de contrôle Sur le programme P7, larc [d-c] est sensibilisé lorsque i > sup dans le contexte sum= 0 (la boucle nest pas activée) Dans le contexte sum0 (la boucle est activée)

20 20 Couverture du flot de contrôle Procédure : tous-les-chemins-indépendants 1 –Evaluer V(G) -> nombre cyclomatique NB : e – n + i + s OU Nb conditions simples Produire une DT au hasard couvrant le maximum de noeuds de décisions du graphe 3 -Produire la DT qui modifie la valeur de vérité (donc le flot) de la première instruction de décision de la DT de la seconde étape Recommencer létape 3 jusqua la couverture de toutes les décisions.

21 21 Couverture du flot de contrôle Exemple : soit le programme suivant Function goodstring(var count : integer) : boolean; var ch : char; begin goodstring:= false; count := 0; read(ch); if ch = a then begin read(ch) while(ch=b) or (ch=c) do begin count := count + 1; read(ch); end; if ch = x then goodstring= true; end; La fonction goodstring est censée reconnaître toutes les chaînes de caractères (fournies caractère par caractère) commençant par le caractère a, suivi dune série de b ou c (dont le nombre sera compté ) et se terminant par x. Si la chaîne est reconnue alors la fonction retourne vrai, sinon elle retourne false.

22 22 Couverture du flot de contrôle Construisez le graphe de flot de contrôle en décomposant les conditions multiples. Appliquez la démarche

23 23 Couverture du flot de contrôle

24 24 Couverture du flot de contrôle 1) V(G) = = 4+1 = 5 5 Chemins indépendants à trouver 2) DT normale = « abcx » Chemin sensibilisé : B1={0,1,2,3,4,5,3,6,4,5,3,6,7,8,9} 3) On choisi la première décision de B1 (1). La première était vrai, on choisi une DT pour linverser et donc sensibiliser le chemin B2 {0,1,9}. Dt=« b » B1 et B2 sont indépendants 3) On choisi la seconde décision de B1 (3) Première itération. Valeur vrai : arc(3,4) Dt dont le seconde caractère est <> de b. Ex DT3={(acx} Chemin sensibilisé : B3 {0,1,2,3,6,4,5,3,6,7,8,9} B1 contient {3,4} qui nest pas dans B3 et B2 contient {1,9} qui nest pas dans B3. B1, B2, B3 sont indépendants 2 à 2 3) Troisième condition….

25 25 Couverture du flot de contrôle Cette technique a mis en évidence 5 DT DT1={abcx} DT2={b} DT3={acx} DT4={ax} DT5={aba} Ces DT mettent en évidence les chemins de base du graphe précédent. Nb : les DT 1, 2 et 5 suffisent à satisfaire tous-les- arcs.

26 26 Couverture du flot de contrôle Pour prouver que des chemins sont indépendants, il suffit de trouver un arc qui nest pas contenu dans les deux chemins Si il ny a plus de conditions à étudier sur le chemin initial, on peut enchaîner sur les chemins secondaires mis en évidence

27 27 Couverture de flot de contrôle Exercice: Soit le programme P3 suivant : If n 0 then n := 1-n end; If n pair Then n := n / 2 Else n := 3*n + 1 end ; Write(n); Graphe de flot Calculer les DT suivant les critères : tous-les-noeuds, tous-les-arcs, tous-les-chemins- indépendants

28 28 Couverture du flot de contrôle Critères de test : tous-les-noeuds n = 0, n = -1 tous-les-arcs n = 2, n = -2 tous-les-chemins- indépendants n = -1, n = -2, n = 1, n = 2


Télécharger ppt "1 Tests et Validation du logiciel 02/2007 – 06/2007."

Présentations similaires


Annonces Google