Large Language Models are Few-shot Testers: Exploring LLM-based General Bug Reproduction
Authors:
Top Cited Papers
- 1 May 2023
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 2312-2323
Abstract
Many automated test generation techniques have been developed to aid developers with writing tests. To facilitate full automation, most existing techniques aim to either increase coverage, or generate exploratory inputs. However, existing test generation techniques largely fall short of achieving more semantic objectives, such as generating tests to reproduce a given bug report. Reproducing bugs is nonetheless important, as our empirical study shows that the number of tests added in open source repositories due to issues was about 28% of the corresponding project test suite size. Meanwhile, due to the difficulties of transforming the expected program semantics in bug reports into test oracles, existing failure reproduction techniques tend to deal exclusively with program crashes, a small subset of all bug reports. To automate test generation from general bug reports, we propose Libro, a framework that uses Large Language Models (LLMs), which have been shown to be capable of performing code-related tasks. Since LLMs themselves cannot execute the target buggy code, we focus on post-processing steps that help us discern when LLMs are effective, and rank the produced tests according to their validity. Our evaluation of Libro shows that, on the widely studied Defects4J benchmark, Libro can generate failure reproducing test cases for 33% of all studied cases (251 out of 750), while suggesting a bug reproducing test in first place for 149 bugs. To mitigate data contamination (i.e., the possibility of the LLM simply remembering the test code either partially or in whole), we also evaluate Libro against 31 bug reports submitted after the collection of the LLM training data terminated: Libro produces bug reproducing tests for 32% of the studied bug reports. Overall, our results show Libro has the potential to significantly enhance developer efficiency by automatically generating tests from bug reports.Keywords
All Related Versions
Funding Information
- National Research Foundation of Korea (NRF) (NRF-2020R1A2C1013629,NRF-2018R1A5A1059921)
- Institute for Information & communications Technology Promotion
This publication has 27 references indexed in Scilit:
- A benchmark-based evaluation of search-based crash reproductionEmpirical Software Engineering, 2019
- Automatically Generating Precise Oracles from Structured Natural Language Specifications2019
- ReCDroid: Automatically Reproducing Android Application Crashes from Bug Reports2019
- Practitioners' Views on Good Software Testing Practices2019
- Single-objective Versus Multi-objectivized Optimization for Evolutionary Crash Reproduction2018
- Precise Condition Synthesis for Program Repair2017
- Automatic repair of real bugs in java: a large-scale experiment on the defects4j datasetEmpirical Software Engineering, 2016
- JCHARMING: A bug reproduction approach using crash traces and directed model checking2015
- A Survey on Unit Testing Practices and Problems2014
- Automatic Generation of Floating-Point Test DataIEEE Transactions on Software Engineering, 1976