2025-11-21T20:16:16.286197

The Potential of LLMs in Automating Software Testing: From Generation to Reporting

Sherifi, Slhoub, Nembhard
Having a high quality software is essential in software engineering, which requires robust validation and verification processes during testing activities. Manual testing, while effective, can be time consuming and costly, leading to an increased demand for automated methods. Recent advancements in Large Language Models (LLMs) have significantly influenced software engineering, particularly in areas like requirements analysis, test automation, and debugging. This paper explores an agent-oriented approach to automated software testing, using LLMs to reduce human intervention and enhance testing efficiency. The proposed framework integrates LLMs to generate unit tests, visualize call graphs, and automate test execution and reporting. Evaluations across multiple applications in Python and Java demonstrate the system's high test coverage and efficient operation. This research underscores the potential of LLM-powered agents to streamline software testing workflows while addressing challenges in scalability and accuracy.
academic

El Potencial de los LLMs en la Automatización de Pruebas de Software: Desde la Generación hasta la Generación de Informes

Información Básica

  • ID del Artículo: 2501.00217
  • Título: The Potential of LLMs in Automating Software Testing: From Generation to Reporting
  • Autores: Betim Sherifi, Khaled Slhoub, Fitzroy Nembhard (Instituto Tecnológico de Florida)
  • Clasificación: cs.SE (Ingeniería de Software), cs.AI (Inteligencia Artificial)
  • Fecha de Publicación: 31 de diciembre de 2024
  • Enlace del Artículo: https://arxiv.org/abs/2501.00217

Resumen

El desarrollo de software de alta calidad en la ingeniería de software requiere procesos robustos de verificación y validación. Aunque las pruebas manuales son efectivas, son consumidoras de tiempo y costosas, por lo que existe una creciente demanda de métodos automatizados. Los avances recientes en Modelos de Lenguaje Grande (LLMs) han impactado significativamente la ingeniería de software, particularmente en áreas como análisis de requisitos, automatización de pruebas y depuración. Este artículo explora un enfoque de pruebas de software automatizadas orientado a agentes, aprovechando los LLMs para reducir la intervención manual y mejorar la eficiencia de las pruebas. El marco propuesto integra LLMs para generar pruebas unitarias, visualizar gráficos de llamadas y automatizar la ejecución y generación de informes de pruebas. La evaluación en múltiples aplicaciones en Python y Java demuestra que el sistema posee una alta cobertura de pruebas y capacidad de ejecución eficiente.

Antecedentes de Investigación y Motivación

Definición del Problema

  1. Problema Central: Los métodos tradicionales de pruebas de software presentan ineficiencia, alto costo e intervención manual excesiva
  2. Necesidad Práctica: El aseguramiento de la calidad del software requiere procesos exhaustivos de verificación y validación, pero las pruebas manuales no pueden satisfacer los requisitos de eficiencia del desarrollo de software moderno

Análisis de Importancia

  • Las pruebas de software se consideran uno de los campos más importantes en la educación de ingeniería de software
  • Los métodos de pruebas manuales, como las pruebas de regresión, son particularmente consumidores de tiempo y costosos
  • Garantizar que los productos de software se ejecuten según lo esperado y cumplan con los estándares de calidad es esencial para la ingeniería de software

Limitaciones de los Enfoques Existentes

  • Pruebas Manuales: Aunque efectivas, son consumidoras de tiempo y costosas
  • Pruebas Automatizadas Tradicionales: No pueden reemplazar completamente los métodos manuales; la intervención humana sigue siendo necesaria en escenarios como pruebas de GUI
  • Pruebas de Software Basadas en Agentes Tradicionales (ABST): Carecen de capacidades inteligentes de generación de casos de prueba

Motivación de la Investigación

Aprovechar las poderosas capacidades de los LLMs, combinadas con sistemas multiagente, para construir un marco de pruebas inteligente que pueda generar dinámicamente casos de prueba, reducir significativamente la entrada manual, y minimizar el tiempo de creación y ejecución de casos de prueba.

