• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使用 Rational PureCoverage 诊断 C/C++ 程序覆盖信息和用户环境的集成

发布: 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 开始运行对话框
图1 PureCoverage 开始运行对话框

在运行过程中 PureCoverage 会首先显示一个包含当前状态程序覆盖情况的概要窗口,如图2:


图2 PureCoverage 概要窗口
图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 来收集和查看覆盖信息数据
图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 程序 环境 诊断

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网