回归测试的代码覆盖率(手动/自动)






4.44/5 (8投票s)
如何在回归测试(自动/手动)中使用代码覆盖率
演示zip包含
- 代码覆盖率示例
WindowsFormsApplication1
CodeCoverageXMLConverter
应用程序,用于将覆盖率文件转换为XML批处理文件
代码覆盖率分析文件
目录
引言
代码覆盖率是Visual Studio测试框架中的一个实用工具。我在之前的项目中使用了代码覆盖率来确定在单元测试中覆盖了哪些代码以及覆盖了多少代码。
在该项目中,我们在部署到生产环境之前会进行回归测试(手动/自动)。但业务部门想知道我们在回归测试中覆盖了多少代码。为此,我使用了代码覆盖率,并生成了一些漂亮的报告供业务部门参考,如下所示。在本文中,我将告诉您如何使用代码覆盖率在回归测试(手动/自动)期间检测程序集(DLL或EXE),并基于此生成报告。
回归测试代码覆盖率实现
首先,我们需要创建一个Windows应用程序,我们将用它来进行回归测试。创建一个简单的Windows应用程序,包含一个文本框和两个按钮:“Say Hi”和“Say Bye”。在文本框中,我们接受用户的姓名。当用户点击“Say Hi”按钮时,显示带有文本“Hi <<UserName>>”的消息框。当用户点击“Say Bye”按钮时,显示带有文本“Bye <<UserName>>”的消息框。如下所示:
1. 要测试的程序集(DLL或EXE)的检测
打开Visual Studio 2010或更高版本的命令提示符(开始 | 所有程序 | Microsoft Visual Studio 2010 | Visual Studio Tools | Visual Studio 2010 Command Prompt)
将目录更改为包含Windows应用程序EXE的目录,如下所示:
C:\CodeCoverageFinal\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
对每个您希望检测的程序集,使用 vsinstr 命令。
vsinstr /coverage WindowsFormsApplication1.exe
我们可以创建一个名为“Instrument.bat”的批处理文件来运行上述命令,如下所示:
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
@echo off
echo Instrumention Started...
pause
vsinstr /coverage C:\CodeCoverageFinal\WindowsFormsApplication1\
WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe
echo Instrumention Completed.
pause
运行“Instrument.bat”文件,将显示如下所示的命令提示符:
如上屏幕所示,应用程序EXE已被检测,并且创建了WindowsFormsApplication1.instr.pdb 文件。
注意:这是一个一次性过程。如果您更改了解决方案,请删除所有PDB文件,然后再次运行
“Instrument.bat”文件。
启动代码覆盖率监视器
要开始我们的测试运行,我们需要启动代码覆盖率监视器。我们通过在Visual Studio 2010命令提示符中运行 vsperfcmd 命令来完成此操作。
vsperfcmd /start:coverage /output:[AMeaningfulOutputName].coverage
示例
vsperfcmd /start:coverage /output:c:\Test\RegressionTests.coverage
/output
– 将结果输出到指定文件
我们可以创建一个名为“Start_Profiler.bat”的批处理文件来运行上述命令,如下所示:
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
@echo off
echo Starting Profiler...
pause
vsperfcmd /start:coverage
/output:C:\CodeCoverageFinal\CodeCoverageProfillingFiles\RegressionTests.coverage
echo Started Profiler.
pause
运行“Start_Profiler.bat”文件,将显示如下所示的命令提示符:
如上屏幕所示,分析器已启动,并且正在将数据记录到C:\CodeCoverageFinal\CodeCoverageProfillingFiles\RegressionTests.coverage 文件中。
3. 运行应用程序
您需要从特定位置运行您的应用程序。
示例
C:\CodeCoverageFinal\WindowsFormsApplication1\WindowsFormsApplication1\
bin\Debug\WindowsFormsApplication1.exe
4. 回归测试(手动/自动)
在这里,我们运行所有手动/自动测试用例。
对于我们的演示,点击任意一个或两个按钮。
5. 停止应用程序
像用户正常操作一样关闭您的应用程序。
6. 停止代码覆盖率监视器
我们需要关闭代码覆盖率监视器。这将导致代码覆盖率数据被写入到我们在步骤2的命令行中指定的文件中。通过在Visual Studio 2010命令提示符中运行 vsperfcmd 命令来完成此操作。
vsperfcmd /shutdown
对于Web服务/Web应用程序工作进程(aspnet_wp
)会创建但仍然在运行,上述命令会等待工作进程。在运行上述命令之前,我们需要终止工作进程。所以使用iisreset
来终止工作进程。
我们可以为此创建一个名为“Stop_Profiler.bat”的批处理文件,如下所示:
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
@echo off
echo Stopping Profiler...
pause
iisreset
vsperfcmd /shutdown
echo Stopped Profiler.
pause
运行“Stop_Profiler.bat”文件,下面将显示提示符:
如上屏幕所示,分析已停止,我们的覆盖率文件已填充。
7. 审查代码覆盖率文件
要查看代码覆盖率结果,请在Visual Studio 2010或更高版本中打开.coverage文件(在步骤2的命令行中指定)。如果有人查看.coverage文件并能访问源代码,他们将能够看到源代码的着色。此文件对开发人员将非常有帮助。
在Visual Studio中打开“RegressionTests.coverage”文件,您将获得如下所示的详细信息:
8. 报告生成
使用CodeCoverageToXMLConvertor
应用程序生成如下所示的XML报告:
现在您将找到C:\CodeCoverageFinal\CodeCoverageProfillingFiles\RegressionTests.coverage.xml 文件。该文件包含许多部分,并提供代码覆盖率的详细信息。我创建了一个XSLT文件“myxml.xsl”来根据业务需求生成报告。您可以根据您的需求包含更多部分。您只需要更新“myxml.xsl”文件。
编辑此XML文件,并在第2行添加以下行:
<?xml-stylesheet type="text/xsl" href="myxml.xsl"?>
在Internet Explorer中打开此文件,您将获得如下所示的精美业务报告:
同样,我们可以同时分析多个文件以生成完整的报告。
结论
本文介绍了如何在回归测试(自动/手动)期间使用代码覆盖率。
参考文献
- 使用代码覆盖率运行测试
- MSDN:手动测试概述
- .NET 代码覆盖率分析以确保彻底的应用程序测试(MSDN 杂志)
- MSDN - VSInstr
- MSDN - VSPerfCmd
- Steven Jean 的手动测试代码覆盖率
- 使用代码覆盖率运行测试
- ASP.NET 应用程序的离线分析
开发环境
VS Team System 2010 Development Edition/ Visual Studio Team System 2010 Test Edition/Visual Studio Team System 2010 Team Suite。或更高版本的 Visual Studio。
历史
- 2013年5月9日:原文
- 2013年5月13日:更新了一些部分
注意:请阅读、收藏、评论、投票文章。