Contribuciones Principales

  1. Propone un marco de pruebas de software multiagente basado en LLM que implementa automatización de extremo a extremo desde la generación de pruebas hasta la generación de informes
  2. Diseña una arquitectura de cuatro capas que incluye cliente web de audio, agente de pruebas de software, LLMs y entorno de desarrollo
  3. Implementa generación dinámica de casos de prueba que aprovecha los LLMs para generar automáticamente pruebas unitarias personalizadas y justificaciones de pruebas
  4. Integra funcionalidades de visualización que generan automáticamente gráficos de llamadas en formato DOT para mostrar las interacciones de la aplicación
  5. Valida la efectividad del sistema logrando alta cobertura de pruebas en proyectos Python y Java (promedio 93.45%-97.71%)

Explicación Detallada del Método

Definición de Tareas

Entrada: Solicitudes de prueba proporcionadas por el usuario a través de voz o texto (incluyendo nombre del proyecto, subcarpetas, lenguaje de programación, etc.) Salida: Informe PDF completo que contiene resultados de pruebas, análisis de cobertura, justificaciones de pruebas y gráficos de llamadas Restricciones: Soporta proyectos Python y Java, enfocado en el nivel de pruebas unitarias

Arquitectura del Modelo

Arquitectura de Alto Nivel

El sistema contiene cuatro componentes principales:

  1. Cliente Web de Audio: Captura la entrada del usuario (comandos de voz o texto) e inicia el flujo de trabajo de pruebas a través de solicitudes HTTP GET
  2. Agente de Pruebas de Software: Componente central del sistema que coordina las interacciones entre componentes, actuando como capa de abstracción para la generación de scripts de prueba, ejecución y creación de informes
  3. Modelos de Lenguaje Grande (LLMs): Ejecutan tareas de extracción de entidades, generación de pruebas y generación de gráficos DOT
  4. Entorno de Desarrollo: Proporciona acceso al código del proyecto, ejecuta los casos de prueba generados y muestra los resultados

Flujo de Trabajo de Arquitectura de Bajo Nivel

  1. Inicialización: El cliente envía un comando de voz al API generador de pruebas
  2. Extracción de Entidades: El LLM extrae el nombre del proyecto, subcarpetas y lenguaje de programación de la solicitud del usuario
  3. Localización de Archivos: El módulo FileLocator localiza la carpeta del proyecto especificada y extrae el contenido de los archivos
  4. Generación de Pruebas: El LLM (utilizando Gemini) genera pruebas unitarias y justificaciones correspondientes
  5. Generación de Gráficos: El LLM genera cadenas de formato DOT para visualizar gráficos de llamadas
  6. Ejecución e Informe: El ejecutor de pruebas ejecuta las pruebas, y el generador de informes PDF crea un informe completo que contiene resultados, cobertura y gráficos de llamadas

Puntos de Innovación Técnica

  1. Extracción Inteligente de Entidades: Utiliza LLM para extraer automáticamente parámetros clave de prueba de instrucciones en lenguaje natural
  2. Generación Dinámica de Pruebas: Genera automáticamente scripts de prueba que incluyen casos básicos y casos límite basados en análisis de código
  3. Generación de Justificaciones: Proporciona justificaciones detalladas de pruebas y descripciones de escenarios cubiertos para cada caso de prueba
  4. Visualización Integrada: Genera automáticamente gráficos de llamadas para ayudar a comprender las relaciones de interacción de la base de código
  5. Automatización de Extremo a Extremo: Proceso completamente automatizado desde la entrada del usuario hasta el informe final

Configuración Experimental

Conjunto de Datos

Se utilizaron cuatro aplicaciones de diferentes niveles de complejidad:

Proyectos Python:

  • Experiment: Funcionalidad de calculadora básica (47 líneas de código)
  • Cinema: Sistema de gestión de cines (183 líneas de código)

Proyectos Java:

  • StudentAverage: Cálculo de calificaciones de estudiantes (114 líneas de código)
  • LibrarySystem: Sistema de gestión de biblioteca (269 líneas de código)

Métricas de Evaluación

  1. Tasa de Éxito de Ejecución: Proporción de ejecuciones que completan todos los pasos (generación de pruebas, ejecución, generación de informe PDF)
  2. Cobertura de Pruebas: Porcentaje de código cubierto por casos de prueba generados
  3. Tiempo de Ejecución: Análisis de tiempo consumido en cada fase operativa
  4. Comparación de Lenguajes: Diferencias de rendimiento entre proyectos Python vs Java

