Do LLMs generate test oracles that capture the actual or the expected program behaviour?

Michael Konstantinou,Renzo Degiovanni,Mike Papadakis
2024-10-28
Abstract:Software testing is an essential part of the software development cycle to improve the code quality. Typically, a unit test consists of a test prefix and a test oracle which captures the developer's intended behaviour. A known limitation of traditional test generation techniques (e.g. Randoop and Evosuite) is that they produce test oracles that capture the actual program behaviour rather than the expected one. Recent approaches leverage Large Language Models (LLMs), trained on an enormous amount of data, to generate developer-like code and test cases. We investigate whether the LLM-generated test oracles capture the actual or expected software behaviour. We thus, conduct a controlled experiment to answer this question, by studying LLMs performance on two tasks, namely, test oracle classification and generation. The study includes developer-written and automatically generated test cases and oracles for 24 open-source Java repositories, and different well tested prompts. Our findings show that LLM-based test generation approaches are also prone on generating oracles that capture the actual program behaviour rather than the expected one. Moreover, LLMs are better at generating test oracles rather than classifying the correct ones, and can generate better test oracles when the code contains meaningful test or variable names. Finally, LLM-generated test oracles have higher fault detection potential than the Evosuite ones.
Software Engineering
What problem does this paper attempt to address?
The problem that this paper attempts to solve is: Can the test oracles generated by large - language models (LLMs) capture the actual behavior or the expected behavior of a program? Specifically, the paper experimentally studies the performance of LLMs in generating test oracles and explores whether they can effectively identify the expected program behavior rather than merely reflecting the actually implemented behavior. This involves evaluating the performance of LLMs in test oracle classification tasks and generation tasks, as well as the potential of these oracles in detecting software faults. In addition, the study also examines the influence of different factors (such as the descriptiveness of test names and variable names, the quality of comments, etc.) on the ability of LLMs to generate test oracles. Through this research, the author hopes to reveal the practical application value and limitations of LLMs in the field of test oracle generation.