2025-11-21T20:19:23.757806

The Prompt Alchemist: Automated LLM-Tailored Prompt Optimization for Test Case Generation

Gao, Wang, Gao et al.
Test cases are essential for validating the reliability and quality of software applications. Recent studies have demonstrated the capability of Large Language Models (LLMs) to generate useful test cases for given source code. However, the existing work primarily relies on human-written plain prompts, which often leads to suboptimal results since the performance of LLMs can be highly influenced by the prompts. Moreover, these approaches use the same prompt for all LLMs, overlooking the fact that different LLMs might be best suited to different prompts. Given the wide variety of possible prompt formulations, automatically discovering the optimal prompt for each LLM presents a significant challenge. Although there are methods on automated prompt optimization in the natural language processing field, they are hard to produce effective prompts for the test case generation task. First, the methods iteratively optimize prompts by simply combining and mutating existing ones without proper guidance, resulting in prompts that lack diversity and tend to repeat the same errors in the generated test cases. Second, the prompts are generally lack of domain contextual knowledge, limiting LLMs' performance in the task.
academic

L'Alchimiste des Invites : Optimisation Automatisée des Invites Adaptées aux LLM pour la Génération de Cas de Test

Informations de Base

  • ID de l'article: 2501.01329
  • Titre: The Prompt Alchemist: Automated LLM-Tailored Prompt Optimization for Test Case Generation
  • Auteurs: Shuzheng Gao, Chaozheng Wang, Cuiyun Gao, Xiaoqian Jiao, Chun Yong Chong, Shan Gao, Michael R. Lyu
  • Classification: cs.SE cs.AI cs.CL
  • Date de publication/Conférence: JOURNAL OF LATEX CLASS FILES, VOL. 18, NO. 9, SEPTEMBRE 2020
  • Lien de l'article: https://arxiv.org/abs/2501.01329

Résumé

Les cas de test sont essentiels pour vérifier la fiabilité et la qualité des applications logicielles. Des recherches récentes ont démontré que les grands modèles de langage (LLM) possèdent la capacité de générer des cas de test utiles pour un code source donné. Cependant, les travaux existants s'appuient principalement sur des invites simples rédigées manuellement, ce qui entraîne souvent des résultats sous-optimaux, car la performance des LLM dépend fortement de la qualité de l'invite. De plus, ces méthodes utilisent la même invite pour tous les LLM, ignorant le fait que différents LLM pourraient être mieux adaptés à différentes invites. Cet article propose la méthode MAPS, qui réalise l'optimisation automatisée des invites pour différents LLM par le biais de trois modules principaux : la génération d'invites guidée par la diversité, l'induction de règles pilotée par les défaillances et l'extraction de connaissances contextuelles du domaine.

Contexte de Recherche et Motivation

1. Problème Central

La génération de cas de test est une tâche clé en génie logiciel. Les méthodes traditionnelles telles qu'Evosuite et Randoop reposent sur des techniques de recherche et de contrainte, tandis que les méthodes basées sur les LLM, bien qu'elles montrent du potentiel, présentent les problèmes suivants :

  • Dépendance envers des invites simples rédigées manuellement, entraînant une performance sous-optimale
  • Utilisation de la même invite pour tous les LLM, ignorant les différences entre les LLM
  • Absence d'optimisation spécialisée pour la tâche de génération de cas de test

2. Importance du Problème

  • La rédaction manuelle de cas de test est chronophage et difficile
  • Les cas de test de haute qualité sont essentiels pour l'assurance qualité des logiciels
  • Les capacités puissantes des LLM en compréhension et génération de code doivent être pleinement exploitées par l'optimisation des invites

3. Limitations des Méthodes Existantes

Par le biais d'expériences préliminaires, les auteurs ont identifié trois problèmes majeurs des méthodes d'optimisation automatisée des invites (APO) existantes sur la tâche de génération de cas de test :

  • Faible diversité: Les invites générées manquent de diversité et sont facilement piégées dans des optima locaux
  • Erreurs répétées: Les invites optimisées produisent toujours les mêmes erreurs que les invites originales
  • Absence de connaissances du domaine: Manque d'informations contextuelles au niveau du projet, telles que les relations d'héritage et les informations d'appel de classe

Contributions Principales

  1. Première étude: À la connaissance des auteurs, c'est la première étude spécialisée sur l'optimisation des invites adaptées aux LLM pour la tâche de génération de cas de test
  2. Méthode innovante: Proposition de la méthode MAPS, intégrant la génération d'invites guidée par la diversité, l'induction de règles pilotée par les défaillances et l'extraction de connaissances contextuelles du domaine
  3. Améliorations significatives: Les expériences sur trois LLM populaires montrent que MAPS améliore en moyenne la couverture des lignes de 6,19% et la couverture des branches de 5,03% par rapport à la méthode de base la plus forte
  4. Adaptation aux LLM: Démonstration de l'efficacité de la génération d'invites personnalisées pour différents LLM

Détails de la Méthode

Définition de la Tâche

