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