这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

盘点c++test v7.1(二)

上一篇 / 下一篇  2008-06-02 15:07:13 / 个人分类:C++test

前面我盘点了c++test v7.1静态分析部分的“亮点”,下面我将就c++test的动态部分进行一下“亮点”的盘点。

大家都已经知道单元测试的重要性,但通常情况下,真正开展单元测试工作的又很少,为什么呢?我认为原因有三:

1 需要编写桩(stub)

2 需要编写驱动(driver)

3 需要编写测试用例(test case)

在实施单元测试中,以上三点的表现形式都是代码(code)。真正做过单元测试的人可能都有体会,假设被测单元代码行数为100,程序员为了做单元测试需要编写的测试代码行可能是 >200行。这一点对于很多程序员来说无法理解,最终导致单元测试很难开展。

c++test号称“提供全球最先进的自动化单元测试”,下面我来说说c++test在单元测试方面有什么独到之处(即“亮点”)。

1 自动生成桩函数(stub)

据某网友说,自动生成c/c++类的测试驱动程序和桩函数的能力是c++test独有的。呵呵,我不知道是不是真的。

如果被测文件中没有某外部函数的函数体,或者是被测文件中已经包含了某函数体,但用户在测试另外一个函数时基于最小单元的原则,不想使用实际的函数体时,c++test可以根据函数原型,能够自动生成桩函数,或者允许加入自己编写的桩函数。

2 自动生成白盒测试的测试用例套件(Test Suite)

c++test可以自动生成白盒测试用例套件。针对被测单元,c++test自动设计了一组广谱的白盒测试用例,其中包含了测试输入的一些边界值,例如最大值、最小值、0等。具体到生成测试用例的数量,c++test还提供了设置选项,用于控制针对每个函数/类,自动生成测试用例的数量。

c++test自动运行这些测试用例并找到错误,从而最大限度的提高程序的健壮性和可靠性。

3 自动执行黑盒测试

c++test支持用户自己添加黑盒测试用例,或者导入通过其他工具建立的自定义测试用例(如cppunit)。当然前面提到的自动生成的白盒测试用例也可以用于黑盒。

c++test自动执行这些测试用例,并发现预期输出和实际输出不一致的用例报告错误,从而高效的对被测单元的功能完成验证。

4 自动的回归测试

黑盒测试完成后,这些黑盒测试用例将和被测单元一起保存,成为被测单元的一部分。如果被测单元版本有了更新后,c++test可以使用这些积累下来的测试用例,完全自动化的完成回归测试,验证版本更新对代码功能是否有影响。

5 六种覆盖率指标

在执行黑盒测试和白盒测试时,c++test还可以自动收集代码执行的覆盖率。相比于其他工具,c++test提供的覆盖率指标非常全面,有六种指标:语句覆盖(Line)、块覆盖(Block)、路径覆盖(Path)、分支覆盖(Dicision)、条件覆盖(Simple Condition)、MC/DC覆盖,其中MC/DC覆盖符合DO-178B的要求。

6 HTML报告

测试完成后,c++test还会生成详细的HTML报告。

c++test动态部分的盘点到此为止。

相比于静态分析,动态部分的单元测试涉及到的细节更多,难度也较大,通过文字描述的难度也在加大。

c++test在单元测试方面的确有自己的专长,用的越多,越会发现c++test越有“内涵”。


TAG:

引用 删除 xigualy   /   2011-05-16 14:06:26
请帮忙看看我的6.7版本的问题谢谢啦http://zhidao.baidu.com/question/266802021.html
引用 删除 xigualy   /   2011-05-16 14:06:26
请帮忙看看我的6.7版本的问题谢谢啦http://zhidao.baidu.com/question/266802021.html
 

评分:0

我来说两句

Open Toolbar