Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY.

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
Ma surprise du Zoo.
[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Vocabulaire 6.2 Français II Bon voyage ! 1.
Licence pro MPCQ : Cours
Distance inter-locuteur
1. ami 2. compagnon 3. amant 4. frère 5. père 6. maître 7. éducateur 8
Évaluation des requêtes relationnelles
Les numéros 70 –
Les numéros
Sud Ouest Est Nord Individuel 36 joueurs
Les identités remarquables
Sirop de Liège « industriel »
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
1 7 Langues niveaux débutant à avancé. 2 Allemand.
ORTH 1 CE2 Je sais écrire sans erreur les pluriels des noms se terminant par s, x, z.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
-17 Anticipations économiques en Europe Septembre 2013 Indicateur > +20 Indicateur 0 a +20 Indicateur 0 a -20 Indicateur < -20 Union européenne total:
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Application des algorithmes génétiques
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
PM18 MONTAGE DU BLINDAGE AUTOUR DE LA QRL F. DELSAUX - 25 JAN 2005
Le Concours de Conaissance Francais I novembre 2012.
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Titre : Implémentation des éléments finis sous Matlab
1 Journée de regroupement des correspondants "Egalité et genre" - 21 novembre 2011 Rectorat de Rouen - SAIO - CD-HD Résultats scolaires, appréciations.
Tableaux de distributions
Tableaux de distributions
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
1 INETOP
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Systèmes mécaniques et électriques
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Titre : Implémentation des éléments finis en Matlab
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Les Nombres 0 – 100 en français.
Aire d’une figure par encadrement
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
Les fondements constitutionnels
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
Vous allez voir des nombres sur la diapositive suivante. Il faudra bien les observer et les garder en mémoire. Vous devrez les écrire sur l’ardoise quand.
Nom:____________ Prénom: ___________
1. Présentation générale du système
CALENDRIER-PLAYBOY 2020.
1. Présentation générale du système
LES PILES ET FILES.
Commission paritaire de suivi des opérations de reclassement repositionnement dans le cadre du droit d’option Statistiques novembre 2010.
Les Chiffres Prêts?
Transcription de la présentation:

Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY

2 Le test de logiciel Moyen principal de validation/mise-au-point Moyen principal de validation/mise-au-point Intervient tout au long du processus de développemt Intervient tout au long du processus de développemt Activité coûteuse Activité coûteuse Besoin de techniques pour assister le test et la mise-au-point

3 Principe général du test

4 Problématique : test et diagnostic Le diagnostic utilise les informations issues du test pour localiser les erreurs détectées Le diagnostic utilise les informations issues du test pour localiser les erreurs détectées Dépendance entre les données test et le diagnostic Hypothèse de la littérature : Plus il y a de cas de test et plus le diagnostic est facile Hypothèse de la littérature : Plus il y a de cas de test et plus le diagnostic est facile Contraire aux pratiques du test qui minimisent le nombre de cas de test pour atteindre un critère de test donné Comment construire un ensemble de cas de tests pertinents pour le diagnostic ?

5 Plan Test et diagnostic Test et diagnostic Algorithme d’assistance au diagnostic Algorithme d’assistance au diagnostic Génération automatique de tests Génération automatique de tests Test pour le diagnostic Test pour le diagnostic Conclusion et perspectives Conclusion et perspectives

6 Diagnostic par recoupement de traces d’exécution Objectif : Objectif : Réduire l’espace de recherche de erreurs détectées Moyens : Moyens : Exploiter les traces d’exécution des cas de tests Trace d’exécution : Trace d’exécution : Ensemble d’instructions du programme sous test exécutées par le cas de test Différence B-A

7 Algorithme de Jones et al. Ordonner les instructions de la plus suspecte à la moins suspecte. Ordonner les instructions de la plus suspecte à la moins suspecte. Exemple : Exemple : Fonction puissance Fonction puissance Une faute a été introduite en {3} Une faute a été introduite en {3} (l’instruction correcte serait p:=-y)

8 4 cas de test Matrice de diagnostic Algorithme de Jones et al. Ordonner les instructions de la plus suspecte à la moins suspecte. Ordonner les instructions de la plus suspecte à la moins suspecte. Exemple : Exemple :

9 Résultats du diagnostic Algorithme de Jones et al. Ordonner les instructions de la plus suspecte à la moins suspecte. Ordonner les instructions de la plus suspecte à la moins suspecte. Exemple : Exemple :

10 Précision du diagnostic Programme sous test (P) Mutant de P Suite de test Matrice de diagnostic Classement des instructions de P Mutation (JMutator) Précision du diagnostic Exécution des tests Algorithme de diagnostic Rang de l’instruction erronée

11 Génération automatique de tests et algorithmes bactériologiques Technique de génération de test présentée dans de précédents travaux. Technique de génération de test présentée dans de précédents travaux. Inspiré du processus d’adaptation des bactéries Inspiré du processus d’adaptation des bactéries Objectif : Objectif : Trouver un ensemble de taille raisonnable de cas de test pour satisfaire un critère de test.

12 La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (construite itérativement) Solution (construite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération … Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution Arrêt

13 Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (construite itérativement) Solution (construite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération … Arrêt

14 Arrêt Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (construite itérativement) Solution (construite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération …

15 Ensemble solution Classer Mémoriser Filtrer Muter Bouillon bacteriologique La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (construite itérativement) Solution (construite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération … Arrêt

16 Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (construite itérativement) Solution (construite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération … Arrêt

17 Bilan Algorithme de diagnostic fondé sur le recoupement de traces d’exécutions Algorithme de diagnostic fondé sur le recoupement de traces d’exécutions Implantation d’un outil : JTracor Implantation d’un outil : JTracor Implantation de l’algorithme de diagnostic Implantation de l’algorithme de diagnostic Génération de tests et algorithmes bactériologiques Génération de tests et algorithmes bactériologiques Implantation d’un framework JAVA pour la génération de tests Implantation d’un framework JAVA pour la génération de tests

18 Génération de test pour le diagnostic Dépendance entre des techniques de diagnostic et les cas de test utilisés Dépendance entre des techniques de diagnostic et les cas de test utilisés Peu de travaux dans la littérature Peu de travaux dans la littérature Hypothèse retenue pour le diagnostic contraire aux pratiques du test Hypothèse retenue pour le diagnostic contraire aux pratiques du test Besoin de critères de test pour le diagnostic

19 Deux critères de test pour le diagnostic (1) Couvrir le code du programme (2) Couvrir chaque instruction du programme avec plusieurs cas de test plusieurs cas de test

20 Satisfaire automatiquement ces deux critères de test (1) Couvrir le code du programme : Algorithme bactériologique Algorithme bactériologique Fonction d’utilité : % code couvert (JTracor) Fonction d’utilité : % code couvert (JTracor) (2) Couvrir chaque instruction avec plusieurs cas de tests différents : de tests différents : Union de plusieurs suites de test générées pour couvrir le code du programme. Union de plusieurs suites de test générées pour couvrir le code du programme.

21 Etudes de cas Deux systèmes JAVA Deux systèmes JAVA Book : sous-système de gestion de livres Book : sous-système de gestion de livres 7 types de commandes 7 types de commandes 16 classes 16 classes VirtualMeeting : serveur de réunion virtuelle VirtualMeeting : serveur de réunion virtuelle 15 types de commandes 15 types de commandes 82 classes 82 classes

22 Etudes de cas : Modélisation Cas de test = séquence de commandes (taille fixe) Cas de test = séquence de commandes (taille fixe) Opérateur de mutation Opérateur de mutation Ecriture pour chaque étude de cas d’un générateur aléatoire de commandes.

23 Book : Génération de tests Une suite de test comportant 47 cas de tests et vérifiant les deux critères de test proposés

24 Book : Précision du diagnostic Etude sur 87 mutants de Book Etude sur 87 mutants de Book 4,38%24,76% Résultat décevant pour une partie des mutants

25 Notion de blocs dynamiques Blocs d’instructions indicernables : Blocs d’instructions indicernables : Ensemble d’instructions exécutées par les mêmes cas de tests. Exemple Exemple 2 cas de test 2 blocs dynamiques Les instructions d’un même bloc dynamique sont toujours classées comme équi-suspectes par l’algorithme de diagnostic.

26 Blocs dynamiques Plus le bloc dynamique contenant l’erreur est petit et plus le diagnostic est précis Plus le bloc dynamique contenant l’erreur est petit et plus le diagnostic est précis (3) Maximiser le nombre de blocs dynamiques Dans la pratique : utilisation de l’algorithme bactériologique Fonction d’utilité : nombre de blocs dynamiques isolés Un troisième critère de test

27 Validation expérimentale Maximiser le nombre de blocs dynamiques Maximiser le nombre de blocs dynamiques Suite de test initiale couvrant le code et composée de 15 cas de test (isolant 113 blocs dynamiques) Suite de test initiale couvrant le code et composée de 15 cas de test (isolant 113 blocs dynamiques) Une suite de test de taille raisonnable isolant un maximun de blocs dynamiques (31 cas de test et 187 blocs dynamiques isolés)

28 Validation expérimentale (2) Suite de test de taille raisonnable Suite de test de taille raisonnable Bonne précision du diagnostic Bonne précision du diagnostic Qualité de la suite de test générée pour le diagnostic Qualité de la suite de test générée pour le diagnostic

29 Résultats La minimisation des blocs dynamiques permet d’obtenir un diagnostic précis avec un nombre raisonnable de cas de tests La minimisation des blocs dynamiques permet d’obtenir un diagnostic précis avec un nombre raisonnable de cas de tests L’algorithme bactériologique permet d’adapter une suite de test au diagnostic L’algorithme bactériologique permet d’adapter une suite de test au diagnostic Les premiers critères proposés ne sont pas déterminant pour le diagnostic Les premiers critères proposés ne sont pas déterminant pour le diagnostic

30 Méthodologie de test pour le diagnostic Exécution des tests Algorithme de diagnostic Algorithme bacteriologique Erreur détectée ARRÊT oui non Diag. Précis non Correction d’erreur oui Suite de test initiale Programme sous test Ajouter des cas de tests pour isoler un max. de blocs dyn. dans les zones de code suspectes

31 Conclusion Conciliation des pratiques de test et des besoins du diagnostic Conciliation des pratiques de test et des besoins du diagnostic Généralisation et validation expérimentale du modèle bactériologique Généralisation et validation expérimentale du modèle bactériologique Implantation d’outils en JAVA Implantation d’outils en JAVA Un critère de test propre au diagnostic Méthodologie de génération automatique de test pour le diagnostic Algorithme bactériologique, trace d’exécution, diagnostic.

32 Perspectives Valider expérimentalement le protocole de test pour le diagnostic proposé. Valider expérimentalement le protocole de test pour le diagnostic proposé. Blocs dynamiques et autres stratégies de diagnostic. Blocs dynamiques et autres stratégies de diagnostic. Combinaison de l’algorithme de diagnostic avec des assertions. Combinaison de l’algorithme de diagnostic avec des assertions. Blocs dynamiques et pouvoir de détection d’erreur. Blocs dynamiques et pouvoir de détection d’erreur.

33 Remerciements

34 Retour sur les critères Les 2 premiers assurent la détection d’erreurs Les 2 premiers assurent la détection d’erreurs Ce ne sont pas les meilleurs Ce ne sont pas les meilleurs Le trois est cool Le trois est cool

35 La boucle bactériologique Classer Mémoriser Filtrer Muter Ajouter la meilleure bactérie à la mémoire si elle satisfait la fonction de mémorisation Eliminer les bactéries dont l'utilité est nulle Ajouter n mutants des meilleures bactéries au bouillon bactériologique Bouillon bacteriologique Classer les bactéries du bouillon selon leur utilité L'algorithme termine si l'utilité de la solution atteint l'objectif Ensemble solution

36 Algorithme de Jones et al. Ordonner les instructions de la plus suspecte à la moins suspecte. Ordonner les instructions de la plus suspecte à la moins suspecte. Exemple : Exemple :

37 Algorithme de Jones et al. Ordonner les instructions de la plus suspecte à la moins suspecte. Ordonner les instructions de la plus suspecte à la moins suspecte. Exemple : Exemple :

38 Génération automatique de tests Générer un ensemble de taille minimale de cas de tests pour satisfaire un critère de test. Générer un ensemble de taille minimale de cas de tests pour satisfaire un critère de test. Un grand nombre de travaux Un grand nombre de travaux Test fonctionnel Test fonctionnel Utilise une spécification (formelle ou non) du programme. Test structurel (statique ou dynamique) Test structurel (statique ou dynamique) Utilise l’implantation du programme Algorithmes bactériologiques Algorithmes bactériologiques Technique structurelle dynamique Technique structurelle dynamique Initialement dérivé des algorithmes génétiques Initialement dérivé des algorithmes génétiques Génération de suites de tests Génération de suites de tests

39 Méthodologie Algorithme bactériologique Fonction d'utilité Opérateur de mutation Critère de test Domaine d'entrée du programme sous test Suite de tests de taille raisonnable statisfaisant le critère de test Population initiale de cas de tests

40 Notion de blocs dynamiques 3 cas de test 4 bloc dynamiques Blocs d’instructions indicernables : Blocs d’instructions indicernables : Ensemble d’instructions exécutées par les mêmes cas de tests. Exemple Exemple Les instructions d’un même bloc dynamique sont toujours classées comme equi-suspectes par l’algorithme de diagnostic.

41 Validation expérimentale Sur le système de réunion virtuelle Sur le système de réunion virtuelle Génération de suites de test couvrant le code Génération de suites de test couvrant le code Exécution% code couvert# Cas de test 185, , , , ,0315 Moyenne84,5716,67 6 suites de test couvrant le code de l’application

42 Validation expérimentale Sur le système de réunion virtuelle Sur le système de réunion virtuelle Précision du diagnostic et taille des blocs dynamiques Précision du diagnostic et taille des blocs dynamiques Expérience réalisée sur 250 mutants du système Expérience réalisée sur 250 mutants du système Correlation entre la taille des blocs dynamiques et la précision du diagnostic

43 Méthodologie de test pour le diagnostic (1) A partir d’une suite de test quelconque A partir d’une suite de test quelconque Ajouter un nombre raisonnable de cas de test pour assurer un diagnostic précis Ajouter un nombre raisonnable de cas de test pour assurer un diagnostic précis

44 Un troisième critère de test (3) Maximiser le nombre de blocs dynamiques Dans la pratique : utilisation de l’algorithme bactériologique Fonction d’utilité : nombre de blocs dynamiques isolés

45 Blocs dynamiques : expérience Sur le système de réunion virtuelle (250 mutants) Sur le système de réunion virtuelle (250 mutants) A partir de suites de test assurant la couverture de code A partir de suites de test assurant la couverture de code

46 Ensemble solution La boucle bactériologique Fonction de mémorisation Fonction de mémorisation Fonction à valeur booléenne indiquant si la meilleure bactérie du bouillon doit être mémorisée. Fonction à valeur booléenne indiquant si la meilleure bactérie du bouillon doit être mémorisée. Exemples Exemples Seuil de mémorisation Seuil de mémorisation Plusieurs itérations sans améliorations Plusieurs itérations sans améliorations … Classer Mémoriser Filtrer Muter Bouillon bacteriologique

47 La boucle bactériologique 2 ensembles de bactéries 2 ensembles de bactéries Bouillon (population courante) Bouillon (population courante) Solution (contruite itérativement) Solution (contruite itérativement) 4 opérations 4 opérations Classer, Mémoriser, Filtrer, Muter Classer, Mémoriser, Filtrer, Muter Condition d’arrêt Condition d’arrêt Objectif atteint Objectif atteint Nb de génération Nb de génération … Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution Arrêt

48 La boucle bactériologique Fonction d’utilité (F) Fonction d’utilité (F) Indique la pertinence d’un ensemble de bactéries pour le problème considéré Indique la pertinence d’un ensemble de bactéries pour le problème considéré Classer Mémoriser Filtrer Muter Définie pour un ensemble de Bactéries Utilité d’une bactérie Utilité d’une bactérie f(b) = F(bUS) – F(S) f(b) = F(bUS) – F(S) Utilité relative aux bactéries Utilité relative aux bactéries déjà mémorisées Bouillon bacteriologique Ensemble solution

49 La boucle bactériologique Fonction de mémorisation Fonction de mémorisation Fonction à valeur booléenne indiquant si la meilleure bactérie du bouillon doit être mémorisée. Fonction à valeur booléenne indiquant si la meilleure bactérie du bouillon doit être mémorisée. Exemples Exemples Seuil de mémorisation Seuil de mémorisation Plusieurs itérations sans améliorations Plusieurs itérations sans améliorations … Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution

50 Ensemble solution La boucle bactériologique Fonction de filtrage Fonction de filtrage Elimine les bactéries inutiles du bouillon afin de garantir l’efficacité de l’algorithme Elimine les bactéries inutiles du bouillon afin de garantir l’efficacité de l’algorithme Exemples Exemples Supprimer les bactéries d’utilité nulle Supprimer les bactéries d’utilité nulle Dans le domaine du test : heuristiques de minimisation de suites de test Dans le domaine du test : heuristiques de minimisation de suites de test … Classer Mémoriser Filtrer Muter Bouillon bacteriologique

51 La boucle bactériologique Opérateur de mutation Opérateur de mutation Permet, à partir d’une bactérie parente, de construire une nouvelle bactérie Permet, à partir d’une bactérie parente, de construire une nouvelle bactérie Fortement dépendant du problème considéré Fortement dépendant du problème considéré Classer Mémoriser Filtrer Muter Bouillon bacteriologique Ensemble solution