我想测试一个 ANSI C 解释器。 我的工具解释我的 C 程序。它不产生机器代码;并且执行后我无法访问堆/堆栈! 我正在考虑针对 GCC 或类似的东西验证返回值/输出。
我一直在寻找适合我的东西,但我几乎找不到任何免费或开源的东西。
有人对如何测试我的解释器有想法/建议吗? 任何人都可以推荐类似测试套件的东西吗?或者测试用例包?
最佳答案
我还写了一个C解释器,主要依赖于gcc.c - 折磨/执行测试用例。该测试套件包含 "code fragments which have historically broken easily" 。该测试用例的优点是,必须执行它们才能提供结果(而不是例如仅编译),然后将结果与预期结果相匹配。您不需要将它与由 GCC 编译的执行程序的结果进行比较。您基本上只需要在目录中包含文件并执行它们,这与其他一些测试套件形成鲜明对比,在这些测试套件中您必须从配置文件或类似文件中解析预期结果。您可以从GCC repository下载测试。 .
对您来说,一个缺点可能是,测试用例通常很广泛,并且还可能包含 GNU 扩展,例如用于执行汇编代码的 asm 语句或有关如何对齐内存内容的属性。它们还包括一些旧 K&C 函数样式表示法的测试用例,如下例所示(并非取自套件):
int func(a)
int a;
{
return a + 1;
}
但是,我仍然建议您仔细查看测试用例并查看可以执行什么,因为它们还测试了 ASNI C 的许多“正常”极端情况。
关于c - C 解释器的测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500928/