需要API健全自动测试帮助

时间:2010-04-01 22:50:37

标签: c unit-testing api automated-tests

我正在尝试使用API sanity autotest为我的C代码自动生成单元测试。

但是,问题在于它使用起来有点复杂,一些教程/ howto /其他资源如何使用它会非常有用。

您对API健全自动测试有什么好运吗? 你认为有一个更好的工具可以用来自动生成C代码的单元测试吗?

2 个答案:

答案 0 :(得分:1)

如果您的库包含超过一百个函数,它是一个更好的工具(在Unix的免费解决方案中)完全自动生成冒烟测试。独特的功能是能够为每个函数自动生成合理的输入参数。

此框架最常用的用例是快速搜索库中的内存问题(segfaults)。从历史上看,这个框架用于为Qt3和Qt4等太大的库创建LSB认证测试套件,这些库无法在合理的时间内手动创建。

使用以下命令生成,构建和执行测试:

api-sanity-checker -l name -d descriptor.xml -gen -build -run

XML描述符是一个简单的XML文件,它指定版本号,标题和共享对象的路径:

<version>
    0.3.4
</version>

<headers>
    /usr/local/libssh/0.3.4/include/
</headers>

<libs>
    /usr/local/libssh/0.3.4/lib/
</libs>

您可以使用specialized types为输入参数改进生成的测试。

请参阅example为freetype2 2.4.8生成的测试。

答案 1 :(得分:0)

这首先是灾难的秘诀。如果你自动生成单元测试,你将得到一堆并不意味着很多的测试。如果您有一个未在自动化测试中涵盖的库,那么根据定义,该库是遗留代码。考虑遵循遗留代码的传统智慧......

每次更改:

  1. 带测试的引脚行为
  2. 重构开放封闭原则(更难用C但不是不可能)
  3. 使用测试推动新代码的更改
  4. 另请考虑选取 Working Effectively with Legacy Code 的副本。

    修改

    作为我们讨论的结果,很明显您只想强制执行一些基本标准,例如如何处理空指针值,以及生成的测试。我认为你不需要生成测试。相反,您需要一个工具来检查库并动态地运行其功能,确保它符合您定义的某些编码标准。我建议您自己编写此工具,以便它可以利用您对要强制执行的规则以及正在测试的库的了解。