<?xml version="1.0" encoding="UTF-8"?><mets:mets xmlns:mets="http://www.loc.gov/METS/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:mads="http://www.loc.gov/mads/" xmlns:metsRights="http://cosimo.stanford.edu/sdr/metsrights/" xmlns:suj="http://www.theses.fr/namespace/sujets" xmlns:tef="http://www.abes.fr/abes/documents/tef" xmlns:tefextension="http://www.abes.fr/abes/documents/tefextension" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/METS/ http://www.abes.fr/abes/documents/tef/recommandation/tef_schemas.xsd">
<mets:metsHdr CREATEDATE="2022-12-05T10:57:56" ID="ABES.STAR.THESE_194042.METS_HEADER" LASTMODDATE="2024-12-21T04:19:58Z" RECORDSTATUS="valide">
<mets:agent ROLE="CREATOR">
<mets:name/>
<mets:note>Note</mets:note>
</mets:agent>
<mets:agent ROLE="DISSEMINATOR">
<mets:name>ABES</mets:name>
</mets:agent>
<mets:altRecordID ID="ABES.STAR.THESE_194042.METS_HEADER.ALTERNATE" TYPE=""/>
</mets:metsHdr>
<mets:dmdSec ID="ABES.STAR.THESE_194042.DESCRIPTION_BIBLIOGRAPHIQUE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_these">
<mets:xmlData>
<tef:thesisRecord>
<dc:title xml:lang="en">Testing a virtual machine developed in a simulation-based virtual machine generator</dc:title>
<dcterms:alternative xml:lang="fr">Tester une machine virtuelle développée dans un générateur de machine virtuelle basé sur une simulation</dcterms:alternative>
<dc:subject xml:lang="fr">Mutation de code</dc:subject>
<dc:subject xml:lang="en">Virtual Machine</dc:subject>
<dc:subject xml:lang="en">Testing</dc:subject>
<dc:subject xml:lang="en">Simulation-Based Testing</dc:subject>
<dc:subject xml:lang="en">Code mutation</dc:subject>
<dc:subject xsi:type="dcterms:DDC"/>
<tef:sujetRameau xml:lang="fr">
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="027249921" autoriteSource="Sudoc">Systèmes virtuels (informatique)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="030929962" autoriteSource="Sudoc">Générateurs (logiciels)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="027351572" autoriteSource="Sudoc">Simulation par ordinateur</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="027235912" autoriteSource="Sudoc">Langages de programmation</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="027673529" autoriteSource="Sudoc">Génie logiciel</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="137662386" autoriteSource="Sudoc">Tests fonctionnels (informatique)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
<tef:vedetteRameauNomCommun>
<tef:elementdEntree autoriteExterne="181324385" autoriteSource="Sudoc">Pharo (langage de programmation)</tef:elementdEntree>
</tef:vedetteRameauNomCommun>
</tef:sujetRameau>
<dcterms:abstract xml:lang="fr">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.</dcterms:abstract>
<dcterms:abstract xml:lang="en">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.</dcterms:abstract>
<dc:type>Electronic Thesis or Dissertation</dc:type>
<dc:type xsi:type="dcterms:DCMIType">Text</dc:type>
<dc:language xsi:type="dcterms:RFC3066">en</dc:language>
</tef:thesisRecord>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
<mets:dmdSec ID="ABES.STAR.THESE_194042.VERSION_COMPLETE.DESCRIPTION.EDITION_ARCHIVAGE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_desc_edition">
<mets:xmlData>
<tef:edition>
<dcterms:medium xsi:type="dcterms:IMT">PDF</dcterms:medium>
<dcterms:extent>2075251</dcterms:extent>
<dc:identifier xsi:type="dcterms:URI">https://pepite-depot.univ-lille.fr/LIBRE/EDMADIS/2022/2022ULILB047.pdf</dc:identifier>
<dc:identifier xsi:type="dcterms:URI"/>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.fr/2022ULILB047/abes</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
<dc:identifier xsi:type="dcterms:URI">https://theses.hal.science/tel-04139297</dc:identifier>
</tef:edition>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
<mets:amdSec>
<mets:techMD ID="ABES.STAR.THESE_194042.ADMINISTRATION">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_admin_these">
<mets:xmlData>
<tef:thesisAdmin>
<tef:auteur>
<tef:nom>Misse-Chanabier</tef:nom>
<tef:prenom>Pierre</tef:prenom>
<tef:nomDeNaissance>Misse-Chanabier</tef:nomDeNaissance>
<tef:dateNaissance>1992-01-25</tef:dateNaissance>
<tef:nationalite scheme="ISO-3166-1">FR</tef:nationalite>
<tef:autoriteExterne autoriteSource="Sudoc">270654577</tef:autoriteExterne>
</tef:auteur>
<dc:identifier xsi:type="tef:nationalThesisPID">https://theses.fr/2022ULILB047</dc:identifier>
<dc:identifier xsi:type="tef:NNT">2022ULILB047</dc:identifier>
<dc:identifier xsi:type="tef:DOI">https://doi.org/10.70675/3ff30ee0z8cbbz41c1zbbbfz5662a31e155a</dc:identifier>
<dcterms:dateAccepted xsi:type="dcterms:W3CDTF">2022-12-16</dcterms:dateAccepted>
<tef:thesis.degree>
<tef:thesis.degree.discipline xml:lang="fr">Informatique et applications</tef:thesis.degree.discipline>
<tef:thesis.degree.grantor>
<tef:nom>Université de Lille (2022-....)</tef:nom>
<tef:autoriteExterne autoriteSource="Sudoc">259265152</tef:autoriteExterne>
</tef:thesis.degree.grantor>
<tef:thesis.degree.level>Doctorat</tef:thesis.degree.level>
<tef:thesis.degree.name xml:lang="fr">Docteur es</tef:thesis.degree.name>
</tef:thesis.degree>
<tef:theseSurTravaux>non</tef:theseSurTravaux>
<tef:avisJury>oui</tef:avisJury>
<tef:directeurThese>
<tef:nom>Ducasse</tef:nom>
<tef:prenom>Stéphane</tef:prenom>
<tef:autoriteInterne>MADS_DIRECTEUR_DE_THESE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">034814884</tef:autoriteExterne>
</tef:directeurThese>
<tef:directeurThese>
<tef:nom>Bouraqadi</tef:nom>
<tef:prenom>Noury</tef:prenom>
<tef:autoriteInterne>MADS_DIRECTEUR_DE_THESE_2</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">137455488</tef:autoriteExterne>
</tef:directeurThese>
<tef:presidentJury>
<tef:nom>Plantec</tef:nom>
<tef:prenom>Alain</tef:prenom>
<tef:autoriteInterne>MADS_PRESIDENT_DU_JURY</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">17716218X</tef:autoriteExterne>
</tef:presidentJury>
<tef:membreJury>
<tef:nom>Raki?</tef:nom>
<tef:prenom>Gordana</tef:prenom>
<tef:autoriteInterne>MADS_MEMBRE_DU_JURY_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">270653058</tef:autoriteExterne>
</tef:membreJury>
<tef:rapporteur>
<tef:nom>Milosavljevi?</tef:nom>
<tef:prenom>Gordana</tef:prenom>
<tef:autoriteInterne>MADS_RAPPORTEUR_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">270652787</tef:autoriteExterne>
</tef:rapporteur>
<tef:rapporteur>
<tef:nom>Laval</tef:nom>
<tef:prenom>Jannik</tef:prenom>
<tef:autoriteInterne>MADS_RAPPORTEUR_2</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">156659115</tef:autoriteExterne>
</tef:rapporteur>
<tef:ecoleDoctorale>
<tef:nom>École graduée Mathématiques, sciences du numérique et de leurs interactions (Lille ; 2021-....)</tef:nom>
<tef:autoriteInterne>MADS_ECOLE_DOCTORALE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="Sudoc">258621362</tef:autoriteExterne>
</tef:ecoleDoctorale>
<tef:partenaireRecherche type="laboratoire">
<tef:nom>Centre Inria de l'Université de Lille</tef:nom>
<tef:autoriteInterne>MADS_PARTENAIRE_DE_RECHERCHE_1</tef:autoriteInterne>
<tef:autoriteExterne autoriteSource="labTEL">104752</tef:autoriteExterne>
<tef:autoriteExterne autoriteSource="Sudoc">185432247</tef:autoriteExterne>
</tef:partenaireRecherche>
<tef:oaiSetSpec>ddc:004</tef:oaiSetSpec>
<tef:MADSAuthority authorityID="MADS_DIRECTEUR_DE_THESE_1" type="personal">
<tef:personMADS>
<mads:namePart type="family">Ducasse</mads:namePart>
<mads:namePart type="given">Stéphane</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_DIRECTEUR_DE_THESE_2" type="personal">
<tef:personMADS>
<mads:namePart type="family">Bouraqadi</mads:namePart>
<mads:namePart type="given">Noury</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PRESIDENT_DU_JURY" type="personal">
<tef:personMADS>
<mads:namePart type="family">Plantec</mads:namePart>
<mads:namePart type="given">Alain</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_MEMBRE_DU_JURY_1" type="personal">
<tef:personMADS>
<mads:namePart type="family">Raki?</mads:namePart>
<mads:namePart type="given">Gordana</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_RAPPORTEUR_1" type="personal">
<tef:personMADS>
<mads:namePart type="family">Milosavljevi?</mads:namePart>
<mads:namePart type="given">Gordana</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_RAPPORTEUR_2" type="personal">
<tef:personMADS>
<mads:namePart type="family">Laval</mads:namePart>
<mads:namePart type="given">Jannik</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_ECOLE_DOCTORALE_1" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Ecole doctorale Mathématiques, sciences du numérique et de leurs interactions (Lille)</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
<tef:MADSAuthority authorityID="MADS_PARTENAIRE_DE_RECHERCHE_1" type="corporate">
<tef:personMADS>
<mads:namePart type="family">Centre Inria de l'Université de Lille</mads:namePart>
</tef:personMADS>
</tef:MADSAuthority>
</tef:thesisAdmin>
</mets:xmlData>
</mets:mdWrap>
</mets:techMD>
<mets:techMD ID="ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE.TECH_FICHIER.DOSSIER_1.DOSSIER_1.FICHIER_1">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_tech_fichier">
<mets:xmlData>
<tef:meta_fichier>
<tef:formatFichier>PDF</tef:formatFichier>
<tef:taille>2075251</tef:taille>
</tef:meta_fichier>
</mets:xmlData>
</mets:mdWrap>
</mets:techMD>
<mets:rightsMD ID="ABES.STAR.THESE_194042.DROITS_UNIVERSITE">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_etablissement_these">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
<mets:rightsMD ID="ABES.STAR.THESE_194042.DROITS_DOCTORANT">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_auteur_these">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
<mets:rightsMD ID="ABES.STAR.THESE_194042.VERSION_COMPLETE.DROITS">
<mets:mdWrap MDTYPE="OTHER" OTHERMDTYPE="tef_droits_version">
<mets:xmlData>
<metsRights:RightsDeclarationMD RIGHTSCATEGORY="CONTRACTUAL">
<metsRights:Context CONTEXTCLASS="GENERAL PUBLIC">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
<metsRights:Context CONTEXTCLASS="INSTITUTIONAL AFFILIATE">
<metsRights:Permissions COPY="false" DELETE="false" DISPLAY="true" DUPLICATE="true" MODIFY="false" PRINT="true"/>
</metsRights:Context>
</metsRights:RightsDeclarationMD>
</mets:xmlData>
</mets:mdWrap>
</mets:rightsMD>
</mets:amdSec>
<mets:fileSec>
<mets:fileGrp ID="ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE.FILEGRP" USE="archive_et_diffusion">
<mets:file ADMID="ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE.TECH_FICHIER.DOSSIER_1.DOSSIER_1.FICHIER_1" ID="ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE.DOSSIER_1.DOSSIER_1.FICHIER_1" SEQ="1">
<mets:FLocat LOCTYPE="URL" xlink:href="ULIL/THESE_194042/document/0/0/These_MISSE-CHANABIER_Pierre.pdf"/>
</mets:file>
</mets:fileGrp>
</mets:fileSec>
<mets:structMap TYPE="logical">
<mets:div ADMID="ABES.STAR.THESE_194042.ADMINISTRATION ABES.STAR.THESE_194042.DROITS_UNIVERSITE ABES.STAR.THESE_194042.DROITS_DOCTORANT" CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_194042" DMDID="ABES.STAR.THESE_194042.DESCRIPTION_BIBLIOGRAPHIQUE" TYPE="THESE">
<mets:div ADMID="ABES.STAR.THESE_194042.VERSION_COMPLETE.DROITS" CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_194042.ABES.STAR.THESE_194042.VERSION_COMPLETE" TYPE="VERSION_COMPLETE">
<mets:div CONTENTIDS="CONTENTIDS.ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE" DMDID="ABES.STAR.THESE_194042.VERSION_COMPLETE.DESCRIPTION.EDITION_ARCHIVAGE" TYPE="EDITION">
<mets:fptr FILEID="ABES.STAR.THESE_194042.VERSION_COMPLETE.EDITION_ARCHIVAGE.FILEGRP"/>
</mets:div>
</mets:div>
</mets:div>
</mets:structMap>
</mets:mets>