1 / 52

Utilisation des Structures Combinatoires pour le Test Statistique

Utilisation des Structures Combinatoires pour le Test Statistique. Sandrine-Dominique GOURAUD Équipe “Programmation et Génie Logiciel”, L.R.I. Co-encadrants: M.-C. Gaudel et A. Denise. Plan. Contexte Structures combinatoires Test statistique et qualité de test

Download Presentation

Utilisation des Structures Combinatoires pour le Test Statistique

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. Utilisation des Structures Combinatoires pour le Test Statistique Sandrine-Dominique GOURAUD Équipe “Programmation et Génie Logiciel”, L.R.I. Co-encadrants: M.-C. Gaudel et A. Denise

  2. Plan • Contexte • Structures combinatoires • Test statistique et qualité de test • Nouvelle approche du test statistique • Tirer des chemins • Optimiser la qualité de test • Validation de l’approche • Le prototype AuGuSTe • Résultats expérimentaux • Bilan et Perspectives

  3. Contexte

  4. Les structures combinatoires décomposables • La spécification de structures combinatoires consiste en un ensemble de règles de production construites à partir: • d’objets de base: ε (de taille 0) et atome (de taille 1) • d’opérateurs: union(+), produit(x), sequence, etc. • de contraintes de cardinalité Exemples: • Arbre binaire complet non vide: A= F+ AxA où F est l’atome de base représentant une feuille • Séquence de 3 à 5 feuilles: S= Sequence(F,Card=3..5)

  5. Les structures combinatoires décomposables • Résultats théoriques sur la génération aléatoire uniforme de telles structures [Flajolet,Zimmermann,VanCutsem,1994] • Complexité en n*log n pour des structures combinatoires de taille n • Complexité linéaire dans certains cas particuliers • Outils disponibles pour l’environnement MuPAD: • Le package CS [Corteel, Denise,Dutour,Sarron,Zimmermann] • Le package MuPAD-Combinat [Thiery & al]

  6. Le test de logiciel • Objectif: trouver des fautes/erreurs dans les programmes • Comment? En exécutant le programme sur un ensemble de données qu’on appelle jeu de test. • Les difficultés: • Trouver les bons jeux de test • Exécution et dépouillement • Quand arrêter les tests (critère)?

  7. Sélection d’un jeu de test? • Le test fonctionnel (boîte noire): sélection basée sur une spécification du système Ce que le système devrait faire… • Le test structurel (boîte de verre): sélection basée sur le programme i.e. on s’intéresse à différents chemins d’exécution Ce que le programme fait et comment • Le test statistique (ou aléatoire): sélection aléatoire (uniforme ou opérationnelle) dans le domaine des entrées du programme

  8. Sélection d’un jeu de test structurel/fonctionnel Pour sélectionner un jeu de tests, on part: • D’une modélisation du système/programme • D’un critère de test adapté à cette modélisation Exemples: • Spécification algébriques / Couverture des axiomes • Système à transitions étiquetées / Couverture des arcs • Texte du programme / Couverture des instructions

  9. Exemple: estTrie(tab,t) Spécification: le programme prend en entrée un tableau tab d’au plus 6 entiers et un nombre 0≤ t ≤6. Si les t premières valeurs du tableau tabsont triés en ordre croissant, alors il retourne vrai. Si les t premières valeurs du tableau tabne sont pas triés en ordre croissant, alors il retourne faux.

  10. INIT I0 C1 I2 B3 I4 I5 EXIT Exemple: estTrie • bool estTrie (tab: array 0..5 of int, t: int){ • int i:=0; • bool rep:=true; • if (t≤0) • then rep:= true; • else{ • while ((i<t+1) and rep){ • rep:= tab[i]≤tab[i+1]; • i:= i+1; • } • } • return rep; • }

  11. Pourquoi le test statistique? • Avantages: • Possibilité de faire du test plus intensif qu’avec les autres méthodes • Inconvénients: • Mauvaise couverture des cas particuliers (ex: cas d’exception) • Solution? • Le combiner avec une autre méthode de test [Thévenod-Fosse,Waeselynck,1991].

  12. Qualité d’un test statistique [TF,Wa] Soit E l’ensemble des éléments à couvrir N le nombre de tests La qualité de test qN est la probabilité minimale d’un élément de E d’être couvert lors des N tests qN =1-(1- pmin)N où pmin = min{p(e), eE} • Pour maximiser qN, il faut maximiser pmin • Une solution (pas toujours possible): Tirage uniforme dans E

  13. Relation entre N et qN [TF,Wa] qN =1-(1- pmin)N • Si je choisis de faire N tests, quelle sera ma qualité de test qN? • Si je désire atteindre une qualité de test qN, combien de tests suis-je censé effectuer? Avec pmin{0,1}

  14. Le test Statistique Structurel [TF,Wa] • Construction d’une distribution sur le domaine des entrées qui: • Maximise la qualité de test donc la probabilité minimale d’atteindre un élément du critère de couverture structurel considéré • N’écarte aucun point du domaine d’entrée • Avantages: • Bons résultats expérimentaux • Inconvénients: • Distribution déterminée de manière empirique dans certains cas

  15. Objectif de cette thèse • Méthode de test statistique: • qui s’applique à différents types de modélisation représentable sous forme de graphes, • qui optimise la qualité de test par rapport à un critère donné, • qui est automatisée • Apport possible des structures combinatoires pour le test

  16. Nouvelle approche pour le Test Statistique

  17. Nouvelle approche pour le Test Statistique Tirage aléatoire de chemins • L’ensemble des chemins d’un graphe peut se représenter facilement sous forme d’une spécification de structures combinatoires • Génération aléatoire de complexité linéaire • 2 étapes: 1) Tirer un ensemble de chemins adéquat 2) Passer des chemins aux données d’entrée qui permettent de les parcourir

  18. Test et structures combinatoires Première étape: Tirer un ensemble de chemins tel que la qualité de test soit optimale Remarque: • Idéalement, tirage parmi tous les chemins du graphe. • En pratique, tirage dans un sous-ensemble de chemins: la présence de circuits dans le graphe implique une infinité de chemins. En pratique, on limite la longueur n des chemins.

  19. Exemple: quel n choisir? INIT • Longueur du chemin élémentaire le plus long: 7 • Choix de n pour la suite: 11 • Nombre de passages dans la boucle entre 0 et 3  5 chemins de longueur ≤11 à considérer 1 I0 2 C1 3 5 I2 B3 I4 4 6 I5 7 EXIT

  20. v INIT v I0 e0 C1 e5 e1 e3 I2 B3 I4 e4 e6 e2 I5 e7 EXIT Graphe et structure combinatoire Atomes= arcs Séquence d’arcs= chemin S= v.S + v.e0.C.e7 C= e1.e2 + e3.B.e6 B= e4.I + ε I= e5.B S C

  21. Génération: dénombrement 3 chemins issus de S de longueur 7

  22. v INIT v I0 e0 C1 e5 e1 e3 I2 B3 I4 e4 e6 e2 I5 e7 EXIT Génération: tirage S= v.S + v.e0.C.e7 C= e1.e2 + e3.B.e6 B= e4.I + ε I= e5.B S7 ? 1/3 ? 2/3 vS6 ve0C4e7 0 1 1 vvS5 ve0e3B2e6e7 vve0C3e7 0 1 vvvS3 vvve0C2e7 1/2 1/2 vvve0e1e2e7 vvve0e3e6e7 ve0e3e4e5e6e7 Longueur=7

  23. Si le critère consiste à couvrir un ensemble de chemins : on construit la structure combinatoire correspondante Exemples: tous les chemins passant par l’arc a, tous les chemins passant par le sommet B3 puis par le sommet I4 … • Si le critère consiste à couvrir un ensemble d’éléments quelconque : ??? Exemples: tous les sommets, tous les arcs… Comment un tirage uniforme parmi des chemins peut-il assurer une bonne qualité de test pour une couverture d’autres éléments?

  24. Tirage de chemins Soit N le nombre de tests à générer. • Tirer aléatoirement, selon une distribution adéquate, N éléments e1,…,eN parmi les éléments à couvrir • Pour chaque ei, tirer aléatoirement et uniformément un chemin (de longueur ≤ n) parmi ceux qui passent par ei.

  25. INIT I0 C1 I2 B3 I4 I5 EXIT Exemple: • Critère: tous les sommets carrés • S={I2,I0,I4,I5} • 5 chemins de longueur  11. • Distribution uniforme p(I2)= 1/4 +1/41/5 +1/40 +1/41/5 =7/20 = 0.35 De même: p(I4)=11/20, p(I0)=1, p(I5)=1 pmin=p(I2)= 0.35 On n’obtient pas le pmin optimal !

  26. INIT I0 C1 I2 B3 I4 I5 EXIT Exemple: • Critère: tous les sommets carrés • S={I2,I4} • 5 chemins de longueur  11. • Distribution uniforme pmin=0.5 Comment pourrais-je maximiser automatiquement le pmin?

  27. Probabilité d’un élément La probabilité p(e) d’un élément e d’être atteint lors d’une exécution est: p(e)=p1(e)+p2(e) • Probabilité de tirer l’élément (étape 1): p1(e) • Un chemin passant par cet élément a été tiré (étape 2): où e’ est l’élément qui a été tiré (étape 1), c(e’) est le nombre de chemins passant par e’ c(e,e’) est le nombre de chemins passant par e et e’

  28. Calcul des c(e,e’): exemple de c(B3,I4) v v INIT INIT v v I0 I0 e0 e0 A C1 C1 e5 e5  X e3 e4 e3 e4 e5 B3 I4 B3 I4 B3 I4 • On en déduit la structure combinatoire puis la fonction de dénombrement e4 e4 A e6 e6 I5 I5 e7 e7 EXIT EXIT

  29. Une manière de définir la distribution • Pour optimiser la qualité de test, il faut maximiser pmin. Or pour tout e de E,

  30. Maximiser pmin sous les contraintes On résout ce problème d’optimisation par un simplex et on en déduit les p1(ei). Spmin=

  31. INIT I0 C1 I2 B3 I4 I5 EXIT Exemple: • Critère: tous les sommets carrés • Distribution uniforme pour les chemins • 5 chemins de longueur  11.

  32. Des chemins aux entrées Deuxième étape: Déterminer les entrées permettant d’exécuter les chemins tirés • Construction des prédicats associés aux chemins tirés (algorithme classique). • Résolution des prédicats (problème indécidable dans le cas général)

  33. Spécification: t[0..6] Chemin I0-C1-I2-I5 Prédicat calculé: t≤0 Ce chemin est faisable Entrées possibles: t=0 tab arbitraires Chemin I0-C1-B3-I5 Prédicat calculé: (t>0)  (t≤-1) Ce chemin est infaisable I0 I0 C1 C1 I2 I2 B3 B3 I4 I4 I5 I5 Exemple:

  34. Des chemins aux entrées • Plusieurs cas possibles pour la résolution de chaque prédicat: • Le prédicat a une solution: c’est notre donnée de test • Le prédicat n’a pas de solution: le chemin associé est infaisable • Le prédicat est indéterminé • Le calcul théorique des p1(ei) ne prend pas en compte les chemins infaisables

  35. Validation de l’approche

  36. Application au test statistique structurel • Modèle: graphe de contrôle du programme • Critères: • Tous les chemins de longueur ≤n • Tous les enchaînements • Toutes les instructions • Un prototype: AuGuSTe1 • Version 1: distribution basée sur les dominances • Version 2: distribution basée sur la résolution du système linéaire 1: Automated Generation of Statistical Tests

  37. P,C,N,n AuGuSTe À partir du programme P, on construit la spécification combinatoire du graphe de contrôle Construction de l’ensemble des éléments à tirer en fonction de C Pour chaque élément, construire l’ensemble des chemins passant par cet élément Déterminer la distribution sur les éléments Tirage des N éléments Tirage des N chemins de longueur inférieure ou égale à n Construction des prédicats associés aux chemins tirés Résolution randomisée des prédicats associés aux chemins Oui Non Echec? Ensemble de données de test

  38. Les expériences • Objectifs: valider l’approche • Comparer à l’approche du LAAS • Évaluer la stabilité • Passage à l’échelle possible? • Comment? • En utilisant les programmes et les mutants fournis par le LAAS • Plus de 10000 exécutions réalisées sur plus 2900 mutants

  39. Les programmes

  40. Évaluation par mutation des méthodes de test • Principe: détecter le maximum de mutants « non équivalents » • La proportion de mutants détectés est appelée score de mutation • La notion d’équivalence dépend en partie de l’environnement d’exécution des tests Exemple: présence de variables non initialisées  Mutants équivalents différents

  41. Les programmes et leurs mutants

  42. Les programmes et leurs mutants

  43. Critère de couverture, qN et N • Qualité de test visée: 0.9999 • Fct3 et Fct4: pour s’assurer de la stabilité, il y a 5 séries de tests.

  44. Résultats pour Fct1, Fct2 et Fct3 • Fct3: • Reflète la dépendance vis-à-vis de l’environnement • Lié aux variables non initialisées  détectables par un bon compilateur

  45. Graphe de contrôle de FCT4 Choix de n? n6+1219 soit n234 Soit plus de 1030 chemins à considérer Présence d’un nombre considérable de chemins infaisables

  46. Première expérience avec Fct4… • 1020 chemins dont 99,98% de chemins infaisables • AuGuSTe (v1): • pmin=0.5 • Mais en pratique tous les enchaînements ne sont pas couverts • AuGuSTe (v2): • pmin=0.5 • Mais en pratique, tous les enchaînements ne sont pas couverts • Distribution sur les éléments  tirage uniforme parmi les chemins

  47. pmin • Graphe équilibré => Tirage uniforme parmi les chemins • Deux sous-graphes indépendants  mauvaise couverture • Idée: Transformation automatique de la structure combinatoire

  48. Résultats pour Fct4: expérience 2 Score de mutation • Environ 1016 chemins de longueur ≤234 • Environ 50% de chemins infaisables • AuGuSTe (v1): pmin =0.3324 • Mais en pratique, tous les enchaînements ne sont pas forcément couverts • AuGuSTe (v2): pmin =0.4923 • En pratique, tous les enchaînements sont couverts

  49. Bilan et Perspectives

  50. Contribution • Première utilisation des méthodes de tirage uniforme dans les structures combinatoires pour le test de logiciel • Définition une méthode générale et automatisée pour le test statistique • Importante campagne d’expériences • Expériences aux résultats positifs: • Efficacité comparable à celle du LAAS et automatisation • Approche stable • Passage à l’échelle possible

More Related