代码覆盖率分析实际上是一种度量方式,间接度量质量的方法的过程,是在保证测试质量的时候潜在保证实际产品的质量,在程序中寻找没有被测试用例测试过的地方的流程,创建新的测试用例来增加覆盖率的流程。测试过程中代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,那么应该怎么给出我们的代码覆盖度,是80%、90%还是100%呢,下面就介绍3款监控代码覆盖度的工具。
1. NCover介绍
1.1 工具使用范围
1)Ncover支持所有运行在.NET Framework公共语言运行时框架(.NET Framework CLR)上并符合CLI规范的编程语言NCover
2)可以覆盖针对.NET 框架精简版编写的应用程序,只要其作为独立的应用程序,并且不是在模拟器或移动设备上运行,例如发布在IIS上的程序,可以通过建立IIS服务进行分析,可以监控工具类的exe程序。
3)无法支持其他语言编写的程序。
1.2使用注意事项
1)在监控发布在IIS中的应用程序,即监控IIS服务时需要注意停止监控,程序会将IIS服务停止,为了减少IIS频繁启动对于他人的影响,建议在无人使用的时间段或者独立的服务器上进行。
2)对监控结果分析时,只需要保证你发布产物用于编译的代码在NCover服务器上存在即可,例如个性化彩铃铃音设置工具DiyRingSetTool是从路径” E:\Project\CTI_DiyRing2.0\11.Tags\Build1389\工具\Diy铃音设置工具”下获取代码编译的,那么NCover所在服务器的相同路径下存在代码,监控完成后工具会自动加载出代码进行分析。
1.3 Ncover工具的使用
安装完成后,运行NCoverExplorer,另外也支持命令行方式运行。
第一步:选择需要监控的程序
第二步:对监控结果进行分析
1.4 对于Ncover Explorer的补充
Coverage File-对覆盖文件进行打开、保存等操作;Merge Data-将你选择的多个覆盖文件合并到当前覆盖文件;Load Trends-选择要加载的趋势文件;Project Actions-设置工程属性、新建、保存工程等操作;Run Coverage-根据当前项目配置开始运行Ncover;stop Coverage-运行 NCover 时,单击此按钮将强制 NCover 停止运行,并收集覆盖率数据;
Thrends&Statistics-打开、关闭趋势和统计面板;
(1)显示所有当前选定的树视图节点覆盖范围百分比。符号覆盖、分支覆盖、方法覆盖;模块总数、命名空间总数、类总数、方法总数、文档总数。
(2)显示符号覆盖趋势图 。
(3)没有加载趋势图,可以选择要加载的趋势文件然后打开。
Program Output-打开、关闭输出信息面板;
Generate Reports--打开生成报告窗口,设置生成的报告类型;
(1)选择要创建报告的类型。
(2)选择所创建的报表的文件格式。(一些报告是只可用以 Html 格式)。
(3)选择创建报告的路径。
(4)选中时,NCover 资源管理器将尝试创建了后打开该报表。
(5)创建报告的状态消息将显示在此处。
(6)单击此按钮将创建报表。
Script Helper--打开脚本帮助窗口;
(1)左窗格中列出 NCover 资源管理器可以创建从当前项目配置的所有脚本格式。
(2)生成的脚本将出现在这里。您可以通过右键单击并从上下文菜单中选择"复制"来复制文本。
Application Options-打开应用程序选项窗口
2. Rational PureCoverage介绍
2.1 工具概述
Rational PureCoverage 是Rational PurifyPlus 工具中的一种,Rational PurifyPlus 包括三种独立的工具:代码覆盖度测试工具Rational PureCoverage、内存和资源检查工具Rational Purify、性能瓶颈检查工具Rational Quantify。
PureCoverage 是一个面向VC, VB 或者Java 开发的测试覆盖程度检测工具,可以收集所有应用程序构件的代码覆盖数据,以自动检测你的测试完整性和那些无法达到的部分。
2.2Rational PureCoverage工具使用介绍
Rational PureCoverage支持与VS集成、命令行调用和安装运行
第一步:从windows“开始”菜单的“程序”中选择“Rational Suite Enteprise”选中“PureCoverage”,如图所示。
图1:在windows中的欢迎界面,注意运行时必须以超级管理员的身份运行。
第二步:选择需要测试程序
图2:上图为选择被测试程序,并运行run开始
第三步:对运行结果进行分析
图3:对于简单的程序进行监控的结果
Calls — 所调用函数的总数;
Methods missed — 未被调用的函数的数目;
Methods hit — 已调用的函数的数目;
% Methods hit — 已执行函数的百分比;
Lines missed — 未执行的代码行数.
Lines hit — 已执行的代码行数.
% Lines hit — 已执行的代码行百分比
单击鼠标,可以进一步查看上面列出的各个摘要数据所包含的函数和代码行。如上图选中的行直接双击即可看到代码以及执行情况。
Rational PureCoverage Function List 逐项列出程序运行过程中调用的所有函数,允许测试人员按被调用次数或函数名的字母顺序对函数进行排序。同时工具的Merge (归并)功能,允许测试人员归并同一可执行代码的多次运行所生成的覆盖数据,并生成覆盖数据的总计视图,从而可以快速评估测试运行参数并确保所有代码都已执行和测试。另外工具以不同颜色表示测试结果。
Hit lines(蓝色)— 已测试的代码行
Missed lines(红色)— 尚未测试的代码行
补充说明Rational PureCoverage各个选项卡的含义:
上图file后面的Setting->Default setting中的选项卡说明:在PowerCov 选项卡中,Line:默认行覆盖,Function:默认函数覆盖,Configure(Modules):选择要覆盖的模块;
Setting-> Preferences的Run选项卡:Show instrumention progess:当对VC++程序测试时,是否显示工具对话框。Show instrumention warnings:当对VC++程序测试时,侦探到警告对话框,是否显示工具警告对话框。Show LoadLibrary instrumention progress:对VC++、VB native-code程序测试时,当工具文件需要调用工具列表时,是否显示工具对话框。Confirm run concellation:当每次选择file——Concel run时,是否显示证实消息对话框。Show Coverage Browser:当对当前数据或汇总数据做快照时、打开一个.cfy 文件或Purify错误时、打开一个.pcy文件时、推出正在运行的程序时,是否在覆盖浏览器显示数据。show Function List:在与上相同的情况下,是否在函数列表窗口中显示数据。Automatic Merge:当运行一个程序时,是否在Navigator 窗口创建一个自动汇总入口,或在接下来的运行时,是否自动更新汇总数据。Use default filter set:当下一次运行程序时,是否使用当前的过滤器设置。Use case sensitive path names:当下一次运行程序时显示的数据,该工具是否区分大小写字母盘。
Setting-> Preferences的Workspace选项卡:Show Welcome Screen at startup:当每次打开该工具时,是否显示欢迎对话框。Show directories in file names:当文件名显示时。在可能的情况下是否显示文件路径。Use sounds:是否有声音。Warn on unsaved data:当关闭了一个为保存数据的运行时,或退出未保存数据的运行时,是否显示警告消息对话框。Show in Navigator:选择在Navigator 窗口中是否显示日期、时间、命令行论述等信息。
Setting-> Preferences的JVM选项卡:此选项卡是在测试java程序时,个性化java虚拟机时使用
3. 代码覆盖度工具BullseyeCoverage介绍及使用
3.1工具概述
Bullseye 公司提供的一款C/C++代码覆盖率测试工具。除了支持各种Unix 下的编译器之外,在Windows 下支持VC、Borland C++、Gnu C++、Inter C++。提供的代码覆盖率是条件/分支覆盖率而不是一般代码覆盖率工具,可参照此网址安装http://wenku.baidu.com/view/8e69c528b4daa58da0114a54.html。
3.2BullseyeCoverage的使用
本次使用示例程序是使用C++编写的一个小工具,工具的功能很简单,读取文件中的若干字符串,字符串已空格间隔,将所有字符串倒叙输出但字符串自身不变
第一步:打开BullseyeCoverage Browser
第二步:在Tools菜单中勾选上Coverage Build选项
说明:如果不勾选改选项的话,之后重新生成程序工程时,BullseyeCoverage是不会生成.cov文件的
第三步:使用VS2005打开需要测试的程序
第四步:重新生成程序工程
第五步:重新生成成功后,切换到BullseyeCoverage Browser界面,打开已生成的XXXX.cov文件
左边树形菜单显示了整个工程的结构,包括程序中包涵的方法,右边列表显示了各类型覆盖下的覆盖度的统计,由于程序还没运行所以各覆盖率都是0%
第六步:运行程序
第七步:程序运行完成后切换到BullseyeCoverage Browser界面
点击界面上的刷新按钮,右侧列表会显示各类型覆盖率,由下图可以看出:
程序覆盖100%,条件/分支覆盖61%,未覆盖度条件7个
双击右侧列表明细,显示具体程序内容
由上图可以看到,工具将程序的具体内容显示出来了,覆盖的程序会打钩,TF代表此分支执行过真假两种情况、F代表此分支只执行过假、T代表此分支只执行过真,只有红色箭头代表此分支未被执行过,此时我们可以根据未被覆盖的条件和分支修改我们的测试用例
第八步:生成报告
一共可生成两种报告Html格式和XML格式,点击菜单File,在下拉菜单中选择输出何种类型的报告
HTML格式
XML格式
说明:BullseyeCoverage的报告只能输出当前显示内容,这就造成我们要向一个完整的报告需要手动输出所有需要的页面(覆盖度的统计页面,具体程序内容页面),并经过人工整理才具体较好的可读性
参考文章:
http://wenku.baidu.com/view/c287c2c36137ee06eff91888.html
http://www.ibm.com/developerworks/cn/rational/r-cn-purifyplusadvancedfeatures/index.html
http://www.ibm.com/developerworks/cn/rational/r-cn-purecoveragecppcodecoverageanalysis/index.html