代码覆盖率计算利器:DotCover的使用(含Manual Test)

因为某项目的白盒单元测试做的不是很好,而QA又提出了非常高的代码覆盖率移行标准,不得以开始调研能覆盖手工测试(Mannual Test)的覆盖率工具,加上一些最基础的条件,该工具必须满足如下三点:

1:能计算白盒单元测试覆盖率;

2:能计算黑盒手工测试覆盖率;

3:支持MSTest框架;

第一个自然想到的就是NCover,没错,它肯定满足这三个条件,它有一个满足21天使用的Trial版本可以用,但是,商业版本的价格也是惊人的:

NCover Code Central$ 2,298
NCover Desktop$ 658
NCover Collector$ 448

很多刀刀。相比而言,生产ResharperJetbrainsDotCover,价格就要便宜很多,Personal License只要99刀,即便商业授权也只要199刀。当然,我现在还发现一个更龌蹉的方法,就是使用Classroom版本,然后到期了改时间就OKDotCover现在是鼓励大家合理使用。

闲话少说,那么到底它支持不支持如上3个标准(实际上,最重要的是:是否良好支持手工测试覆盖率计算)。下载Classroom liscence,安装之(目前已支持VS2012)。DotCover是基于VS插件的形式存在的,安装完毕,我们会在VS的工具栏中发现DotCover的标识,如下,比如,启动之“Cover Application”:

就会出现如下界面:

可以看到,它支持的应用种类还是比较多的。如果是启动普通的应用程序,如Winform,那么操作起来还是比较简单的,点击“Standalone Application”后,就会出现如下界面:

按照提示,输入后,OK-runDotCover就会为我们启动应用程序,当然,随着启动应用程序,DotCover的主模块也被启动起来,如下:

然后随着我们使用该应用程序(也就是测试),DotCover会跟踪代码执行的路径。测试完毕,我们“Get Snapshot”,最终DotCover会为我们生成如下的报告:

覆盖率结果清清楚楚的列在最后一列。

测试网站,要稍稍复杂一点,因为我们要将DotCover部署在WEB服务器上。由于它是以VS插件的形式存在的,首先WEB服务器上就得有VS(注意,Express版本可是不行滴)。启动DotCover还是一样的,但是最主要的,我们在选择Application Type的时候,要选择“IIS Application”,然后在弹出的界面里,URL可以空着,Run webbrowser也可以不勾选(因为我们又不是要在服务器上测试网站),最最重要的,是在“Edit Filter”的弹出界面中把网站的Bin路径配置进去。注意,如果我们的站点有多个虚拟路径的话,则需要把全部虚拟路径的Bin目录配置进去(以分号隔开)(下面的那些checkbox都可以不再勾选)。配置完毕,点“Run”。

然后,我们回到某个客户端上,启动浏览器,输入网站地址,当第一个人启动网站后,我们就会发现,在服务器的这个界面:

中的Process栏目,会变成w3wp这个进程,如果这个进程出现了,那么说明DotCover开始工作了。

最后,有几点需要进行说明:

1:每次测试完毕,应该将Snapshot保存为独立的文件,最终每次测试的结果我们可以使用DotCover的命令行工具进行合并,示例如下:

        DotCover merge /source=d:\1.dcvr;d:\2.dcvr /output=d:\end.dcvr /tempdir=d:\

2:其次,当前的Release版本为2.1.xxx,恭喜你,安装在Win7上毫无问题,但是,当你安装在XP或者Window Server2003版本上的时候,会发现:

        “Can't initialize profiler. PDB server wasn't started."

这个时候,我们就要去JetBrainsDailybuider版本的地址下载最新的安装包了,在这里:http://confluence.jetbrains.net/display/DCVR/dotCover+Early+Access+ProgramJetBrains号称2.2版本已经修复了该问题。是的,它确实已经修复了,但是还有些别的小问题,如果你不幸遇到了"failed to cocreate profiler",一定记得来问我是如何龌蹉滴解决了该问题的。

当然,所有这一些,我相信2.2Release版本出来后一定会解决的,毕竟,牛公司就得有个牛公司的风范。

 

总之,DotCover还是一款非常不错的覆盖率计算的工具软件,解决了开发、测试、QA三方面的问题(PS,白盒的覆盖率就不介绍了,毕竟那还是最基本的功能)。

 

 

你可能感兴趣的:(test)