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

El Alquimista de Indicaciones: Optimización Automatizada de Indicaciones Adaptadas a LLM para la Generación de Casos de Prueba

Información Básica

  • ID del Artículo: 2501.01329
  • Título: The Prompt Alchemist: Automated LLM-Tailored Prompt Optimization for Test Case Generation
  • Autores: Shuzheng Gao, Chaozheng Wang, Cuiyun Gao, Xiaoqian Jiao, Chun Yong Chong, Shan Gao, Michael R. Lyu
  • Clasificación: cs.SE cs.AI cs.CL
  • Fecha de Publicación/Conferencia: JOURNAL OF LATEX CLASS FILES, VOL. 18, NO. 9, SEPTEMBER 2020
  • Enlace del Artículo: https://arxiv.org/abs/2501.01329

Resumen

Los casos de prueba son esenciales para verificar la confiabilidad y calidad de las aplicaciones de software. Investigaciones recientes demuestran que los Modelos de Lenguaje Grande (LLMs) poseen la capacidad de generar casos de prueba útiles para código fuente dado. Sin embargo, los trabajos existentes se basan principalmente en indicaciones simples escritas manualmente, lo que a menudo produce resultados subóptimos, ya que el rendimiento de los LLMs depende altamente de la calidad de la indicación. Además, estos métodos utilizan la misma indicación para todos los LLMs, ignorando el hecho de que diferentes LLMs pueden ser más adecuados para diferentes indicaciones. Este artículo propone el método MAPS, que logra la optimización automatizada de indicaciones para diferentes LLMs a través de tres módulos principales: generación de indicaciones guiada por diversidad, inducción de reglas impulsada por fallos y extracción de conocimiento contextual del dominio.

Antecedentes de Investigación y Motivación

1. Problema Central

La generación de casos de prueba es una tarea crítica en la ingeniería de software. Los métodos tradicionales como Evosuite y Randoop dependen de técnicas de búsqueda y restricción, mientras que los métodos basados en LLM, aunque muestran potencial, presentan los siguientes problemas:

  • Dependencia de indicaciones simples escritas manualmente, resultando en rendimiento subóptimo
  • Uso de la misma indicación para todos los LLMs, ignorando las diferencias entre ellos
  • Falta de optimización especializada para la tarea de generación de casos de prueba

2. Importancia del Problema

  • La escritura manual de casos de prueba es consumidora de tiempo y difícil
  • Los casos de prueba de alta calidad son críticos para la garantía de calidad del software
  • Las capacidades poderosas de los LLMs en comprensión y generación de código deben aprovecharse plenamente mediante la optimización de indicaciones

3. Limitaciones de Métodos Existentes

Los autores descubrieron a través de experimentos preliminares tres problemas principales con los métodos existentes de Optimización Automatizada de Indicaciones (APO) en la tarea de generación de casos de prueba:

  • Baja Diversidad: Las indicaciones generadas carecen de diversidad, tendiendo a caer en óptimos locales
  • Errores Repetitivos: Las indicaciones optimizadas aún producen los mismos errores que las indicaciones originales
  • Falta de Conocimiento del Dominio: Ausencia de información contextual necesaria a nivel de proyecto, como relaciones de herencia e información de llamadas de clase

Contribuciones Principales

  1. Primer Estudio: Según el conocimiento de los autores, este es el primer estudio especializado en optimización de indicaciones adaptadas a LLM para la tarea de generación de casos de prueba
  2. Método Innovador: Se propone el método MAPS, que integra generación de indicaciones guiada por diversidad, inducción de reglas impulsada por fallos y extracción de conocimiento contextual del dominio
  3. Mejora Significativa: Los experimentos en tres LLMs populares demuestran que MAPS mejora en promedio 6.19% la cobertura de líneas y 5.03% la cobertura de ramas en comparación con el método base más fuerte
  4. Adaptación a LLM: Se demuestra la efectividad de generar indicaciones personalizadas para diferentes LLMs

Explicación Detallada del Método

Definición de la Tarea

Dado un modelo de caja negra M, un pequeño conjunto de desarrollo Ddev, un conjunto de prueba Dtest y una función de puntuación s(·), el APO tiene como objetivo descubrir una indicación optimizada p del espacio del lenguaje natural basada en Ddev, maximizando el rendimiento de M en el conjunto de prueba Dtest.

Arquitectura del Modelo

MAPS contiene tres módulos principales:

1. Extracción de Conocimiento Contextual del Dominio (Domain Contextual Knowledge Extraction)

Este módulo proporciona al LLM información contextual relevante a nivel de proyecto:

Conocimiento Contextual Dentro del Archivo:

  • Firma de clase: Tipo y nombre de la clase que contiene el método focal
  • Método focal: El método específico para el cual se necesitan generar casos de prueba
  • Firmas de métodos miembros: Firmas de función de otros métodos dentro de la clase

