使用输出比较对 C99 编译器的实用测试
软件工程
2022-02-16 v1
摘要
本文提出一种测试 C99 编译器的简单技术,通过将它的输出与已有工具的输出进行比较。该方法的优势在于可以从现有来源批量添加新测试用例,减少对正确性问题的深入调查以及手工创建新测试代码的需要。该技术曾用于测试 PalmSource Palm OS Cobalt ARM C/C++ 交叉编译器(用于 Palm-Powered 个人数字助理),主要针对标准符合性及生成代码的正确执行。此处描述的技术发现了数百个缺陷,大多存在于我们的内部代码中,但也存在于 Edison Design Group 和 Apogee Software 长期高质量的前端和后端代码中。它还在 GNU C 编译器中发现了十八个缺陷,以及 Apple 版 GCC 的一个专属缺陷、Suse 版 GCC 的一个专属缺陷,和 ARM 处理器版 GCC 中的十几个缺陷,其中数个为关键缺陷。
引用
@article{arxiv.2202.07390,
title = {Practical Testing of a C99 Compiler Using Output Comparison},
author = {Flash Sheridan},
journal= {arXiv preprint arXiv:2202.07390},
year = {2022}
}
备注
Preprint with bibliography in alphabetical order