Utilisation des Structures Combinatoires pour le Test Statistique Sandrine-Dominique GOURAUD Équipe...

Preview:

Citation preview

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

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èmeCe 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écutionCe 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/programmeD’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 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 (t≤0) 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 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

qqNN =1-(1- p =1-(1- pminmin))NN

où pmin = min{p(e), eE}

Pour maximiser qN, il faut maximiser pmin

Une solution (pas toujours possible):

Tirage uniforme dans E

13

Relation entre N et qN [TF,Wa]

qqNN =1-(1- p =1-(1- pminmin))NN

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}

)min1log(

)1log(

p

qNN

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

Nouvelle approche pour le Test Statistique

17

Nouvelle approche pour le Test Statistique

Tirage aléatoire de cheminsTirage 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équat2) 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?

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

I4B3

2

3 5

46

1

7

20

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

INIT

EXIT

I0

C1

I2

I5

I4B3

v

e1

e2

v

e0

e3e5

e4

e6

e7

S C

21

Génération: dénombrement

0 1 2 3 4 5 6 7 8 9 10 11

C 0 0 2 0 1 0 1 0 1 0 1 0

B 1 0 1 0 1 0 1 0 1 0 1 0

I 0 1 0 1 0 1 0 1 0 1 0 1

S 0 0 0 0 0 2 2 3 3 4 4 5

3 chemins issus de S de longueur 7

22

Génération: tirage

Longueur=7

INIT

EXIT

I0

C1

I2

I5

I4B3

v

e1

e2

v

e0

e3e5

e4

e6

e7vvve0e1e2e7 vvve0e3e6e7 ve0e3e4e5e6e7

S7

vS6 ve0C4e7

ve0e3B2e6e7vvS5

vvve0C2e7

S= v.S + v.e0.C.e7

C= e1.e2 + e3.B.e6

B= e4.I + εI= e5.B

vve0C3e7

vvvS3

? ?

1

1

0

0

1

2/3 1/3

1/21/2

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.

1. Tirer aléatoirement, selon une distribution adéquate, N éléments e1,…,eN parmi les éléments à couvrir

2. Pour chaque ei, tirer aléatoirement et uniformément un chemin (de longueur ≤ n) parmi ceux qui passent par ei.

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/41/5 +1/40 +1/41/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 !

INIT

EXIT

I0

C1

I2

I5

I4B3

26

Exemple:

Critère: tous les sommets carrésS={I2,I4}5 chemins de longueur 11.Distribution uniforme

pmin=0.5

Comment pourrais-je maximiser automatiquement le pmin?

INIT

EXIT

I0

C1

I2

I5

I4B3

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’

e'e)'(1)'c(

)',c()(2 ep

eee

ep

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

e0

e3

e5

e4

e6

e7

X

INIT

EXIT

I0

C1

I5

I4B3

v

v

e0

e3

e5

e4

e6

e7

B3 I4e5

e4A

A

e4

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,

e'e)'(1)'c(

)',c()(1min ep

eee

epp

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

)(1...)2(1)1(11

)(1)(

),(...)1(1)1(

)1,(min

...

)(1)(

),1(...)1(1)1(

)1,1(min

e Epepep

e Epe Ec

e Ee Ecep

ec

ee Ecp

e Epe Ec

e Eecep

eceec

p

Spmin=

31

Exemple:

Critère: tous les sommets carrés Distribution uniforme pour les

chemins 5 chemins de longueur 11.

21

)4(1

21

)2(1

21

min

Ip

Ip

p

INIT

EXIT

I0

C1

I2

I5

I4B3

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

Exemple: 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

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: c’est notre donnée de test

2. Le prédicat n’a pas de solution: le chemin associé est infaisable

3. Le prédicat est indéterminé

Le calcul théorique des p1(ei) ne prend pas en compte les chemins infaisables

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

AuGuSTeÀ partir du programme P, on construit la spécification combinatoire du graphe de contrôleConstruction de l’ensemble des éléments à tirer en fonction de CPour chaque élément, construire l’ensemble des chemins passant par cet élémentDéterminer la distribution sur les éléments

Tirage des N élémentsTirage des N chemins de longueur inférieure ou égale à n

Construction des prédicats associés aux chemins tirésRésolution randomisée des prédicats associés aux chemins

Echec?Oui Non

Ensemble de données de test

P,C,N,n

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

Nom #lignes #chemins #blocs #arcs #choix

Fct1 30 17 14 24 5

Fct2 43 9 12 20 4

Fct3 135 33 (14) 19 41 12

Fct4 77 infini 19 41 12

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 testsExemple: présence de variables non initialisées

Mutants équivalents différents

41

Les programmes et leurs mutants

Nom #mutants #mutants équivalents

Fct1 265 14

Fct2 548 6+9

Fct3 1416 21+30

Fct4 587 9+9

42

Les programmes et leurs mutants

Nom #mutants #mutants équivalents

Fct1 265 14+3

Fct2 548 6+9

Fct3 1416 21+30+16

Fct4 587 9+9+49

43

Critère de couverture, qN et N

Nom Critère choisi #tests

Fct1 Tous les chemins 170

Fct2 Tous les chemins 80

Fct3 Tous les chemins 5x405

Fct4 Tous les enchaînements 5x850

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

Score de mutation

Uniforme LAAS AuGuSTe

Fct1 1 1 1

Fct2 1 1 1

Fct3

Min 0.55 1 0.9951

Moy 0.698 1 0.9989

Max 0.85 1 1

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?n6+1219 soit n234

Soit plus de 1030 chemins à considérerPré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

Graphe équilibré

=> Tirage uniforme parmi

les chemins

Deux sous-graphes indépendants mauvaise couverture

Idée: Transformation automatique de la structure combinatoire

pmin

48

Résultats pour Fct4: expérience 2

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

Uniforme LAAS AuGuSTe(v1) AuGuSTe(v2)

Min 0.895 0.9898 0.9726 0.9854

Moy Nc 0.9901 0.9773 0.9854

Max 0.915 0.9915 0.9854 0.9854

Sco

re d

e m

utat

ion

Bilan et Perspectives

50

ContributionPremiè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

51

Perspectives (1/2)

Adapter/améliorer la distribution des p1(ei) en fonction des différents problèmes rencontrés: Les chemins infaisables

Méthodes d’apprentissage [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 d’aspects sémantiquesExemple: 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 à d’autres techniques Test statistique fonctionnel Model checking

Recommended