C#代码覆盖率实践-vsinstr和OpenCover
作者:网络转载 发布时间:[ 2014/7/17 14:11:01 ] 推荐标签:单元测试
近接触的项目涉及到C#开发的应用,测试过程中我们需要去分析C#的代码覆盖率,问了一些人,在网上也搜了一些,零碎的找到很多资料,但是都不是很完整,实际使用的过程中还是走了不少弯路。到现在为止,有两种可行的方案试验成功了,这里写出来给大家分享下。可能很多人都用过,当是个整理吧。
方法一:使用VS自带的vsinstr工具
准备条件:安装VS2010或者VS2012。
基本的操作步骤,主要是三个。
1. 对被测的DLL进行插桩。
"C:Program Files (x86)Microsoft Visual Studio 10.0Team ToolsPerformance Toolsx64vsinstr" -coverage "D:xxx.dll"
原来的dll自动被更名为 *.orig,相当于是一个备份。可以看到被插桩的DLL尺寸有所增加。
2. 启动coverage数据监控和收集。
start vsperfmon -coverage -output:"D:xyz.coverage" /CS /user:everyone
3. 运行被测的程序,或者等待被执行。
4. 停掉被执行的程序,可以直接关闭应用。
5. 停止coverage监听,生成数据。
vsperfcmd /shutdown
6. 找到D:xyz.coverage,双击可以直接用VS打开查看。 显示的是block覆盖率,如果有source code可以对着代码查看。
方法一小结:
1. 这种方式除了后查看报告,不需要启动VS,也不限制被测的代码如何被测试,可以手工也可以其他自动化程序。
2. 目前来看需要逐个DLL插桩,对于exe文件没有尝试。
3. 生成的覆盖率报告是二进制文件,需要在VS里面查看。
4. 目前看到的是只有block级别的覆盖率数据,没有找到line级别的。
方法二:使用免费的OpenCover工具
准备条件:
1. 安装OpenCover工具,可以直接下载msi或者zip包
2. 下载ReportGenerator工具,用于将OpenCover生成的XML报告转换成更加可读的HTML报告。
具体的步骤:
1. 在VS里面随便用C#写了一小段代码,包含了一个分支,用于查看覆盖和未覆盖的情况。编译成 ConsoleApplicaiton1.exe
2. 通过OpenCover将被测的ConsoleApplicaiton1.exe在命令行启动起来,加上相关的参数。
-output:c2.xml 指明将生成的报告文件名。
-targetdir: 告诉OpenCover这个exe对应的PDB在哪儿。两种方法PDB文件都是必须的。
-register 不是很清楚用途,但是是必须的,第一次没加这个参数覆盖率数据出不来。
更详细的参数请查看OpenCover的手册。
具体的命令:
OpenCover.Console.exe -register -target:"C:Users ickyqiuDocumentsVisual Studio 2012ProjectsConsoleApplication1ConsoleApplication1inDebugConsoleApplication1.exe" -output:c2.xml -targetdir:"C:Users ickyqiuDocumentsVisual Studio 2012ProjectsConsoleApplication1ConsoleApplication1inDebug"
执行的结果如下面的cmd窗口。程序很简单,所以很快跑完了,显示了一个覆盖率的摘要。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11