ChatPaper.aiChatPaper

Aprendizaje para Generar Pruebas Unitarias para Depuración Automatizada

Learning to Generate Unit Tests for Automated Debugging

February 3, 2025
Autores: Archiki Prasad, Elias Stengel-Eskin, Justin Chih-Yao Chen, Zaid Khan, Mohit Bansal
cs.AI

Resumen

Las pruebas unitarias (UTs) desempeñan un papel fundamental en la evaluación de la corrección del código, así como en proporcionar retroalimentación a un gran modelo de lenguaje (LLM) mientras depura iterativamente código defectuoso, lo que motiva la generación automatizada de pruebas. Sin embargo, descubrimos un compromiso entre generar entradas de pruebas unitarias que revelen errores al proporcionar un código defectuoso y predecir correctamente la salida de la prueba unitaria sin acceso a la solución correcta. Para abordar este compromiso, proponemos UTGen, que enseña a los LLM a generar entradas de pruebas unitarias que revelen errores junto con sus salidas esperadas correctas basadas en descripciones de tareas y código candidato. Integrarnos UTGen en UTDebug, un sólido proceso de depuración que utiliza pruebas generadas para ayudar a los LLM a depurar de manera efectiva. Dado que las pruebas generadas por el modelo pueden proporcionar señales ruidosas (por ejemplo, salidas incorrectamente predichas), UTDebug (i) escala UTGen a través de cálculos en tiempo de prueba para mejorar la predicción de la salida de las pruebas unitarias, y (ii) valida y retrocede ediciones basadas en múltiples pruebas unitarias generadas para evitar el sobreajuste. Demostramos que UTGen supera a los puntos de referencia de generación de UT en un 7.59% según una métrica que mide la presencia tanto de entradas de UT que revelan errores como de salidas de UT correctas. Cuando se utiliza con UTDebug, encontramos que la retroalimentación de las pruebas unitarias de UTGen mejora la precisión de pass@1 de Qwen-2.5 7B en HumanEvalFix y en nuestra propia división de depuración más difícil de MBPP+ en más de un 3% y un 12.35% (respectivamente) en comparación con otros puntos de referencia de generación de UT basados en LLM.
English
Unit tests (UTs) play an instrumental role in assessing code correctness as well as providing feedback to a large language model (LLM) as it iteratively debugs faulty code, motivating automated test generation. However, we uncover a trade-off between generating unit test inputs that reveal errors when given a faulty code and correctly predicting the unit test output without access to the gold solution. To address this trade-off, we propose UTGen, which teaches LLMs to generate unit test inputs that reveal errors along with their correct expected outputs based on task descriptions and candidate code. We integrate UTGen into UTDebug, a robust debugging pipeline that uses generated tests to help LLMs debug effectively. Since model-generated tests can provide noisy signals (e.g., from incorrectly predicted outputs), UTDebug (i) scales UTGen via test-time compute to improve UT output prediction, and (ii) validates and back-tracks edits based on multiple generated UTs to avoid overfitting. We show that UTGen outperforms UT generation baselines by 7.59% based on a metric measuring the presence of both error-revealing UT inputs and correct UT outputs. When used with UTDebug, we find that feedback from UTGen's unit tests improves pass@1 accuracy of Qwen-2.5 7B on HumanEvalFix and our own harder debugging split of MBPP+ by over 3% and 12.35% (respectively) over other LLM-based UT generation baselines.

Summary

AI-Generated Summary

PDF42February 4, 2025