Exploring Fuzzing as Data Augmentation for Neural Test Generation

2024年06月12日
  • 简介
    测试是现代软件工程中构建可靠程序的重要组成部分。由于测试软件很重要但代价很高,因此自动测试用例生成方法在软件开发中变得流行。与传统的基于搜索的覆盖率引导测试生成(例如模糊测试)不同,由大型语言模型支持的神经测试生成可以编写有语义意义的测试,并且可以被其他维护者理解。然而,与常规代码语料库相比,数据集中的单元测试数量和多样性都有限。在本文中,我们提出了一种新颖的数据增强技术FuzzAug,它结合了模糊测试和大型语言模型的优点。FuzzAug不仅在增强数据中保持有效的程序语义,而且为被测试的函数提供了更多样化的输入,帮助模型将嵌入函数动态行为的正确输入与被测试函数相关联。我们通过将FuzzAug用于神经测试生成数据集来评估其效益,以训练最先进的代码生成模型。通过增强训练集,我们的模型生成的测试用例的准确性提高了11%。使用FuzzAug训练的模型生成的单元测试函数的分支覆盖率是没有使用FuzzAug训练的模型的两倍。FuzzAug可以在各种数据集中使用,以训练高级代码生成模型,增强它们在自动化软件测试中的实用性。我们的工作展示了使用动态分析结果增强神经测试生成的好处。代码和数据将公开发布。
  • 作者讲解
  • 图表
  • 解决问题
    提出一种新的数据增强技术FuzzAug,用于增加神经测试生成数据集的多样性和数量,以提高自动化软件测试的效率。
  • 关键思路
    FuzzAug将模糊测试和大型语言模型相结合,生成具有语义意义的测试数据,并使用动态分析结果来增强神经测试生成模型的效果。
  • 其它亮点
    论文使用FuzzAug增强了神经测试生成数据集,使模型生成的测试用例的准确性提高了11%,覆盖分支比没有使用FuzzAug的模型高出一倍。FuzzAug可以用于各种数据集,以提高高级代码生成模型的实用性。论文提供了开源代码和数据。
  • 相关研究
    最近的相关研究包括:1.基于深度学习的测试用例生成方法;2.使用模糊测试生成测试用例的方法;3.使用动态分析来增强代码生成模型的方法。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问