论文标题
高估:生成综合错误程序以挑战发现错误的工具
HyperPUT: Generating Synthetic Faulty Programs to Challenge Bug-Finding Tools
论文作者
论文摘要
随着自动检测错误的研究不断增长并产生新技术,拥有合适的程序集已知的虫子集合对于可靠,有意义地比较这些技术的有效性至关重要。大多数现有方法都依赖于收集手动策划的现实错误或播种为现实世界程序的合成错误的基准测试。使用现实世界中的程序需要扩展现有基准或创建新基准的程序仍然是一项复杂的耗时任务。 在本文中,我们提出了一种互补的方法,该方法会自动生成带有种子错误的程序。我们的技术(称为Hyperput)通过逐步应用程序转换(引入条件,循环等编程构造,等)来构建C程序,直到生成所需大小的程序为止。在我们的实验评估中,我们演示了如何生成错误的程序程序,这些程序可以以不同的方式挑战现代错误调查工具的功能,而其中一些特征与现有基准测试中的错误相媲美。这些结果表明,高估可能是支持进一步研究错误调查技术的有用工具,尤其是它们的经验评估。
As research in automatically detecting bugs grows and produces new techniques, having suitable collections of programs with known bugs becomes crucial to reliably and meaningfully compare the effectiveness of these techniques. Most of the existing approaches rely on benchmarks collecting manually curated real-world bugs, or synthetic bugs seeded into real-world programs. Using real-world programs entails that extending the existing benchmarks or creating new ones remains a complex time-consuming task. In this paper, we propose a complementary approach that automatically generates programs with seeded bugs. Our technique, called HyperPUT, builds C programs from a "seed" bug by incrementally applying program transformations (introducing programming constructs such as conditionals, loops, etc.) until a program of the desired size is generated. In our experimental evaluation, we demonstrate how HyperPUT can generate buggy programs that can challenge in different ways the capabilities of modern bug-finding tools, and some of whose characteristics are comparable to those of bugs in existing benchmarks. These results suggest that HyperPUT can be a useful tool to support further research in bug-finding techniques -- in particular their empirical evaluation.