Multi-language Unit Test Generation using LLMs
<|reference_start|>Multi-language Unit Test Generation using LLMs: Implementing automated unit tests is an important but time consuming activity in software development. Developers dedicate substantial time to writing tests for validating an application and preventing regressions. To support developers in this task, software engineering research over the past few decades has developed many techniques for automating unit test generation. However, despite this effort, usable tools exist for very few programming languages -- mainly Java, C, and C# and, more recently, for Python. Moreover, studies have found that automatically generated tests suffer poor readability and often do not resemble developer-written tests. In this work, we present a rigorous investigation of how large language models (LLMs) can help bridge the gap. We describe a generic pipeline that incorporates static analysis to guide LLMs in generating compilable and high-coverage test cases. We illustrate how the pipeline can be applied to different programming languages, specifically Java and Python, and to complex software requiring environment mocking. We conducted a through empirical study to assess the quality of the generated tests in terms of coverage, mutation score, and test naturalness -- evaluating them on standard as well as enterprise Java applications and a large Python benchmark. Our results demonstrate that LLM-based test generation, when guided by static analysis, can be competitive with, and even outperform, state-of-the-art test-generation techniques in coverage achieved while also producing considerably more natural test cases that developers find easy to read and understand. We also present the results of a user study, conducted with 161 professional developers, that highlights the naturalness characteristics of the tests generated by our approach.<|reference_end|>
@article{pan2024multi-language,
    title={Multi-language Unit Test Generation using LLMs},
    author={Rangeet Pan, Myeongsoo Kim, Rahul Krishna, Raju Pavuluri, Saurabh
  Sinha},
    journal={arXiv preprint arXiv:2409.03093},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.03093},
    primaryClass={cs.SE}
}