Étant donné un modèle de boîte noire M, un petit ensemble de développement D_dev, un ensemble de test D_test et une fonction de notation s(·), l'APO vise à découvrir une invite optimisée p à partir de l'espace du langage naturel basée sur D_dev, de sorte que la performance de M sur l'ensemble de test D_test soit maximisée.

Architecture du Modèle

MAPS comprend trois modules principaux :

1. Extraction de Connaissances Contextuelles du Domaine (Domain Contextual Knowledge Extraction)

Ce module fournit au LLM des informations contextuelles pertinentes au niveau du projet :

Connaissances contextuelles intra-fichier:

  • Signature de classe : type et nom de la classe contenant la méthode focale
  • Méthode focale : la méthode spécifique pour laquelle générer des cas de test
  • Signatures de méthodes membres : signatures de fonction d'autres méthodes dans la classe

Connaissances contextuelles inter-fichiers:

  • Informations d'héritage de classe : pour les classes abstraites ou privées, analyse du projet entier pour localiser ses sous-classes
  • Informations d'appel de classe : identification des types de paramètres de la méthode focale, suivi de la définition et des constructeurs des types définis par l'utilisateur

2. Génération d'Invites Guidée par la Diversité (Diversity-guided Prompt Generation)

Ce module crée des invites diversifiées en explorant différents chemins de modification :

Algorithme 2 : PROMPTIMPROVEMENT
1. Sélectionner les K invites avec les meilleures performances
2. Générer N méthodes de modification différentes
3. Générer de nouvelles invites basées sur chaque méthode de modification
4. Fusionner les invites sélectionnées et les invites nouvellement générées

3. Induction de Règles Pilotée par les Défaillances (Failure-driven Rule Induction)

Ce module évite les erreurs répétées en analysant les cas de test défaillants pour induire des règles :

Sélection d'informations de défaillance:

  • Collecte des cas de test défaillants et des messages d'erreur
  • Utilisation de l'algorithme de clustering DBSCAN pour agréger les informations de défaillance
  • Échantillonnage pondéré basé sur la taille du cluster et la similarité avec les défaillances historiques

Réflexion sur les erreurs:

  • Construction d'une invite de réflexion basée sur les cas de défaillance représentatifs
  • Demande au LLM de fournir des explications et des solutions détaillées
  • Conversion des explications et solutions en règles concises

Validation des règles:

  • Vérification de la validité de chaque règle nouvellement générée
  • Conservation des règles avec les meilleures performances

Points d'Innovation Technique

  1. Garantie de diversité: Assurance de la diversité des invites en forçant l'utilisation de différentes méthodes de modification, évitant les optima locaux
  2. Apprentissage à partir des défaillances: Apprentissage à partir des cas de défaillance, guidage du processus d'optimisation par l'induction de règles
  3. Amélioration contextuelle: Fourniture d'informations contextuelles au niveau du projet, aidant le LLM à générer des cas de test précis
  4. Intégration souple: Conversion des résultats de réflexion en règles concises, évitant la dégradation de performance causée par les invites trop longues

Configuration Expérimentale

Ensemble de Données

Utilisation du benchmark largement adopté Defects4J, comprenant 5 projets Java :

  • Apache Commons CLI (29 bugs)
  • Apache Commons CSV (15 bugs)
  • Google Gson (17 bugs)
  • JFreeChart (26 bugs)
  • Apache Commons Lang (60 bugs)
  • Total : 147 bugs, 85 classes focales, 5 278 méthodes focales

Métriques d'Évaluation

  • Couverture des lignes (%): Pourcentage de lignes de code exécutées pendant les tests
  • Couverture des branches (%): Pourcentage de branches exécutées pendant les tests

Méthodes de Comparaison

Modèles LLM:

  • ChatGPT (gpt-3.5-turbo-0125)
  • Llama-3.1-70B-Instruct
  • Qwen2-72B-Instruct

Méthodes de base:

  • Basic : performance de la meilleure invite de départ
  • APE : demande directe au LLM de générer des variantes d'invites préservant la sémantique
  • OPRO : génération de nouvelles invites combinant les informations de performance
  • EVOPROMPT (GA/DE) : méthodes récentes d'optimisation d'invites basées sur des algorithmes évolutionnaires

Détails d'Implémentation

  • Nombre d'invites de départ : 5
  • Nombre d'invites générées par itération : 2
  • Nombre maximal d'itérations : 5
  • Ensemble de développement : 10 bugs échantillonnés aléatoirement
  • Expériences répétées 3 fois avec résultats moyens rapportés

Résultats Expérimentaux

Résultats Principaux

Performance sur ChatGPT:

  • Couverture des lignes : MAPS atteint 53,80%, la meilleure méthode de base EVOPROMPT(GA) atteint 46,63%, amélioration de 7,17%
  • Couverture des branches : MAPS atteint 41,84%, la meilleure méthode de base atteint 35,88%, amélioration de 5,96%

Performance sur Llama-3.1:

  • Couverture des lignes : MAPS atteint 50,59%, la meilleure méthode de base atteint 46,52%, amélioration de 4,07%
  • Couverture des branches : MAPS atteint 39,50%, la meilleure méthode de base atteint 35,07%, amélioration de 4,43%

