Un enfoque novedoso mejora la reparación automática de software mediante la generación de casos de prueba
Los investigadores del Instituto IMDEA Software, Facundo Molina, Juan Manuel Copia y Alessandra Gorla, presentan FIXCHECK, un enfoque innovador para mejorar el análisis de corrección de parches que combina el análisis estático, pruebas aleatorias y modelos de lenguaje grande.
Sus innovaciones, plasmadas en el artículo: «Improving Patch Correctness Analysis via Random Testing and Large Language Models», fueron presentadas en la Conferencia Internacional de Pruebas, Verificación y Validación de Software (ICST 2024), y detalles adicionales están disponibles en el servidor Zenodo.
Generar parches que corrijan defectos de software es una tarea crucial en el mantenimiento de sistemas de software. Normalmente, los defectos se reportan a través de casos de prueba que revelan comportamientos indeseables en el software.
En respuesta a estos defectos, los desarrolladores crean parches que deben ser validados antes de ser incorporados a la base de código, asegurando que el caso de prueba proporcionado ya no exponga el defecto. Sin embargo, estos parches pueden no abordar eficazmente el error subyacente o introducir nuevos errores, resultando en lo que se conoce como «malas correcciones» o parches incorrectos.
La detección de estos parches incorrectos puede tener un impacto significativo en el tiempo y el esfuerzo dedicados por los desarrolladores a la corrección de errores y al mantenimiento general de los sistemas de software.
La reparación automática de programas (APR, por sus siglas en inglés) proporciona a los desarrolladores herramientas capaces de generar automáticamente parches para programas con errores. No obstante, su uso ha revelado numerosos parches incorrectos que no logran corregir el error.
Para abordar este problema, los investigadores de IMDEA Software han creado FIXCHECK, un enfoque novedoso para mejorar los análisis de corrección de parches combinando análisis estático, pruebas aleatorias y modelos de lenguaje grande (LLM, por sus siglas en inglés) para generar automáticamente pruebas que detecten errores en parches potencialmente incorrectos.
FIXCHECK emplea un proceso de dos pasos. El primer paso consiste en generar pruebas aleatorias, obteniendo un amplio conjunto de casos de prueba. El segundo paso se basa en el uso de modelos de lenguaje grande, a partir de los cuales se derivan aserciones significativas para cada caso de prueba.
Además, FIXCHECK incluye un mecanismo de selección y priorización que ejecuta nuevos casos de prueba en el programa parcheado y luego descarta o clasifica estas pruebas según su probabilidad de revelar errores en el parche.
«La efectividad de FIXCHECK en generar casos de prueba que revelen errores en parches incorrectos fue evaluada en 160 parches, incluyendo tanto parches creados por desarrolladores como parches generados por herramientas de RPA,» afirma Facundo Molina, investigador postdoctoral en el Instituto IMDEA Software.
Los resultados muestran que FIXCHECK puede generar eficazmente pruebas de detección de errores para el 62% de los parches incorrectos escritos por desarrolladores, con un alto grado de confianza. Además, complementa las técnicas existentes de evaluación de corrección de parches al proporcionar casos de prueba que revelan errores para hasta el 50% de los parches incorrectos identificados por técnicas de última generación.
FIXCHECK representa un avance significativo en el campo de la reparación y mantenimiento de software al ofrecer una solución robusta para automatizar la generación de pruebas y detectar fallos durante el mantenimiento del software. Este enfoque no solo mejora la efectividad de la validación de parches, sino que también promueve una mayor adopción de métodos automatizados de reparación de programas.