发布: 2008-9-12 14:56 |
作者: 高伟斌 |
来源:
www-128.ibm.com |
查看: 138次 | 进入软件测试论坛讨论
领测软件测试网
Rational PureCoverage 是专门进行自动化运行分析代码覆盖信息的工具,是一个单独的产品,也是 Rational PurifyPlus 家族中的一员。可用于改善应用程序可靠性和性能。在 Linux、UNIX 和 Windows 上都可使用和集成,PureCoverage 支持 C/C++、Java、.NET、Visual Basic 和 HTML。它可以实时诊断出应用程序覆盖的函数或方法(包括调用次数)和代码行信息。
1 概述
Rational PureCoverage 是专门进行自动化运行分析代码覆盖信息的工具,是一个单独的产品,也是 Rational PurifyPlus 家族中的一员。可用于改善应用程序可靠性和性能。在 Linux、UNIX 和 Windows 上都可使用和集成,PureCoverage 支持 C/C++、Java、.NET、Visual Basic 和 HTML。它可以实时诊断出应用程序覆盖的函数或方法(包括调用次数)和代码行信息。
PureCoverage 产品除了有自己专门的用户界面外,也可以和 Rational ClearQuest、Rational Robot、Rational Purify、IBM WebSphere Studio、Microsoft Visual Studio .NET、Microsoft Visual Studio 6 和 Microsoft Visual Basic 等无缝的集成,还可以用强大的命令行接口。所有通过图形界面的 PureCoverage 功能都可用命令行来完成,此外 PureCoverage 还为命令行提供了更多的选项和功能。
本文分别介绍了在 Linux / UNIX 和 Windows 上如何利用 PureCoverage 图形界面和通过命令行工具分析 C/C++ 程序,对分析结果的整理和报告,以及和用户环境的集成达到自动诊断和测试的目的。
2 收集覆盖信息数据
2.1 在 Linux 或 UNIX 下收集覆盖信息数据
Linux 或 UNIX 下用 PureCoverage 要用 purecov 命令 Build 用户程序,如果用户还想通过 PureCoverage 获得调用所有代码行的信息,那么用户程序还需要 Build 成 Debug 版本(如用 -g 选项)。用 purecov 封装 Build 就是在执行 cc 或 gcc, g++ 前加 purecov 即可,例如:
% purecov cc -g admetadata.cpp
PureCoverage 2003a.06.15 Solaris 2 (32-bit) (c) Copyright IBM Corp. 1992, 2005 All rights reserved.
Instrumenting: crti.o crt1.o values-xa.o admetadata.o libCstd.a...
libC_mtstubs.a. libcx.a... crtn.o Linking
|
然后运行封装好的可执行程序就可生成此程序所覆盖的数据,例如:
% ./a.out
**** PureCoverage instrumented a.out (pid 8480 at Mon Aug 31 04:25:00 2005)
* PureCoverage 2003a.06.15 Solaris 2 (32-bit) (c) Copyright IBM Corp. 1992, 2005 All rights reserved.
* For contact information type: "purecov -help"
* Options settings: -purecov \
-purecov-home=/usr/local/pure/releases/purecov.sol.2003a.06.15 \
-cache-dir=/usr/local/pure/releases/purecov.sol.2003a.06.15/cache
* License successfully checked out.
* Command-line: ./a.out
Hello, World
**** PureCoverage instrumented a.out (pid 8480) ****
* Preparing coverage data.. Please note this might take some time..
* Saving coverage data to /net/ma-homes/homes/gaowb/a.out.pcv.
* To view results type: purecov -view /net/ma-homes/homes/gaowb/a.out.pcv
|
运行完后 PureCoverage 会保存覆盖信息到一个扩展名为 pcv 的二进制文件,如果此文件已经存在, PureCoverage 缺省会更新合并此文件中的覆盖信息。
Windows 下用 PureCoverage 前先要 Build 好用户程序,如果用户还想通过 PureCoverage 获得调用所有函数和代码行的信息,那么用户程序需要 Build 成 Debug 版本。Build 好用户程序之后就可以用 PureCoverage 图形界面工具或 coverage 命令行工具加参数生成覆盖信息数据,PureCoverage 是一个实时诊断工具,所以在生成覆盖信息数据时它会执行用户程序。
2.2 在 Windows 下用 PureCoverage 图形界面收集覆盖信息数据
启动"Rational PureCoverage"后,在欢迎界面点击"Run"按钮或从文件菜单或工具条选择"Run"开始一个诊断程序,如图1:
图1 PureCoverage 开始运行对话框
在运行过程中 PureCoverage 会首先显示一个包含当前状态程序覆盖情况的概要窗口,如图2:
图2 PureCoverage 概要窗口
2.3 在 Windows 下用其他开发工具集成调用 PureCoverage 收集和查看覆盖信息数据
为方便用户开发和测试代码,PureCoverage 可以集成到Microsoft Visual Studio 6,Microsoft Visual Studio .NET,Microsoft Visual Basic,Rational Robot,Rational ClearQuest 和 IBM WebSphere Studio 等开发工具。要在这些集成开发环境中使用 PureCoverage 请确保安装 PureCoverage 时正确安装了和这些开发工具的集成。下面的例图3 是用 Microsoft Visual Studio 6 调用 PureCoverage 收集覆盖信息数据:
图3 在 Microsoft Visual Studio 6 中调用 PureCoverage 来收集和查看覆盖信息数据
2.4 在 Windows 下用命令行工具收集覆盖信息数据
命令行工具用法如下:
coverage [] []
例如:
coverage /SaveTextData="C:\pamsglib.txt" pamsglib.exe arg1 arg2 arg3
下面是生成的结果实例:
comment PureCoverage text data file:
comment Data fields are separated by tabs.
comment Data appears in the following sections:
comment Comment - These lines plus overall information about the run
comment CoverageData - A spreadsheet-compatible table of tab-separated coverage results
comment SourceLines - A table for each source file showing line numbers with line coverage
comment (SourceLines is only available when at least one module is instrumented in line mode).
comment Program Name S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe
comment Program Arguments util miscthrow
comment Working Directory S:\bugbert\test\admetadata\harness\util
comment User Name gaowb
comment Program Version 2003.06.03 5352
comment Host Name QWIN154
comment Machine Type Intel Pentium 4 Model 3 Stepping 4
comment O/S Version Windows NT 5.1.2600 Service Pack 2
comment #Processors 1
comment Physical Memory (MBytes) 2038
comment PID 0x1564
comment Language C
comment Start Time 08/31/05 09:00:41
comment Stop Time 08/31/05 09:00:43
comment Dataset Size (bytes) 10313728
comment Elapsed Time (milliseconds) 12767979643649
comment CaseInsensitive DeleteModule Enabled *MFC*.dll
comment CaseInsensitive DeleteModule Enabled *MSVC*RT*.dll
comment CaseInsensitive DeleteModule Enabled *MFC*.dll
comment CaseInsensitive DeleteModule Enabled *MSVC*RT*.dll
comment CaseInsensitive DeleteFile Enabled *Unknown Directory*
comment CaseInsensitive DeleteFile Enabled *Unknown File*
comment CaseInsensitive DeleteFile Enabled *pure_api.c
comment CaseInsensitive DeleteFile Enabled *\\crt\\src*
comment CaseInsensitive DeleteFile Enabled sys*
comment CaseInsensitive DeleteFile Enabled intel*
comment CaseInsensitive DeleteFile Enabled *Unknown Directory*
comment CaseInsensitive DeleteFile Enabled *Unknown File*
comment CaseInsensitive DeleteFile Enabled *pure_api.c
comment CaseInsensitive DeleteFile Enabled *\\crt\\src*
comment CaseInsensitive DeleteFile Enabled sys*
comment CaseInsensitive DeleteFile Enabled intel*
comment CaseInsensitive HideFunction Disabled *unknown_function*
comment CaseInsensitive DeleteFunction Enabled SwitchToFiber
comment CaseInsensitive DeleteFunction Enabled UnnamedFunction*
comment CaseInsensitive DeleteFunction Enabled _*
comment CaseInsensitive DeleteFunction Enabled $E*
comment CaseInsensitive HideFunction Disabled *unknown_function*
comment CaseInsensitive DeleteFunction Enabled SwitchToFiber
comment CaseInsensitive DeleteFunction Enabled UnnamedFunction*
comment CaseInsensitive DeleteFunction Enabled _*
comment CaseInsensitive DeleteFunction Enabled $E*
CoverageData Name Type ParentSource ParentModule
FunctionsUnused FunctionsUsed TotalFunctions FunctionsPercent
LinesUnused LinesUsed TotalLines LinesPercent SourceLine NumberOfCalls
CoverageData ThisRun Run 10137 303 10440
2.90 77049 838 77887 1.08 21931797
CoverageData S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe Module
98 49 147 33.33 243 260 503 51.69 17283342
CoverageData S:\bugbert\nt_i386\pvtinstall\clearquest\CQPACKAGELIB.DLL Module
99 7 106 6.60 192 15 207 7.25 8478
... ...
CoverageData (Unknown Directory) Directory
S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe 0 0 0
0.00 0 0 0 0.00 0
CoverageData \sys_nt\MSVC\common\include Directory
S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe 3 1 4
25.00 5 1 6 16.67 2134067
... ...
CoverageData \bugbert\src\include\pamessage.h SourceFile \bugbert\src\include
S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe 25 0 25
0.00 25 0 25 0.00 0
CoverageData \sys_nt\MSVC\common\mfc\include\afx.inl SourceFile
\sys_nt\MSVC\common\mfc\include S:\bugbert\nt_i386\pvtinstall\tests\admetadata.exe
9 7 16 43.75 9 7 16 43.75 6412263
... ...
CoverageData CGXGridRangeNameImp::GetRangeName(CGXGridCore *,char const*,CGXRange&)
Function src\gxcrgnam.cpp S:\bugbert\nt_i386\pvtinstall\clearquest\OG701CQAS.DLL
1 0 1 0.0 4 0 4 0.00 119 0
CoverageData CGXGridRangeNameImp::DeleteRangeName
(CGXGridCore *,char const*,CObject *,GXCmdType) Function
src\gxcrgnam.cpp S:\bugbert\nt_i386\pvtinstall\clearquest\OG701CQAS.DLL
1 0 1 0.0 16 0 16 0.00 126 0
... ...
SourceLines \bugbert\src\include\pamessage.h
S:\bugbert\nt_i386\pvtinstall\tests\pamsglib.exe
LineNumber LineCoverage
108.1 0
... ...
153.1 1
... ...
... ...
|
|
3 查看和过滤覆盖信息数据
3.1 在 Linux 或 UNIX 下用 PureCoverage 查看器查看和过滤生成的覆盖信息数据
用 purecov -view 命令打开 PureCoverage 查看器可以显示覆盖信息,例如:
% purecov -view a.out.pcv
|
此命令将打开 PureCoverage 查看器图形窗口,如图4:
文章来源于领测软件测试网 https://www.ltesting.net/
TAG:
purecoverage
PureCoverage
rational
Rational
RATIONAL
程序
环境
诊断