Detalles de Implementación

  • Modelo LLM: Principalmente Google Gemini, con experimentos comparativos usando ChatGPT
  • Número de Pruebas: 20 ejecuciones para proyectos Python, 24 ejecuciones para proyectos Java
  • Formato de Entrada: Pruebas con múltiples formatos de solicitudes en lenguaje natural

Resultados Experimentales

Resultados Principales

Desempeño de Tasa de Éxito

  • Proyectos Python: Las 20 ejecuciones fueron exitosas (tasa de éxito del 100%)
  • Proyectos Java: 3 fallos de 24 ejecuciones (tasa de éxito del 87.5%)
  • Causas de Fallo: Principalmente causadas por solicitudes ambiguas y errores de compilación en scripts de prueba generados

Análisis de Tiempo de Ejecución

  • Tiempo Total Promedio de Ejecución: 83.5 segundos
  • Tiempo de Generación de Pruebas: 62.8 segundos (mayor proporción)
  • Localización de Carpetas: 9.7 segundos
  • Generación de Gráfico DOT: 5.4 segundos
  • Ejecución de Pruebas: 3.2 segundos

Resultados de Comparación de Lenguajes

MétricaJavaPython
Tiempo Total Promedio de Ejecución86.7s80s
Tiempo de Generación de Pruebas62.4s63.3s
Tiempo de Ejecución de Pruebas5.44s0.87s
Cobertura Promedio de Pruebas97.71%93.45%

Análisis Detallado del Proyecto

ProyectoLenguajeLíneas de CódigoTiempo TotalGeneración de PruebasEjecución de PruebasCobertura
LibrarySystemJava269119.06s92.54s5.39s94.67%
StudentManagerJava11462.55s39.79s5.48s100.00%
CinemaPython183110.13s92.43s0.79s88.30%
ExperimentPython4749.78s34.17s0.96s98.60%

Experimento Comparativo de LLM

ChatGPT vs Gemini (proyecto LibrarySystem):

  • Tiempo de generación de ChatGPT: ~180 segundos (aproximadamente el doble de Gemini)
  • Cobertura de pruebas de ChatGPT: 98%
  • Nota: El uso de la aplicación web de ChatGPT en lugar de la API puede afectar el tiempo de generación

Análisis de Casos

Ejemplo de Justificación de Pruebas

Proyecto Cinema - función rent_movie:

  • Caso Básico: "Probar el alquiler de una película disponible a un miembro existente"
  • Casos Límite: "Probar el alquiler de una película inexistente, alquilar una película a un miembro inexistente, alquilar una película ya alquilada"

Proyecto Library - función getTitle:

  • Caso Básico: "Probar la recuperación del título del libro después de la creación del objeto"
  • Casos Límite: No aplicable

Trabajo Relacionado

Pruebas de Software Basadas en Agentes Tradicionales (ABST)

  • Evolución Histórica: Ha recibido atención desde 1999, alcanzando un pico significativo en la última década
  • Énfasis de Aplicación: Principalmente enfatiza pruebas a nivel de sistema, con Java como lenguaje objetivo principal
  • Trabajos Representativos:
    • Marco de automatización de pruebas para sistemas web (colaboración multiagente)
    • Pruebas de máquinas de café industriales (clasificación de prioridades con lógica difusa)

Pruebas de Software Mejoradas con LLM

  • Encuesta de Aplicación Industrial: El 48% de los profesionales ya han integrado LLMs en actividades de prueba
  • Campos de Aplicación: Análisis de requisitos, desarrollo de planes de prueba, automatización de pruebas
  • Herramientas Comúnmente Utilizadas: ChatGPT, GitHub Copilot
  • Tendencias de Investigación: El análisis de 102 artículos relacionados muestra que los LLMs tienen un valor significativo en generación de casos de prueba, creación de aserciones y otras áreas

Conclusiones y Discusión

Conclusiones Principales

  1. Alta Tasa de Éxito: Los agentes impulsados por LLM muestran un desempeño excelente en la automatización de pruebas de software, con una tasa de éxito del 100% en proyectos Python
  2. Alta Cobertura: La cobertura promedio de pruebas supera el 93%, demostrando la efectividad de los casos de prueba generados
  3. Mejora de Eficiencia: Reduce significativamente la intervención manual, logrando automatización de extremo a extremo desde la generación de pruebas hasta la generación de informes
  4. Adaptabilidad de Lenguajes: El marco soporta exitosamente dos lenguajes de programación principales: Python y Java

