C++Test是由Parasoft公司出品的C/C++单元级测试工具,该工具实现了两部分功能,其一是代码的静态走查,类似于PCLint的功能;其二是测试C/C++类、函数等部件,即所谓单元测试功能,可根据规则自动或手动的编写测试用例、测试驱动程序或桩调用代码。
C++ Test分为三个版本:Professional、Architect和Server版,价格也是依次渐高,Server版最大的特点就是能够支持命令行的方式,这也为后台或是自动调用方式提供了便利,可以利用夜间对自己的代码进行冒烟测试。
两三年前曾试用了Parasoft的C++ Test,那时的版本是6.5,在Solaris平台上还帮Parasoft公司发现了一个使用上的Bug。因为项目上的原因,况且又是商用软件,适逢公司缩减成本,我和开发团队的代表之后就再没进行深入研究。当年和我联络的还都是台湾工程师,事隔几年,如今Parasoft已经在中国上海设立了中国分公司,当年的台湾人也成了大陆分公司的领导,这次又被他们的工程师“盛情”(实在是缠得不得了)邀请,在线观看新版C++ Test的新Feature,新版的C++ Test版本是7.2,似乎增强了很多。全篇演示下来,印象最为深刻的几个功能就如下:
1. 引入了MISRA标准作为代码静态检查规范之一,之前这个功能是没有的。记不得是哪个单元测试工具了,当年还以这个为卖点,不过此功能要附加额外的费用。要知道MISRA这个规范本身是要收费的,而且费用不低,C++ Test把这个标准引入进来,并不额外收费,确实还是值得一看。
2.静态检测内存泄漏
3.自动生成测试用例的方式比原来便利很多,可以自定义规则,并实现Case的数据驱动。
4.手动生成测试用例部分也得到很多改善,不用象以前一样写出大段的重复代码
对于静态检查内存泄漏的确是个亮点,在对进行代码词法、语法解析之上,构造了更高层次的逻辑判断功能,虽然不可能穷尽找出所有产生内存泄漏的可能,但对于静态检测技术来说已经是一个重要的进步。