当前位置: X-MOL 学术arXiv.cs.SE › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Unit Test Case Generation with Transformers
arXiv - CS - Software Engineering Pub Date : 2020-09-11 , DOI: arxiv-2009.05617
Michele Tufano, Dawn Drain, Alexey Svyatkovskiy, Shao Kun Deng, Neel Sundaresan

Automated Unit Test Case generation has been the focus of extensive literature within the research community. Existing approaches are usually guided by the test coverage criteria, generating synthetic test cases that are often difficult to read or understand for developers. In this paper we propose AthenaTest, an approach that aims at generating unit test cases by learning from real-world, developer-written test cases. Our approach relies on a state-of-the-art sequence-to-sequence transformer model which is able to write useful test cases for a given method under test (i.e., focal method). We also introduce methods2test - the largest publicly available supervised parallel corpus of unit test case methods and corresponding focal methods in Java, which comprises 630k test cases mined from 70k open-source repositories hosted on GitHub. We use this dataset to train a transformer model to translate focal methods into the corresponding test cases. We evaluate the ability of our model in generating test cases using natural language processing as well as code-specific criteria. First, we assess the quality of the translation compared to the target test case, then we analyze properties of the test case such as syntactic correctness and number and variety of testing APIs (e.g., asserts). We execute the test cases, collect test coverage information, and compare them with test cases generated by EvoSuite and GPT-3. Finally, we survey professional developers on their preference in terms of readability, understandability, and testing effectiveness of the generated test cases.

中文翻译:

使用 Transformer 生成单元测试用例

自动化单元测试用例生成一直是研究界广泛文献的焦点。现有方法通常以测试覆盖标准为指导,生成开发人员通常难以阅读或理解的综合测试用例。在本文中,我们提出了 AthenaTest,这是一种旨在通过学习真实世界的开发人员编写的测试用例来生成单元测试用例的方法。我们的方法依赖于最先进的序列到序列转换器模型,该模型能够为给定的测试方法(即焦点方法)编写有用的测试用例。我们还介绍了 methods2test——最大的公开可用的单元测试用例方法和相应的 Java 焦点方法的监督并行语料库,其中包括从 GitHub 上托管的 70k 个开源存储库中挖掘的 630k 个测试用例。我们使用此数据集来训练 Transformer 模型,将焦点方法转换为相应的测试用例。我们评估我们的模型使用自然语言处理以及特定于代码的标准生成测试用例的能力。首先,我们评估与目标测试用例相比的翻译质量,然后我们分析测试用例的属性,例如句法正确性以及测试 API(例如,断言)的数量和种类。我们执行测试用例,收集测试覆盖率信息,并将它们与 EvoSuite 和 GPT-3 生成的测试用例进行比较。最后,我们调查了专业开发人员在生成的测试用例的可读性、可理解性和测试有效性方面的偏好。我们评估我们的模型使用自然语言处理以及特定于代码的标准生成测试用例的能力。首先,我们评估与目标测试用例相比的翻译质量,然后我们分析测试用例的属性,例如句法正确性以及测试 API(例如,断言)的数量和种类。我们执行测试用例,收集测试覆盖率信息,并将它们与 EvoSuite 和 GPT-3 生成的测试用例进行比较。最后,我们调查了专业开发人员在生成的测试用例的可读性、可理解性和测试有效性方面的偏好。我们评估我们的模型使用自然语言处理以及特定于代码的标准生成测试用例的能力。首先,我们评估与目标测试用例相比的翻译质量,然后我们分析测试用例的属性,例如句法正确性以及测试 API(例如,断言)的数量和种类。我们执行测试用例,收集测试覆盖率信息,并将它们与 EvoSuite 和 GPT-3 生成的测试用例进行比较。最后,我们调查了专业开发人员在生成的测试用例的可读性、可理解性和测试有效性方面的偏好。然后我们分析测试用例的属性,例如句法正确性以及测试 API(例如,断言)的数量和种类。我们执行测试用例,收集测试覆盖率信息,并将它们与 EvoSuite 和 GPT-3 生成的测试用例进行比较。最后,我们调查了专业开发人员在生成的测试用例的可读性、可理解性和测试有效性方面的偏好。然后我们分析测试用例的属性,例如句法正确性以及测试 API(例如,断言)的数量和种类。我们执行测试用例,收集测试覆盖率信息,并将它们与 EvoSuite 和 GPT-3 生成的测试用例进行比较。最后,我们调查了专业开发人员在生成的测试用例的可读性、可理解性和测试有效性方面的偏好。
更新日期:2020-09-15
down
wechat
bug