Testing a virtual machine developed in a simulation-based virtual machine generator - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Thèse Année : 2022

Testing a virtual machine developed in a simulation-based virtual machine generator

Tester une Machine Virtuelle Développée Dans un Générateur de Machine Virtuelle Basé sur une Simulation.

Résumé

Virtual Machines (VMs) are modern programming language implementations.Testing and debugging a VM is a laborious task without the proper tooling.This is particularly true for VMs implementing garbage collection, Just in Time (JIT) compilation and interpreter optimisations.This situation is worsen when the VM builds and runs on multiple target processor architectures.To ease the development of VMs, simulation-based VM generator frameworks were studied.Such frameworks allow developers to work on the VM in a simulation environment and to generate the VM once it's ready.Developers leverage the simulation environment to ease not only the development process, but also tooling and debugging the VM.However it creates abstraction gaps between the simulated and generated VM.Therefore the execution of the simulated and the generated VM are not functionally equivalent.In this thesis we investigate how to test VMs developed in simulation-based VM generator framework.First, we investigate a methodology based on using multiple kinds of VM execution mode: Unit Testing, full-system simulation and real hardware execution.The methodology leverages the best properties of each execution mode.We leverage unit testing for its feedback-cycle speed and real hardware execution for its precision.Second, we propose extit{Test Transmutation} to extend simulation-based VM generator frameworks to co-generate the test cases with the VM.Co-generating the test cases with the VM allow developers to reuse the simulation test cases to apply unit testing on the generated VM.Results of the generated test cases are compared against the simulation test case results using differential testing to validate them.Finally, test cases are automatically mutated with non-semantic-preserving mutations.The mutated test cases results should be equivalent.If they are not, a bug has been found.This allows us to automatically create more test cases to stress the test case generator.This improves our confidence in the test case generator as well as exploring different path of execution in the VM.Our evaluation shows that we detect bugs that are representative of typical VM modifications.We demonstrate its effectiveness by applying it to a set of real test cases of the Pharo VM.It allowed us to find several issues that were unknown to the VM development team.Our approach shows promising results to test VM developed in simulation-based VM generator frameworks.
Les Machines Virtuelles (MV) sont les implémentations des langages de programmation modernes. Tester et débugger une MV est une tâche 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 optimisations de l’interpréteur. Cette situation empire lorsque la MV est compilée et exécutée sur plusieurs architectures 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 permet aux développeurs de développer une MV dans un environnement de simulation et de générée 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 débug. En revanche, cela créé des fossés d’abstraction entre la MV simulée et la MV générée. Par conséquent, l’exécution de MV simulée et de la MV générée ne sont pas fonctionnellement équivalents. 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 multiple modes d’exécution de la MV: les tests unitaires,la simulation complète du système et l’exécution sur le matériel. Cette méthodologie exploite les meilleures propriétés 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 tests unitaires avec la MV. Co-génerer les tests unitaires avec la MV permet aux développeurs de réutiliser les tests unitaires de la simulation pour tester la MV générée. Les résultats des tests unitaires sur la MV générée sont comparés avec les résultats de leurs exécutions sur la MV simulée en utilisant le différentiel de résultats pour les valider. Enfin, les tests unitaires sont automatiquement mutés avec des mutations ne préservant pas la sémantique initiale. Les résultats des tests unitaires mutés doivent être équivalents. Si ils ne le sont pas, un bug a été trouvé. Ceci permet de créer plus de tests unitaires pour stresser le générateur des tests unitaires. Cela permet aussi de gagner en confiance dans le générateur des tests unitaires 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 typiques des développeurs sur la MV. Nous montrons l’efficacité de notre méthode en l’appliquant sur les tests 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 prometteurs pour tester des MV développées dans des générateurs de MV basés sur une simulation.
Fichier principal
Vignette du fichier
2022ULILB047.pdf (2.05 Mo) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)

Dates et versions

tel-04139297 , version 2 (23-06-2023)
tel-04139297 , version 1 (22-01-2024)

Licence

Domaine public

Identifiants

  • HAL Id : tel-04139297 , version 1

Citer

Pierre Misse-Chanabier. Testing a virtual machine developed in a simulation-based virtual machine generator. Computer Science [cs]. Université de Lille, 2022. English. ⟨NNT : ⟩. ⟨tel-04139297v1⟩
74 Consultations
149 Téléchargements

Partager

Gmail Mastodon Facebook X LinkedIn More