Open veronipp opened 1 year ago
使用转换器和焦点上下文生成单元测试用例 Unit Test Case Generation with Transformers and Focal Context
https://arxiv.org/abs/2009.05617
2020
Computing Research Repository
No response
自动化软件测试,深度学习
软件测试是软件开发生命周期里的一个关键部分,它有助于识别潜在的倒退和降低维护成本,但它经常被开发人员忽略。单元测试的用例的自动生成工具通过建议测试来识别代码中的缺陷,从而促进测试驱动开发并支持开发人员。现有的方法通常以测试覆盖标准被指导,生成开发人员通常难以阅读或者理解的合成测试用例。在本文中,我们提出了ATHENATEST,这是一种诣在通过学习真实世界的焦点方法和开发人员编写的测试用例来生成单元测试用例的方法。我们将单元测试用例生成制定为一个序列到序列的学习任务,采用两步训练过程,包括在大型无监督java语料库上进行去噪预训练,并对生成单元测试的下游翻译任务进行监督微调。我们研究了自然语言与源代码预训练的影响,以及围绕焦点方法的焦点上下文信息,我们发现这两种技术在验证损失方面都有改进,预训练产生了25%的相对改进,焦点上下文提供了11.1%额外改进。我们还介绍了METHODS2TEST,这是java中最大的公开可用的单元测试用例方法和相应的焦点方法的监督并行语料库,它包含托管在github上的91k个开源仓库中挖掘的780k个测试用例。我们在五个defec4j项目评估了ATHENATEST 性能,产生了~25k个通过的测试用例,仅30次尝试就覆盖了43.7%的焦点方法。我们执行测试用例,发现我们的方法优于GPT3,并具有与EvoSuite类似的覆盖率。最后,我们调查了专业开发人员在生成的测试用例上的可读性、可理解性和测试有效性方面的偏好。结果表明,与EvoSuite相比,开发人员更倾向于ATHENATEST 生成的测试用例,这表明我们方法可以显著提高开发人员的生产力。
https://www.bilibili.com/video/BV1WG4y1971N/
Title
使用转换器和焦点上下文生成单元测试用例 Unit Test Case Generation with Transformers and Focal Context
Link
https://arxiv.org/abs/2009.05617
Year
2020
Conference or Journal
Computing Research Repository
Rank
No response
Keywords
自动化软件测试,深度学习
Abstract
软件测试是软件开发生命周期里的一个关键部分,它有助于识别潜在的倒退和降低维护成本,但它经常被开发人员忽略。单元测试的用例的自动生成工具通过建议测试来识别代码中的缺陷,从而促进测试驱动开发并支持开发人员。现有的方法通常以测试覆盖标准被指导,生成开发人员通常难以阅读或者理解的合成测试用例。在本文中,我们提出了ATHENATEST,这是一种诣在通过学习真实世界的焦点方法和开发人员编写的测试用例来生成单元测试用例的方法。我们将单元测试用例生成制定为一个序列到序列的学习任务,采用两步训练过程,包括在大型无监督java语料库上进行去噪预训练,并对生成单元测试的下游翻译任务进行监督微调。我们研究了自然语言与源代码预训练的影响,以及围绕焦点方法的焦点上下文信息,我们发现这两种技术在验证损失方面都有改进,预训练产生了25%的相对改进,焦点上下文提供了11.1%额外改进。我们还介绍了METHODS2TEST,这是java中最大的公开可用的单元测试用例方法和相应的焦点方法的监督并行语料库,它包含托管在github上的91k个开源仓库中挖掘的780k个测试用例。我们在五个defec4j项目评估了ATHENATEST 性能,产生了~25k个通过的测试用例,仅30次尝试就覆盖了43.7%的焦点方法。我们执行测试用例,发现我们的方法优于GPT3,并具有与EvoSuite类似的覆盖率。最后,我们调查了专业开发人员在生成的测试用例上的可读性、可理解性和测试有效性方面的偏好。结果表明,与EvoSuite相比,开发人员更倾向于ATHENATEST 生成的测试用例,这表明我们方法可以显著提高开发人员的生产力。