- 简介本研究旨在实验性地调查大型语言模型(LLMs)在生成Python程序单元测试脚本方面的效果,具体以ChatGPT为例,并比较生成的测试用例与现有单元测试生成器(Pynguin)生成的测试用例。在实验中,我们考虑了三种类型的代码单元:1)过程式脚本,2)基于函数的模块化代码和3)基于类的代码。生成的测试用例根据覆盖率、正确性和可读性等标准进行评估。我们的结果表明,ChatGPT在覆盖率方面的表现与Pynguin相当。同时,ChatGPT生成测试的能力优于Pynguin,因为后者无法为第一类生成测试用例。我们还发现,ChatGPT为第二类和第三类生成的约39%和28%的断言是不正确的。我们的结果还表明,在ChatGPT和Pynguin中,错过的语句几乎没有重叠,因此建议将两个工具结合使用以提高单元测试生成性能。最后,通过提示工程,ChatGPT的性能得到了改善,在大约4次迭代后,第二类和第三类的平均覆盖率分别提高了28%和15%。
- 图表
- 解决问题探究使用Large Language Models(LLMs)生成Python程序单元测试脚本的有效性,与现有单元测试生成器(Pynguin)进行比较。
- 关键思路使用ChatGPT作为LLMs,通过实验比较ChatGPT和Pynguin在代码覆盖率、正确性和可读性等方面的性能。结果表明,ChatGPT的性能在代码覆盖率方面与Pynguin相当,但在生成测试用例方面更优秀。同时,使用Prompt Engineering可以提高ChatGPT的性能。
- 其它亮点实验涉及三种代码单元类型,即过程脚本、基于函数的模块化代码和基于类的代码。结果表明,ChatGPT在覆盖率方面表现与Pynguin相当,但在生成测试用例方面更优秀。此外,使用Prompt Engineering可以提高ChatGPT的性能。研究还发现,ChatGPT和Pynguin错过的语句有很少重叠,因此结合两种工具可能会提高单元测试生成性能。
- 当前领域中的相关研究包括:1)使用LLMs生成测试用例的研究;2)使用机器学习技术生成测试用例的研究;3)使用符号执行生成测试用例的研究。其中一些相关论文包括:1)Automated Test Generation for Machine Learning Systems Using Model-Based Reinforcement Learning;2)DeepRoad:GAN-based Metamorphic Autonomous Driving Testing;3)Symbolic Execution for Software Testing: Three Decades Later。
沙发等你来抢
去评论
评论
沙发等你来抢