ChatPaper.aiChatPaper

Apprentissage de la génération de tests unitaires pour le débogage automatisé.

Learning to Generate Unit Tests for Automated Debugging

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

Résumé

Les tests unitaires (UTs) jouent un rôle essentiel dans l'évaluation de la correction du code ainsi que dans la fourniture de retours à un grand modèle de langage (LLM) alors qu'il débogue itérativement un code défectueux, ce qui motive la génération automatique de tests. Cependant, nous découvrons un compromis entre la génération d'entrées de tests unitaires révélant des erreurs lorsqu'un code est défectueux et la prédiction correcte de la sortie du test unitaire sans accès à la solution de référence. Pour résoudre ce compromis, nous proposons UTGen, qui apprend aux LLM à générer des entrées de tests unitaires révélant des erreurs ainsi que leurs sorties attendues correctes en se basant sur les descriptions de tâches et le code candidat. Nous intégrons UTGen dans UTDebug, un pipeline de débogage robuste qui utilise des tests générés pour aider les LLM à déboguer efficacement. Étant donné que les tests générés par le modèle peuvent fournir des signaux bruités (par exemple, des sorties prédites de manière incorrecte), UTDebug (i) met à l'échelle UTGen via le calcul au moment du test pour améliorer la prédiction de la sortie de UT, et (ii) valide et annule les modifications en se basant sur plusieurs UT générés pour éviter le surajustement. Nous montrons que UTGen surpasse les références de génération de tests UT de 7,59 % en se basant sur une métrique mesurant la présence à la fois des entrées de UT révélant des erreurs et des sorties UT correctes. Lorsqu'il est utilisé avec UTDebug, nous constatons que les retours des tests unitaires de UTGen améliorent la précision pass@1 de Qwen-2.5 7B sur HumanEvalFix et notre propre partition de débogage plus difficile de MBPP+ de plus de 3 % et 12,35 % (respectivement) par rapport aux autres références de génération de tests UT basées sur 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