Automated Test Case Repair Using Language Models
Ahmadreza Saboor Yaraghi, Darren Holden, Nafiseh Kahani, Lionel Briand
TL;DR
TaRGET reframes test case repair as a code translation task, leveraging pre-trained code language models (CLMs) and a carefully engineered repair context to automatically repair broken tests. It introduces TaRBench, a large-scale benchmark of 45,373 broken-test repairs across 59 open-source Java projects, and demonstrates that fine-tuning CLMs with repair-context data achieves EM $66.1\%$ and PR $80\%$, outperforming baselines by substantial margins. The approach hinges on identifying repair context (method/class hunks, call graphs) and prioritizing relevant information, then generating repairs via encoder-decoder or decoder-only models using four IO formats. The study also provides a trustworthiness predictor, analyzes repair characteristics, explores data-size effects, and shows that TaRGET generalizes across unseen projects, offering a practical, scalable solution for test maintenance in real-world software development.
Abstract
Ensuring the quality of software systems through testing is essential, yet maintaining test cases poses significant challenges and costs. The need for frequent updates to align with the evolving system under test often entails high complexity and cost for maintaining these test cases. Further, unrepaired broken test cases can degrade test suite quality and disrupt the software development process, wasting developers' time. To address this challenge, we present TaRGET (Test Repair GEneraTor), a novel approach leveraging pre-trained code language models for automated test case repair. TaRGET treats test repair as a language translation task, employing a two-step process to fine-tune a language model based on essential context data characterizing the test breakage. To evaluate our approach, we introduce TaRBench, a comprehensive benchmark we developed covering 45,373 broken test repairs across 59 open-source projects. Our results demonstrate TaRGET's effectiveness, achieving a 66.1% exact match accuracy. Furthermore, our study examines the effectiveness of TaRGET across different test repair scenarios. We provide a practical guide to predict situations where the generated test repairs might be less reliable. We also explore whether project-specific data is always necessary for fine-tuning and if our approach can be effective on new projects.