Conocimiento Contextual Entre Archivos:

  • Información de herencia de clase: Para clases abstractas o privadas, escanea todo el proyecto para localizar sus subclases
  • Información de llamadas de clase: Identifica tipos de parámetros del método focal, rastreando definiciones de tipos definidos por el usuario y constructores

2. Generación de Indicaciones Guiada por Diversidad (Diversity-guided Prompt Generation)

Este módulo crea indicaciones diversificadas explorando diferentes rutas de modificación:

Algoritmo 2: MEJORA DE INDICACIONES
1. Seleccionar los K mejores indicaciones por rendimiento
2. Generar N métodos de modificación diferentes
3. Generar nuevas indicaciones basadas en cada método de modificación
4. Combinar indicaciones seleccionadas e indicaciones recién generadas

3. Inducción de Reglas Impulsada por Fallos (Failure-driven Rule Induction)

Este módulo evita errores repetitivos mediante el análisis de casos de prueba fallidos para inducir reglas:

Selección de Información de Fallos:

  • Recopilar casos de prueba fallidos e información de errores
  • Usar el algoritmo de agrupamiento DBSCAN para agregar información de fallos
  • Realizar muestreo ponderado basado en el tamaño del agrupamiento y la similitud con fallos históricos

Reflexión sobre Errores:

  • Construir indicaciones de reflexión usando casos de fallo representativos
  • Permitir que el LLM proporcione explicaciones detalladas y soluciones
  • Convertir explicaciones y soluciones en reglas concisas

Validación de Reglas:

  • Validar la efectividad de cada regla recién generada
  • Retener las reglas con mejor rendimiento

Puntos de Innovación Técnica

  1. Garantía de Diversidad: Asegurar diversidad de indicaciones mediante el uso forzado de diferentes métodos de modificación, evitando óptimos locales
  2. Aprendizaje de Fallos: Aprender de casos de fallo, guiando el proceso de optimización mediante inducción de reglas
  3. Mejora de Contexto: Proporcionar información contextual a nivel de proyecto, ayudando al LLM a generar casos de prueba precisos
  4. Integración Suave: Convertir salidas de reflexión en reglas concisas, evitando la degradación de rendimiento causada por indicaciones demasiado largas

Configuración Experimental

Conjunto de Datos

Se utiliza el ampliamente adoptado conjunto de pruebas Defects4J, que incluye 5 proyectos 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 clases focales, 5,278 métodos focales

Métricas de Evaluación

  • Cobertura de Líneas (%): Porcentaje de líneas de código ejecutadas durante las pruebas
  • Cobertura de Ramas (%): Porcentaje de ramas ejecutadas durante las pruebas

Métodos de Comparación

Modelos LLM:

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

Métodos Base:

  • Basic: Rendimiento del mejor indicación semilla
  • APE: Solicitar directamente al LLM generar variantes de indicaciones semánticamente equivalentes
  • OPRO: Generar nuevas indicaciones combinando información de rendimiento
  • EVOPROMPT (GA/DE): Método de optimización de indicaciones más reciente basado en algoritmos evolutivos

Detalles de Implementación

  • Número de indicaciones semilla: 5
  • Número de indicaciones generadas por ronda: 2
  • Número máximo de iteraciones: 5
  • Conjunto de desarrollo: 10 bugs muestreados aleatoriamente
  • Experimentos repetidos 3 veces reportando resultados promedio

Resultados Experimentales

Resultados Principales

Rendimiento en ChatGPT:

  • Cobertura de líneas: MAPS alcanza 53.80%, la línea base más fuerte EVOPROMPT(GA) es 46.63%, mejora de 7.17%
  • Cobertura de ramas: MAPS alcanza 41.84%, la línea base más fuerte es 35.88%, mejora de 5.96%

Rendimiento en Llama-3.1:

  • Cobertura de líneas: MAPS alcanza 50.59%, la línea base más fuerte es 46.52%, mejora de 4.07%
  • Cobertura de ramas: MAPS alcanza 39.50%, la línea base más fuerte es 35.07%, mejora de 4.43%

Rendimiento en Qwen2:

  • Cobertura de líneas: MAPS alcanza 45.51%, la línea base más fuerte es 39.41%, mejora de 6.10%
  • Cobertura de ramas: MAPS alcanza 32.71%, la línea base más fuerte es 28.92%, mejora de 3.79%

Experimentos de Ablación

Análisis de contribución de módulos (usando ChatGPT como ejemplo):

  • Eliminar extracción de conocimiento contextual del dominio: cobertura de líneas disminuye 9.64%, cobertura de ramas disminuye 8.53%
  • Eliminar generación de indicaciones guiada por diversidad: cobertura de líneas disminuye 8.21%, cobertura de ramas disminuye 7.80%
  • Eliminar inducción de reglas impulsada por fallos: cobertura de líneas disminuye 6.94%, cobertura de ramas disminuye 4.76%

