Titre original :

Metamodel-based language-agnostic approach to unit test generation from execution traces

Titre traduit :

Approche indépendante du langage fondée sur des métamodèles pour la génération de tests unitaires à partir de traces d’exécution

Mots-clés en français :
  • Tests unitaires
  • Génération automatique
  • Métamodèles
  • Traces d'exécution

  • Systèmes hérités (informatique)
  • Migration des systèmes d'information
  • Logiciels -- Vérification
  • Langages de programmation
Mots-clés en anglais :
  • Test
  • Automatic generation
  • Metamodel
  • Traces

  • Langue : Anglais
  • Discipline : Informatique et applications
  • Identifiant : 2025ULILB043
  • Type de thèse : Doctorat
  • Date de soutenance : 05/12/2025

Résumé en langue originale

Les systèmes logiciels hérités manquent souvent de tests unitaires automatisés, ce qui rend difficile la détection des régressions lors de la maintenance ou de la migration. Notre partenaire industriel, Berger-Levrault, est confronté à ce défi, car ses applications sont actuellement en cours de migration depuis des systèmes Java monolithiques vers une architecture « Software-as-a-Service » avec une interface Angular. Pour y remédier, cette thèse étudie la génération automatique de tests unitaires à partir des traces d'exécution du programme afin de capturer le comportement existant du système.Nous utilisons une technique appelée « test carving » pour extraire des tests à partir de traces d'exécution. Une trace est un enregistrement du comportement observé pendant l'exécution qui comprend les valeurs d'entrée et de sortie. Chaque trace peut servir de base à un test unitaire en rejouant le comportement enregistré avec les mêmes entrées et en vérifiant que le résultat correspond à la sortie d'origine. Afin de faciliter l'adoption par les développeurs, nous générons des tests qui reconstruisent les valeurs enregistrées sous forme de code, améliorant ainsi leur lisibilité et leur maintenabilité.Ces abstractions permettent de spécialiser l'approche pour différents langages de programmation et cadriciel de test. Nous avons implémenté notre approche dans un outil concret et l'avons évaluée sur des systèmes écrits en Java et Pharo, couvrant à la fois des logiciels open-source et industriels. Les résultats montrent qu'elle permet de générer des tests lisibles qui capturent les comportements réalistes du système.Dans l'ensemble, ce travail apporte une solution pratique pour dériver des tests de régression pour les systèmes hérités, tout en démontrant comment les abstractions basées sur des métamodèles permettent de créer des tests de manière extensible dans divers contextes techniques.

Résumé traduit

Legacy software systems often lack automated unit tests, which makes it difficult to detect regressions during maintenance or migration. This challenge is faced by our industrial partner, Berger-Levrault, whose applications are currently being migrated from monolithic Java systems to a Software-as-a-Service architecture with an Angular front-end. To address this, this thesis investigates the automatic generation of unit tests from program execution traces to capture existing system behavior.We use a technique called test carving to extract tests from execution traces. A trace is a record of behavior observed during execution that includes input and output values. Each trace can serve as the basis for a unit test by replaying the recorded behavior with the same inputs and verifying that the result matches the original output. To support developer adoption, we generate tests that reconstruct recorded values as code, improving their readability and maintainability.Our approach is based on abstract representations of code, values, and tests, defined through metamodels. These abstractions make it possible to specialize the approach to different programming languages and test frameworks. We implemented the approach in a concrete tool and evaluated it on systems written in Java and Pharo, covering both open-source and industrial software. The results show that it can generate readable tests that capture realistic system behaviors.Overall, this work contributes a practical solution for deriving regression tests for legacy systems, while demonstrating how metamodel-based abstractions enable extensible test carving across diverse technical contexts.

  • Directeur(s) de thèse : Etien, Anne - Anquetil, Nicolas
  • Président de jury : Merle, Philippe
  • Membre(s) de jury : De Roover, Coen
  • Rapporteur(s) : Sunyé, Gerson - Barais, Olivier
  • Laboratoire : Centre Inria de l'Université de Lille - Centre de Recherche en Informatique, Signal et Automatique de Lille
  • École doctorale : École graduée Mathématiques, sciences du numérique et de leurs interactions (Lille ; 2021-....)

AUTEUR

  • Darbord, Gabriel