1 / 19

Tests et Validation du logiciel

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

tierra
Download Presentation

Tests et Validation du logiciel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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.

  8. 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

  9. 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)

  10. 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]

  11. Couverture de flot de contrôle • Critère de couverture : • TER3 = PLCS couvertes / Total des PLCS • TER3=1TER2=1TER1=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

  12. 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

  13. 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

  14. 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

  15. 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]

  16. 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

  17. 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

  18. 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

  19. Couverture de flot de contrôle

More Related