Mokav: Execution-driven Differential Testing with LLMs

2024年06月14日
  • 简介
    本文旨在检测各种软件工程任务中的功能差异,例如自动程序修复、变异测试和代码重构。检测两个程序之间的功能差异问题可以转化为搜索暴露差异的测试(DET):一种测试输入,可以在被测程序上产生不同的输出。在本文中,我们提出了一种新颖的基于执行的工具Mokav,利用LLMs生成DET。Mokav接收两个程序版本(P和Q)和一个示例测试输入。成功时,Mokav会生成一个有效的DET,即一种测试输入,可以在P和Q上产生不同的输出。Mokav通过专门的提示迭代地提示LLM生成新的测试输入。在每次迭代中,Mokav提供基于执行的反馈,直到LLM生成DET。我们在Codeforces竞赛平台收集的1,535对Python程序和QuixBugs数据集中的32对程序上评估了Mokav。我们的实验结果表明,Mokav的性能大大优于现有技术Pynguin和Differential Prompting。Mokav可以为我们基准测试中81.7%(1,255/1,535)的程序对生成DET(Pynguin为4.9%,Differential Prompting为37.3%)。我们证明了系统中的所有组件,包括迭代和基于执行的方法,都对其高效性做出了贡献。
  • 图表
  • 解决问题
    检测两个软件工程任务之间的功能差异,提出一种新的基于LLMs的DET生成工具Mokav
  • 关键思路
    使用基于LLMs的DET生成工具Mokav来生成暴露两个程序之间差异的测试用例
  • 其它亮点
    Mokav是一种基于LLMs的DET生成工具,通过迭代地提示LLMs来生成测试用例,并提供基于执行的反馈,可以在1,535对Python程序中为81.7%的程序对生成DET,远远优于现有的Pynguin和Differential Prompting等工具
  • 相关研究
    与本论文相关的研究包括Pynguin和Differential Prompting等工具,以及其他基于LLMs的测试用例生成工具
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论