Limitaciones

  1. Estabilidad en Proyectos Java: La tasa de fallo en ejecuciones Java es relativamente alta, requiriendo mejoras en el procesamiento del lenguaje natural y la precisión sintáctica
  2. Restricción de Alcance de Pruebas: Actualmente enfocado solo en pruebas unitarias, careciendo de pruebas de integración y pruebas a nivel de sistema
  3. Funcionalidad de Visualización: Aunque los gráficos de llamadas son útiles, carecen de funcionalidades avanzadas como mapas de calor de cobertura
  4. Dependencia de Entrada: Sensible a la calidad de las solicitudes; solicitudes ambiguas pueden causar fallos

Direcciones Futuras

  1. Extensión de Tipos de Pruebas: Introducir soporte para pruebas de integración y pruebas a nivel de sistema
  2. Mejora del Soporte de Lenguajes: Expandir a más lenguajes de programación
  3. Mejora de Visualización: Agregar mapas de calor de cobertura de tendencias de defectos
  4. Integración de Requisitos: Utilizar documentos de especificación de requisitos como entrada de solicitud para mejorar la precisión
  5. Manejo de Errores: Mejorar el manejo de solicitudes ambiguas y mecanismos de recuperación de errores

Evaluación Profunda

Fortalezas

  1. Fuerte Innovación: Primera combinación sistemática de LLM con arquitectura multiagente para automatización de pruebas de software de extremo a extremo
  2. Alto Valor Práctico: Resuelve puntos débiles reales en el campo de pruebas de software, con fuerte valor de aplicación de ingeniería
  3. Evaluación Completa: Evaluación exhaustiva entre lenguajes y múltiples proyectos, con resultados convincentes
  4. Arquitectura Clara: Diseño de arquitectura de alto y bajo nivel razonable, alto grado de modularidad, fácil de extender y mantener

Deficiencias

  1. Alcance Limitado de Pruebas: Solo soporta pruebas unitarias, incapaz de satisfacer necesidades completas de pruebas de software
  2. Análisis Insuficiente de Errores: Análisis limitado de las causas profundas de fallos en proyectos Java
  3. Falta de Comparación de Referencia: Carece de comparación detallada con herramientas de automatización de pruebas existentes
  4. Verificación de Escalabilidad: No se ha verificado la escalabilidad del sistema en proyectos grandes y complejos

Impacto

  1. Contribución Académica: Proporciona una nueva dirección de investigación para la aplicación de LLM en ingeniería de software
  2. Valor Práctico: Puede aplicarse directamente a procesos de desarrollo de software, mejorando la eficiencia de pruebas
  3. Promoción Tecnológica: Demuestra el enorme potencial de los LLM en el campo de automatización de pruebas
  4. Reproducibilidad: Descripción detallada de la arquitectura, facilitando que otros investigadores reproduzcan y mejoren el trabajo

Escenarios de Aplicación

  1. Proyectos Medianos y Pequeños: Particularmente adecuado para proyectos con escala de código de cientos de líneas
  2. Automatización de Pruebas Unitarias: Puede reducir significativamente el trabajo manual de escritura de pruebas unitarias
  3. Validación Rápida de Prototipos: Aplicable a escenarios que requieren generación rápida de casos de prueba
  4. Educación y Capacitación: Puede utilizarse en enseñanza de pruebas de software y escenarios de capacitación

Referencias Bibliográficas

El artículo cita 13 referencias importantes que abarcan métodos ABST tradicionales, aplicación de LLM en pruebas de software y teoría fundamental de pruebas de software, proporcionando una base teórica sólida para la investigación.


Evaluación General: Este es un artículo de investigación con valor significativo en el campo interdisciplinario de ingeniería de software e inteligencia artificial. Aunque presenta algunas limitaciones, su enfoque innovador y resultados prácticos abren nuevas direcciones para la aplicación de LLM en automatización de pruebas de software, con buen valor académico y perspectivas prácticas prometedoras.