Performance sur Qwen2:

  • Couverture des lignes : MAPS atteint 45,51%, la meilleure méthode de base atteint 39,41%, amélioration de 6,10%
  • Couverture des branches : MAPS atteint 32,71%, la meilleure méthode de base atteint 28,92%, amélioration de 3,79%

Étude d'Ablation

Analyse de la contribution de chaque module (avec ChatGPT comme exemple) :

  • Suppression de l'extraction de connaissances contextuelles du domaine : couverture des lignes diminue de 9,64%, couverture des branches diminue de 8,53%
  • Suppression de la génération d'invites guidée par la diversité : couverture des lignes diminue de 8,21%, couverture des branches diminue de 7,80%
  • Suppression de l'induction de règles pilotée par les défaillances : couverture des lignes diminue de 6,94%, couverture des branches diminue de 4,76%

Effet de Personnalisation des LLM

L'expérience valide que MAPS peut générer des invites personnalisées pour différents LLM :

  • Chaque LLM fonctionne mieux avec ses invites optimisées dédiées
  • L'invite finale de ChatGPT surpasse les invites d'autres LLM respectivement de 2,45% et 2,66% en couverture des lignes
  • Les invites optimisées par MAPS surpassent toutes les invites conçues manuellement

Analyse de Cas

Cas 1 - Llama-3.1: Grâce à la deuxième règle induite, le modèle génère correctement des cas de test incluant la gestion des exceptions Cas 2 - ChatGPT: Grâce aux connaissances contextuelles inter-fichiers, le modèle peut correctement initialiser les classes abstraites

Travaux Connexes

Optimisation Automatisée des Invites

  • APE : demande directe au LLM de générer des variantes d'invites préservant la sémantique
  • OPRO : génération d'invites guidée par les informations de performance
  • EVOPROMPT : méthode récente basée sur des algorithmes évolutionnaires

Génération de Cas de Test

  • Méthodes traditionnelles : Randoop (fuzzing aléatoire), Evosuite (algorithmes de recherche)
  • Méthodes d'apprentissage profond : AthenaTest (fine-tuning BART), A3Test (amélioration des connaissances d'assertion)
  • Méthodes LLM : ChatUniTest, ChatTESTER, etc.

Conclusion et Discussion

Conclusions Principales

  1. MAPS surpasse significativement les méthodes d'optimisation d'invites existantes sur tous les LLM
  2. Différents LLM nécessitent effectivement des invites personnalisées
  3. Les trois modules principaux contribuent tous de manière importante à l'amélioration de performance, l'extraction de connaissances contextuelles du domaine contribuant le plus

Limitations

  1. Limitations des LLM: Évaluation limitée à trois LLM représentatifs
  2. Limitations linguistiques: Les expériences sont limitées aux projets Java, ne couvrant pas d'autres langages de programmation
  3. Portée de l'ensemble de données: Utilisation uniquement du benchmark Defects4J

Directions Futures

  1. Extension à davantage de LLM et de langages de programmation
  2. Intégration avec les méthodes existantes de génération de tests LLM
  3. Exploration d'informations contextuelles plus complexes au niveau du projet

Évaluation Approfondie

Avantages

  1. Définition claire du problème: Première étude systématique de l'optimisation des invites pour la génération de cas de test LLM
  2. Forte innovativité de la méthode: Conception raisonnable des trois modules, résolvant les problèmes clés des méthodes existantes
  3. Expériences complètes: Évaluation exhaustive sur plusieurs LLM et projets
  4. Haute valeur pratique: Méthode générique applicable à différents LLM et projets

Insuffisances

  1. Coût de calcul: Le processus d'optimisation itérative peut nécessiter de nombreux appels API, avec un coût élevé
  2. Qualité des règles: L'induction de règles pilotée par les défaillances dépend de la capacité de réflexion du LLM, la qualité des règles peut être instable
  3. Extraction contextuelle: L'exhaustivité et la précision de l'extraction de contexte inter-fichiers nécessitent une vérification supplémentaire

Impact

  1. Contribution académique: Ouverture d'une nouvelle direction de recherche en optimisation d'invites pour la génération de cas de test LLM
  2. Valeur pratique: Application directe possible dans la génération de cas de test en développement logiciel réel
  3. Reproductibilité: Fourniture d'un package complet de reproduction, facilitant les recherches ultérieures

Scénarios d'Application

  1. Projets logiciels nécessitant la génération automatique de cas de test de haute qualité
  2. Équipes utilisant différents LLM pour la génération de code
  3. Tâches de génie logiciel nécessitant l'optimisation de la performance des LLM

Références

L'article cite 47 références connexes, couvrant plusieurs domaines importants tels que les tests logiciels, l'ingénierie des invites et les grands modèles de langage, fournissant une base théorique solide pour la recherche.


Évaluation Globale: Cet article est un travail de recherche en génie logiciel de haute qualité, possédant une valeur théorique et pratique importante dans le domaine de la génération de cas de test LLM. La conception de la méthode est raisonnable, l'évaluation expérimentale est complète et les résultats sont convaincants. Bien qu'il existe certaines limitations, la contribution globale est significative et fournit une impulsion importante pour le développement de ce domaine.