中文

利用缺陷报告配置测试生成器:以GCC编译器与Csmith为例

软件工程 2022-06-17 v2 机器学习 编程语言

摘要

编译器的正确性对于其他软件系统的安全性与可靠性至关重要,因为编译器中的缺陷可能产生不符合程序员意图的可执行文件。此类错误难以识别和调试。随机测试程序生成器常用于编译器测试,并且在发现缺陷方面行之有效。然而,如何引导这些测试生成器产生更有可能发现缺陷的测试程序仍具挑战性。本文中,我们利用缺陷报告中的代码片段来引导测试生成。本工作的核心思想是从缺陷报告中提取关于更易被不当实现的语言特性的洞见,并利用这些洞见引导测试生成器。我们使用GCC C编译器来评估该方法的有效性。具体而言,我们首先基于特性对GCC缺陷报告中的测试程序进行聚类,随后利用聚类的质心计算流行的C编译器测试生成器Csmith的配置。我们在八个GCC版本上评估了该方法,发现相较于针对GCC的现有最优测试生成技术,我们的方法提供了更高的覆盖率并触发了更多的错误编译故障。

关键词

引用

@article{arxiv.2012.10662,
  title  = {Configuring Test Generators using Bug Reports: A Case Study of GCC Compiler and Csmith},
  author = {Md Rafiqul Islam Rabin and Mohammad Amin Alipour},
  journal= {arXiv preprint arXiv:2012.10662},
  year   = {2022}
}

备注

The 36th ACM/SIGAPP Symposium on Applied Computing, Software Verification and Testing Track (SAC-SVT'21)