Los investigadores de IMDEA Software Facundo Molina, Juan Manuel Copia y Alessandra Gorla presentan FIXCHECK, un enfoque novedoso para mejorar los análisis de corrección de parches que combina análisis estáticos, pruebas aleatorias y grandes modelos de lenguaje. Sus innovaciones, plasmadas en el artículo: “Improving Patch Correctness Analysis via Random Testing and Large Language Models” fueron presentadas en la Conferencia Internacional sobre Pruebas, Verificación y Validación de Software (ICST 2024).
Contexto
Generar parches que resuelvan los defectos en el software es una tarea crucial en el mantenimiento de los sistemas informáticos. Por lo general, los defectos de software se reportan a través de casos de prueba, que revelan comportamientos no deseados en el software.
En respuesta a estos defectos, los desarrolladores crean parches que deben someterse a validación antes de ser enviados a la base de código, garantizando que la prueba proporcionada ya no expone el defecto. Sin embargo, es posible que los parches no solucionen debidamente el fallo subyacente o introduzcan nuevos fallos, lo que da lugar a parches incorrectos.
La detección de estos parches incorrectos puede repercutir de manera significativa en el tiempo y el esfuerzo dedicados a la corrección de fallos por los desarrolladores y en el mantenimiento general de los sistemas de software.
El estudio
La reparación automática de programas (APR por sus siglas en inglés), proporciona a los desarrolladores de software herramientas capaces de generar automáticamente parches para programas defectuosos. Sin embargo, su uso ha destapado numerosos errores en estos parches que no solventan los fallos de manera adecuada.
Para abordar este problema, los investigadores de IMDEA Software han creado FIXCHECK, un método innovador que combina pruebas aleatorias y grandes modelos lingüísticos para generar automáticamente nuevos casos con el objetivo de detectar fallos en parches potencialmente incorrectos. FIXCHECK emplea un proceso de dos pasos. El primero consiste en generar pruebas aleatorias, obteniendo un amplio conjunto de casos de prueba. El segundo paso se basa en el uso de grandes modelos de lenguaje, de los cuales se derivan oráculos significativos para cada caso de prueba.
Además, FIXCHECK incluye un mecanismo de selección y priorización que ejecuta los nuevos casos de prueba sobre el programa parcheado y a continuación, descarta o clasifica estas pruebas en función de su probabilidad de revelar fallos en el parche.
“La eficacia de FIXCHECK para generar casos de prueba que revelan fallos en parches incorrectos se evaluó en 160 parches, entre los que se incluían tanto parches creados por desarrolladores como generados por herramientas de APR” indica Facundo Molina, investigador postdoctoral del Instituto IMDEA Software.
Los resultados muestran que FIXCHECK puede generar eficazmente pruebas de detección de fallos para el 62% de los parches incorrectos escritos por desarrolladores, con un alto grado de confianza. Además, complementa técnicas existentes de evaluación de corrección de parches al proporcionar casos de prueba que revelan fallos para hasta el 50% de los parches incorrectos identificados por las técnicas más avanzadas.
FIXCHECK representa un avance significativo en el campo de la reparación y mantenimiento del software, ya que ofrece una solución robusta para automatizar la generación de pruebas y detectar fallos durante el mantenimiento del software. Este enfoque no sólo mejora la eficacia de la validación de parches, sino que también promueve una adopción más amplia de métodos automatizados de reparación de programas.
**Este trabajo ha sido financiado por el programa de la Comunidad de Madrid S2018/TCS-4339 (BLOQUES-CM) y por el Gobierno de España MCIN/AEI/10.13039/501100011033/ERDF a través de las subvenciones TED2021-132464B-I00 (PRODIGY) y PID2022-142290OB-I00 (ESPADA). Estos proyectos están cofinanciados por los fondos de la Unión Europea FSE, EIE y NextGeneration.