4:MILY: 宋体">该窗口中显示的数据与你在窗口3中的选择相对应,显示了各个函数的测试覆盖情况。用鼠标双击某一个函数,会显示该函数的源代码,TrueCoverage用不同的颜色标识执行过的和未被执行过的代码,如下图所示:
图4-4 TrueCoverage用不同颜色标识执行过的和未被执行过的代码
TrueCoverage 默认情况下,用绿色代表已执行的代码,用红色代表未被执行的代码,用黑色代表不可执行的代码(你可以通过选择TrueCoverage的 [program/setting]菜单命令,在启动的对话框中的setting标签页中进行设置,来改变这种默认情况)。通过这些信息,我们可以有针对性的增加、修改用例,来提高测试覆盖率。
4.2 对内联函数的处理
内联函数虽然具有函数的形式,但其机制与函数完全不同,所以,在用TrueCoverage统计测试覆盖率时,对内联函数需要采用不同的处理方式。
默认情况下,TrueCoverage是不会统计内联函数的执行覆盖率的。如果你需要得到内联函数的覆盖率数据,则需要进行一些额外的设置,具体方法是,在VC++的集成环境中选择[TrueCoverage/TrueCoverage Setting...]菜单命令,弹出如下对话框:
图4-5 内联函数设置
选中“Instrument inline function”复选框,点击OK。
然后选择[TrueCoverage/Rebuild All with TrueCoverage] 菜单命令,重新进行编译连接,对于这个可执行程序,TrueCoverage在其执行过程中就能够记录内联函数的覆盖率数据了。
4.3 TrueCoverage与BoundsChecker的结合使用
TrueCoverage与BoundsChecker可以结合起来使用。在[BoundsChecker]和[TrueCoverage]菜单下,都有一个[Rebuild with BoundsChecker and TrueCoverage]项,通过这一菜单命令编译连接生成的可执行文件,在程序运行结束后,能同时得到TrueCoverage和BoundsChecker(FinalCheck)的检测结果。
但这里有一个限定,那就是:必须由BoundChecker打开该exe程序执行,或是在VC++集成开发环境中通过Debug来运行该exe。这样在执行完程序后,能同时得到TrueCoverage和BoundsChecker(FinalCheck)的检测结果,如果你通过TrueCoverage来执行程序,则只会得到TrueCoverage检测结果。这一点请注意。
4.4 其他
与BoundsChecker一样,要使用TrueCoverage,一定要有被测程序的源代码。如果没有源码,TrueCoverage无法统计覆盖率。
除了可以在VC++的集成环境中使用TrueCoverage外,从 [开始菜单] 中启动TrueCoverage,然后打开经TrueCoverage编译连接生成的可执行文件,也可以进行覆盖率的统计,操作方法与集成到VC++集成开发环境中的TrueCoverage的操作方法一样,在此不再赘述。
TrueCoverages的使用介绍到此结束了,该工具对于我们进行测试覆盖率统计、补充测试用例的工作很有用处。