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
The Prompt Alchemist: Automatisierte LLM-angepasste Prompt-Optimierung für die Testfall-Generierung
Testfälle sind entscheidend für die Überprüfung der Zuverlässigkeit und Qualität von Softwareanwendungen. Neuere Forschungen zeigen, dass große Sprachmodelle (LLMs) in der Lage sind, nützliche Testfälle für einen gegebenen Quellcode zu generieren. Allerdings verlassen sich bestehende Arbeiten hauptsächlich auf manuell geschriebene einfache Prompts, was oft zu suboptimalen Ergebnissen führt, da die Leistung von LLMs stark von der Qualität des Prompts abhängt. Darüber hinaus verwenden diese Methoden denselben Prompt für alle LLMs und ignorieren die Tatsache, dass verschiedene LLMs möglicherweise von unterschiedlichen Prompts profitieren. Dieses Papier stellt die MAPS-Methode vor, die durch drei Kernmodule – diversitätsgesteuerte Prompt-Generierung, fehlergesteuerte Regelinduktion und Extraktion von Domänenkontextwissen – eine automatisierte Prompt-Optimierung für verschiedene LLMs ermöglicht.
Die Testfall-Generierung ist eine Schlüsselaufgabe in der Softwaretechnik. Während traditionelle Methoden wie Evosuite und Randoop auf Such- und Constraint-Techniken angewiesen sind, weisen LLM-basierte Methoden trotz ihres Potenzials folgende Probleme auf:
Abhängigkeit von manuell geschriebenen einfachen Prompts führt zu suboptimaler Leistung
Verwendung desselben Prompts für alle LLMs ignoriert Unterschiede zwischen LLMs
Mangel an spezialisierter Optimierung für die Testfall-Generierungsaufgabe
Durch vorläufige Experimente identifizierten die Autoren drei Hauptprobleme bestehender automatisierter Prompt-Optimierungsmethoden (APO) bei der Testfall-Generierung:
Geringe Diversität: Generierte Prompts mangelt es an Vielfalt, was zu lokalen Optima führt
Wiederholte Fehler: Optimierte Prompts erzeugen immer noch dieselben Fehler wie ursprüngliche Prompts
Mangel an Domänenwissen: Fehlende projektspezifische Kontextinformationen wie Vererbungsbeziehungen und Klassenaufrufinformationen
Erste Untersuchung: Nach Aussage der Autoren ist dies die erste Studie zur LLM-angepassten Prompt-Optimierung speziell für die Testfall-Generierungsaufgabe
Innovative Methode: Vorstellung der MAPS-Methode, die diversitätsgesteuerte Prompt-Generierung, fehlergesteuerte Regelinduktion und Extraktion von Domänenkontextwissen integriert
Signifikante Verbesserung: Experimente auf drei populären LLMs zeigen, dass MAPS im Vergleich zur stärksten Baseline durchschnittlich 6,19% Zeilencoverage und 5,03% Branchencoverage verbessert
LLM-Anpassung: Nachweis der Wirksamkeit der Generierung angepasster Prompts für verschiedene LLMs
Gegeben ein Black-Box-Modell M, ein kleiner Entwicklungssatz Ddev, ein Testsatz Dtest und eine Bewertungsfunktion s(·), zielt APO darauf ab, basierend auf Ddev einen optimierten Prompt p aus dem natürlichsprachigen Raum zu finden, der die Leistung von M auf dem Testsatz Dtest maximiert.
Dieses Modul stellt dem LLM relevante projektspezifische Kontextinformationen bereit:
Kontextwissen innerhalb von Dateien:
Klassensignatur: Typ und Name der Klasse, die die Fokus-Methode enthält
Fokus-Methode: Die spezifische Methode, für die Testfälle generiert werden sollen
Signaturen von Elementmethoden: Funktionssignaturen anderer Methoden in der Klasse
Kontextwissen über Dateien hinweg:
Klassenvererbungsinformationen: Für abstrakte oder private Klassen wird das gesamte Projekt gescannt, um ihre Unterklassen zu lokalisieren
Klassenaufrufinformationen: Identifizierung von Parametertypen der Fokus-Methode, Verfolgung von Definitionen und Konstruktoren benutzerdefinierter Typen
Dieses Modul erstellt vielfältige Prompts durch Erkundung verschiedener Modifikationspfade:
Algorithmus 2: PROMPTIMPROVEMENT
1. Auswahl der K leistungsstärksten Prompts
2. Generierung von N verschiedenen Modifikationsmethoden
3. Generierung neuer Prompts basierend auf jeder Modifikationsmethode
4. Zusammenführung ausgewählter und neu generierter Prompts
Fall 1 - Llama-3.1: Durch die zweite induzierte Regel generiert das Modell korrekt Testfälle mit Ausnahmeverarbeitung
Fall 2 - ChatGPT: Durch dateiübergreifendes Kontextwissen kann das Modell abstrakte Klassen korrekt initialisieren
Das Papier zitiert 48 relevante Arbeiten, die wichtige Arbeiten in mehreren Bereichen abdecken – Softwaretests, Prompt-Engineering und große Sprachmodelle – und bieten eine solide theoretische Grundlage für die Forschung.
Gesamtbewertung: Dies ist ein hochqualitatives Softwaretechnik-Forschungspapier mit bedeutendem theoretischen und praktischen Wert im Bereich der LLM-Testfall-Generierung. Die Methodengestaltung ist angemessen, die experimentelle Bewertung umfassend und die Ergebnisse überzeugend. Obwohl es einige Einschränkungen gibt, sind die Gesamtbeiträge erheblich und bieten wichtige Impulse für die Entwicklung des Feldes.