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 lapproche Le prototype AuGuSTe Résultats expérimentaux Bilan et Perspectives
Contexte
4 Les structures combinatoires décomposables La spécification de structures combinatoires consiste en un ensemble de règles de production construites à partir: dobjets de base: ε (de taille 0) et atome (de taille 1) dopérateurs: union(+), produit(x), sequence, etc. de contraintes de cardinalité Exemples: Arbre binaire complet non vide: A= F+ AxA où F est latome 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 lenvironnement 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 quon 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 dun 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 sintéresse à différents chemins dexé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 dun jeu de test structurel/fonctionnel Pour sélectionner un jeu de tests, on part: Dune modélisation du système/programme Dun 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 dau plus 6 entiers et un nombre 0 t 6. Si les t premières valeurs du tableau tab sont triés en ordre croissant, alors il retourne vrai. Si les t premières valeurs du tableau tab ne sont pas triés en ordre croissant, alors il retourne faux.
10 Exemple: estTrie bool estTrie (tab: array 0..5 of int, t: int){ int i:=0; bool rep:=true; if (t0) then rep:= true; else{ while ((i<t+1) and rep){ rep:= tab[i]tab[i+1]; i:= i+1; } return rep; } INIT EXIT I0 C1 I2 I5 I4B3
11 Pourquoi le test statistique? Avantages: Possibilité de faire du test plus intensif quavec les autres méthodes Inconvénients: Mauvaise couverture des cas particuliers (ex: cas dexception) Solution? Le combiner avec une autre méthode de test [Thévenod-Fosse,Waeselynck,1991].
12 Qualité dun test statistique [TF,Wa] Soit E lensemble des éléments à couvrir N le nombre de tests La qualité de test q N est la probabilité minimale dun élément de E dêtre couvert lors des N tests q N =1-(1- p min ) N où p min = min{p(e), e E} Pour maximiser q N, il faut maximiser p min Une solution (pas toujours possible): Tirage uniforme dans E
13 Relation entre N et q N [TF,Wa] q N =1-(1- p min ) N Si je choisis de faire N tests, quelle sera ma qualité de test q N ? Si je désire atteindre une qualité de test q N, combien de tests suis-je censé effectuer? Avec p min {0,1}
14 Le test Statistique Structurel [TF,Wa] Construction dune distribution sur le domaine des entrées qui: Maximise la qualité de test donc la probabilité minimale datteindre un élément du critère de couverture structurel considéré Nécarte aucun point du domaine dentré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 sapplique à 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
Nouvelle approche pour le Test Statistique
17 Nouvelle approche pour le Test Statistique Tirage aléatoire de chemins Lensemble des chemins dun graphe peut se représenter facilement sous forme dune 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 dentré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? 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 INIT EXIT I0 C1 I2 I5 I4B
20 Graphe et structure combinatoire Atomes= arcs Séquence darcs= chemin S= v.S + v.e 0.C.e 7 C= e 1.e 2 + e 3.B.e 6 B= e 4.I + ε I= e 5.B INIT EXIT I0 C1 I2 I5 I4B3 v e1e1 e2e2 v e0e0 e3e3 e5e5 e4e4 e6e6 e7e7 S C
21 Génération: dénombrement C B I S chemins issus de S de longueur 7
22 Génération: tirage Longueur=7 INIT EXIT I0 C1 I2 I5 I4B3 v e1e1 e2e2 v e0e0 e3e3 e5e5 e4e4 e6e6 e7e7 vvve 0 e 1 e 2 e 7 vvve 0 e 3 e 6 e 7 ve 0 e 3 e 4 e 5 e 6 e 7 S7S7 vS6vS6 ve 0 C 4 e 7 ve 0 e 3 B 2 e 6 e 7 vvS 5 vvve 0 C 2 e 7 S= v.S + v.e 0.C.e 7 C= e 1.e 2 + e 3.B.e 6 B= e 4.I + ε I= e 5.B vve 0 C 3 e 7 vvvS 3 ?? /3 1/3 1/2
23 Si le critère consiste à couvrir un ensemble de chemins : on construit la structure combinatoire correspondante Exemples: tous les chemins passant par larc 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 dautres éléments?
24 Tirage de chemins Soit N le nombre de tests à générer. 1.Tirer aléatoirement, selon une distribution adéquate, N éléments e 1,…,e N parmi les éléments à couvrir 2.Pour chaque e i, tirer aléatoirement et uniformément un chemin (de longueur n) parmi ceux qui passent par e i.
25 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 p min =p(I2)= 0.35 On nobtient pas le p min optimal ! INIT EXIT I0 C1 I2 I5 I4B3
26 Exemple: Critère: tous les sommets carrés S={I2,I4} 5 chemins de longueur 11. Distribution uniforme p min =0.5 Comment pourrais-je maximiser automatiquement le p min ? INIT EXIT I0 C1 I2 I5 I4B3
27 Probabilité dun élément La probabilité p(e) dun élément e dêtre atteint lors dune exécution est: p(e)=p 1 (e)+p 2 (e) Probabilité de tirer lélément (étape 1): p 1 (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) On en déduit la structure combinatoire puis la fonction de dénombrement INIT EXIT I0 C1 I5 I4B3 v v e0e0 e3e3 e5e5 e4e4 e6e6 e7e7 X INIT EXIT I0 C1 I5 I4B3 v v e0e0 e3e3 e5e5 e4e4 e6e6 e7e7 I4 e5e5 e4e4 A A e4e4
29 Une manière de définir la distribution Pour optimiser la qualité de test, il faut maximiser p min. Or pour tout e de E,
30 Maximiser p min sous les contraintes On résout ce problème doptimisation par un simplex et on en déduit les p 1 (e i ). S p min =
31 Exemple: Critère: tous les sommets carrés Distribution uniforme pour les chemins 5 chemins de longueur 11. INIT EXIT I0 C1 I2 I5 I4B3
32 Des chemins aux entrées Deuxième étape: Déterminer les entrées permettant dexé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 Exemple: Spécification: t [0..6] Chemin I0-C1-I2-I5 Prédicat calculé: t0 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 C1 I2 I5 I4B3 I0 C1 I2 I5 I4B3
34 Des chemins aux entrées Plusieurs cas possibles pour la résolution de chaque prédicat: 1.Le prédicat a une solution: cest notre donnée de test 2.Le prédicat na pas de solution: le chemin associé est infaisable 3.Le prédicat est indéterminé Le calcul théorique des p 1 (e i ) ne prend pas en compte les chemins infaisables
Validation de lapproche
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: AuGuSTe 1 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 AuGuSTe À partir du programme P, on construit la spécification combinatoire du graphe de contrôle Construction de lensemble des éléments à tirer en fonction de C Pour chaque élément, construire lensemble 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 Echec? OuiNon Ensemble de données de test P,C,N,n
38 Les expériences Objectifs: valider lapproche Comparer à lapproche du LAAS Évaluer la stabilité Passage à léchelle possible? Comment? En utilisant les programmes et les mutants fournis par le LAAS Plus de exécutions réalisées sur plus 2900 mutants
39 Les programmes Nom#lignes#chemins#blocs#arcs#choix Fct Fct Fct (14) Fct477infini194112
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 lenvironnement dexécution des tests Exemple: présence de variables non initialisées Mutants équivalents différents
41 Les programmes et leurs mutants Nom#mutants#mutants équivalents Fct Fct Fct Fct
42 Les programmes et leurs mutants Nom#mutants#mutants équivalents Fct Fct Fct Fct
43 Critère de couverture, q N et N NomCritère choisi#tests Fct1Tous les chemins170 Fct2Tous les chemins80 Fct3Tous les chemins5x405 Fct4Tous les enchaînements5x850 Qualité de test visée: Fct3 et Fct4: pour sassurer de la stabilité, il y a 5 séries de tests.
44 Résultats pour Fct1, Fct2 et Fct3 Score de mutation UniformeLAASAuGuSTe Fct1111 Fct2111 Fct3 Min Moy Max Fct3: Reflète la dépendance vis-à-vis de lenvironnement Lié aux variables non initialisées détectables par un bon compilateur
45 Graphe de contrôle de FCT4 Choix de n? n soit n 234 Soit plus de chemins à considérer Présence dun nombre considérable de chemins infaisables
46 Première expérience avec Fct4… chemins dont 99,98% de chemins infaisables AuGuSTe (v1): p min =0.5 Mais en pratique tous les enchaînements ne sont pas couverts AuGuSTe (v2): p min =0.5 Mais en pratique, tous les enchaînements ne sont pas couverts Distribution sur les éléments tirage uniforme parmi les chemins
47 Graphe équilibré => Tirage uniforme parmi les chemins Deux sous-graphes indépendants mauvaise couverture Idée: Transformation automatique de la structure combinatoire p min
48 Résultats pour Fct4: expérience 2 Environ chemins de longueur 234 Environ 50% de chemins infaisables AuGuSTe (v1): p min = Mais en pratique, tous les enchaînements ne sont pas forcément couverts AuGuSTe (v2): p min = En pratique, tous les enchaînements sont couverts UniformeLAASAuGuSTe(v1)AuGuSTe(v2) Min MoyNc Max Score de mutation
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 dexpériences Expériences aux résultats positifs: Efficacité comparable à celle du LAAS et automatisation Approche stable Passage à léchelle possible
51 Perspectives (1/2) Adapter/améliorer la distribution des p 1 (e i ) en fonction des différents problèmes rencontrés : Les chemins infaisables Méthodes dapprentissage [Sebag & al] Méthodes probabilistes [Maume & al] Borner la longueur des chemins peut masquer des erreurs Méthode Boltzmann [Duchon,Flajolet,Louchard,Schaeffer,2002] Prendre en compte plus daspects sémantiques Exemple: les cas exceptionnels doivent-ils être autant testés que les cas standards?
52 Perspectives (2/2) Mieux exploiter les structures combinatoires pour limiter les chemins infaisables Analyse statique Meilleure distribution Application à dautres techniques Test statistique fonctionnel Model checking
53 Des questions?
54 Modification de la structure combinatoire Var==true
55 Distribution basée sur les dominances (1/2) Classe déquivalence Une classe A domine une classe B, si tout chemin qui passe par les éléments de B passe par les éléments de A I0 C1 I2 I5 I4B3 I0,C1,I5 I2B3 I4
56 Distribution basée sur les dominances (2/2) Choisir un représentant des classes aux feuilles S={I2,I4} Rajouter éventuellement à S un représentant de la classe racine. S={I2,I4,I0} Faire du tirage uniforme dans lensemble S. p min =0.4 I0 C1 I2 I5 I4B3 I0,C1,I5 I2B3 I4