Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parDidier Georges Modifié depuis plus de 9 années
1
Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY
2
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
3 Principe général du test
4
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
33 Remerciements
34
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
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 3 2 1 Ensemble solution
36
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
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
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
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
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
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,3316 28419 385,1217 485,4416 583,4917 684,0315 Moyenne84,5716,67 6 suites de test couvrant le code de l’application
42
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
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
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
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
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
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
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
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
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
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.