Efecto de Personalización de LLM

El experimento verifica que MAPS puede generar indicaciones personalizadas para diferentes LLMs:

  • Cada LLM muestra el mejor rendimiento en sus indicaciones optimizadas exclusivas
  • Las indicaciones finales de ChatGPT en ChatGPT son 2.45% y 2.66% más altas en cobertura de líneas que las indicaciones de otros LLMs
  • Las indicaciones optimizadas por MAPS superan uniformemente las indicaciones diseñadas manualmente

Análisis de Casos

Caso 1 - Llama-3.1: A través de la segunda regla inducida, el modelo generó correctamente casos de prueba que incluyen manejo de excepciones Caso 2 - ChatGPT: A través del conocimiento contextual entre archivos, el modelo pudo inicializar correctamente clases abstractas

Trabajo Relacionado

Optimización Automatizada de Indicaciones

  • APE: Solicitar directamente al LLM generar variantes de indicaciones semánticamente equivalentes
  • OPRO: Combinar información de rendimiento para guiar la generación de indicaciones
  • EVOPROMPT: Método más reciente basado en algoritmos evolutivos

Generación de Casos de Prueba

  • Métodos tradicionales: Randoop (pruebas difusas aleatorias), Evosuite (algoritmos de búsqueda)
  • Métodos de aprendizaje profundo: AthenaTest (BART ajustado), A3Test (mejora de conocimiento de aserciones)
  • Métodos LLM: ChatUniTest, ChatTESTER, etc.

Conclusiones y Discusión

Conclusiones Principales

  1. MAPS supera significativamente los métodos existentes de optimización de indicaciones en todos los LLMs
  2. Diferentes LLMs realmente requieren indicaciones personalizadas
  3. Los tres módulos principales contribuyen significativamente a la mejora de rendimiento, siendo la extracción de conocimiento contextual del dominio la que más contribuye

Limitaciones

  1. Limitaciones de LLM: Evaluación realizada solo en tres LLMs representativos
  2. Limitaciones de Lenguaje: Experimentos limitados a proyectos Java, sin cubrir otros lenguajes de programación
  3. Alcance del Conjunto de Datos: Solo se utiliza el conjunto de pruebas Defects4J

Direcciones Futuras

  1. Extensión a más LLMs y lenguajes de programación
  2. Integración con métodos existentes de generación de pruebas LLM
  3. Exploración de información contextual más compleja a nivel de proyecto

Evaluación Profunda

Fortalezas

  1. Definición Clara del Problema: Primer estudio sistemático de optimización de indicaciones para generación de casos de prueba con LLM
  2. Método Altamente Innovador: Diseño razonable de tres módulos, resolviendo problemas clave de métodos existentes
  3. Experimentos Exhaustivos: Evaluación completa en múltiples LLMs y múltiples proyectos
  4. Alto Valor Práctico: Método universal, aplicable a diferentes LLMs y proyectos

Insuficiencias

  1. Costo Computacional: El proceso de optimización iterativa puede requerir numerosas llamadas a API, con costos relativamente altos
  2. Calidad de Reglas: La inducción de reglas impulsada por fallos depende de la capacidad de reflexión del LLM, la calidad de las reglas puede ser inestable
  3. Extracción de Contexto: La completitud y precisión de la extracción de contexto entre archivos requieren verificación adicional

Impacto

  1. Contribución Académica: Abre una nueva dirección de investigación en optimización de indicaciones para generación de casos de prueba con LLM
  2. Valor Práctico: Puede aplicarse directamente a la generación de casos de prueba en desarrollo de software real
  3. Reproducibilidad: Proporciona un paquete completo de reproducción, facilitando investigaciones posteriores

Escenarios Aplicables

  1. Proyectos de software que requieren generación automática de casos de prueba de alta calidad
  2. Equipos que utilizan diferentes LLMs para generación de código
  3. Tareas de ingeniería de software que requieren optimización del rendimiento de LLM

Referencias

El artículo cita 48 referencias relacionadas, cubriendo trabajos importantes en múltiples campos incluyendo pruebas de software, ingeniería de indicaciones y modelos de lenguaje grande, proporcionando una base teórica sólida para la investigación.


Evaluación General: Este es un artículo de investigación de alta calidad en ingeniería de software con importante valor teórico y práctico en el campo de la generación de casos de prueba con LLM. El diseño del método es razonable, la evaluación experimental es exhaustiva y los resultados son convincentes. Aunque existen algunas limitaciones, la contribución general es significativa, proporcionando un impulso importante para el desarrollo de este campo.