Tester une machine virtuelle développée dans un générateur de machine virtuelle basé sur une simulation
Auteur / Autrice : | Pierre Misse-Chanabier |
Direction : | Stéphane Ducasse, Noury Bouraqadi |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique et applications |
Date : | Soutenance le 16/12/2022 |
Etablissement(s) : | Université de Lille (2022-....) |
Ecole(s) doctorale(s) : | Ecole doctorale Mathématiques, sciences du numérique et de leurs interactions (Lille ; 2021-....) |
Partenaire(s) de recherche : | Laboratoire : Centre Inria de l'Université de Lille |
Jury : | Président / Présidente : Alain Plantec |
Examinateurs / Examinatrices : Gordana Rakić | |
Rapporteurs / Rapporteuses : Gordana Milosavljević, Jannik Laval |
Mots clés
Résumé
Les Machines Virtuelles (MV) sont les implémentations des languages de programmation modernes.Tester et "debugger" une MV est une tache laborieuse sans les outils appropriés.C'est particulièrement le cas pour des MV qui implémentent un ramasse miettes (Garbage collector) une compilation JIT (Just in Time compiler) et des optimisation de l'interpréteur.Cette situation est empirée lorsque la MV est compilée et exécutée sur plusieurs architecture de processeurs.Pour faciliter le développement de MVs, les générateurs de MV basés sur une simulation ont été étudiés.Ce genre de frameworks permettent aux développeurs de développer une MV dans un environnement de simulation et de générer la MV quand elle est prête.Les développeurs exploitent l'environnement de simulation pour faciliter non seulement le développement, mais aussi l'outillage et le debug.En revanche, cela créé des fossé d'abstractions entre la MV simulée et la MV généré.Par conséquent, l'exécution de MV simulée et de la MV généré ne sont pas fonctionnellement équivalent.Dans cette thèse, nous étudions comment tester des MVs développées dans des générateurs de MV basés sur une simulation.Premièrement, nous étudions une méthodologie basées sur l'utilisation de multiples mode d'exécution de la MV: les test unitaires,la simulation complète du système et l'exécution sur le matériel.Cette méthodologie exploite les meilleure propriété de chaque mode d'exécution.Par exemple, nous exploitons les tests unitaires pour la vitesse du cycle de feedback et l'exécution sur le matériel pour sa précision d'exécution.Deuxièmement, nous proposons Test Transmutation pour étendre les générateurs de MV basés sur une simulation pour co-générer les test unitaires avec la MV.Co-génerer les tests cases avec la MV permet aux développeurs de réutiliser les test cases de la simulation pour utiliser les test unitaires sur la MV générée.Les résultats des test unitaires sur la MV généré sont comparés avec les résultats de leurs éxécutions sur la MV simulée en utilisant le différentiel de résultats pour les valider.Enfin, les test unitaires sont automatiquement mutés avec des mutations ne préservant pas la sémantique initiale.Les résultats des test unitaire mutés doivent être équivalent.Si ils ne le sont pas, un bug a été trouvé.Ceci permet de créer plus de test unitaires pour stresser le générateur de test unitaire.Cela permet aussi de gagner en confiance dans le générateur de test unitaire et d'explorer différente route d'exécution du code de la MV.Notre évaluation montre que nous détectons des bugs qui sont représentatifs des modifications de la MV typiques.Nous montrons l'efficacité de notre méthode en l'appliquant sur les test unitaires de la MV Pharo.Ceci nous as permis de trouver de multiples problèmes qui n'étaient pas connus de l'équipe de développement la MV Pharo.Notre approche montre des résultats prometteur pour tester des MV développées dans des générateurs de MV basés sur une simulation.