(转贴)Rational PureCoverage简明教程(翻译和节选自相关文档和在线帮助)
PureCoverage – Rational的测试工具原理概述一. PureCoverage概述 2
二. 准备工作 2
1. 检查应用程序的每一个组件 2
2. 在整个工程生命周期使用PureCoverage 2
1) 开发者提示 3
2) 质量工程师提示 3
三. 使用PureCoverage原理 3
1. 使用PureCoverage执行目标测试程序 3
2. 得到大视图 4
3. 过滤器聚焦数据覆盖程度 5
4. 标识未检测行 5
5. 修改测试运行 6
6. 重新执行测试 6
7. 保存覆盖数据 6
四. PureCoverage的原理特性列表 7
1. 将开发环境同PureCoverage集成 7
2. 自动数据采集 8
1) 整体覆盖方式选择 8
2) 模块覆盖方式选择 9
3. 对于关键程序区域的检测 9
1) 采用交互式快照 9
2) 使用PureCoverage API函数 10
4. 将测试环境同PureCoverage集成 12
一. PureCoverage概述
PureCoverage是一个面向VC, VB或者Java开发的测试覆盖程度检测
工具, 它可以自动检测你的测试完整性和那些无法达到的部分. 作为一个质
量控制工程, 可以使用PureCoverage在每一个测试阶段生产详尽的测试
覆盖程度报告.
下面是使用PureCoverage的一些功能特性:
? 即时代码测试百分比显示
? 未测试, 测试不完整的函数, 过程或者方法的状态表示
? 在源代码中定位未测试的特定代码行
? 为执行效率最大化定制数据采集
? 为所需要的焦点细节定制显示方式
? 从一个程序的多个执行合成数据覆盖度
? 和其他团队成员共享覆盖数据或者产生报表
? 在开发环境当中使用PureCoverage集成实施检测代码覆盖程度
(Visual Stadio, VB5+)
二. 准备工作
1. 检查应用程序的每一个组件
下面是PureCoverage所需要分析覆盖程度的应用程序组件清单:
? 对应VC/C++的.exe, .dll, OLE/ActiveX控件和COM对象之中的源
代码
? 对应VB6(p-code.exe), VB5(native-code.exe), .dll, OLE/ActiveX
控件和COM对象之中的源代码
? 对应Java Applets, class 二进制文件和容器程序所引用的代码(针对
MS JVM)
? 由容器程序(诸如: IE, MTS, Jview.exe, Tstcon32.exe, Netscape
Navigator, 或者任意其他微软的办公程序…)引用的组件
? 微软Excel, Word的插件
2. 在整个工程生命周期使用PureCoverage
在开发和测试周期中使用PureCoverage的早期可以发现和消除正式/非
正式测试之间的差异. 你可以通过检查所有的源代码确保你的代码的正确性和
发现错误并赢得修改时间. 在任何执行新建应用程序或者修改代码的时候使用
PureCovrage直到产品的最终发布.
1) 开发者提示
通过使用PureCoverage可以以一种新的方式进行软件开发进程, 可以进
行覆盖数据的收集以及非重容易地聚焦你新修改的代码部分. 你可以在Check-
in你的代码之前或者以后以最小的代价实施每一个测试工作.
如果你手工实现代码检查, 使用PureCoverage可以监测和引导你的测试
工作. PureCoverage向你以交互方式显示你的代码的函数, 过程或者方法的
检查进程百分比.
2) 质量工程师提示
作为一个质量工程师, 使用PureCoverage可以实现完美的测试进程, 通
过书写PureCoverage测试脚本, 可以让PureCoverage自动批处理执行. 通
过不断地反馈你的测试效率, 可以保证你检查了所有的修改部分.
三. 使用PureCoverage原理
使用PureCoverage, 你可以缺陷你的所有代码都可以通过一系列简单的
步骤获得检测:
? 在PureCoverage里面执行程序
? 利用Coverage 浏览器和函数清单窗口获得测试目标程序的大视图, 使
用过滤器可以重点测试你最感兴趣的部分
? 在提示源代码窗口可以表示未检测的代码行
? 修改你的测试运行来覆盖遗漏的代码行, 条件分支, 函数, 过程或者方
法
? 目标测试程序返回以验证你已经改进了覆盖程度. 保存覆盖数据来实现
和其他团队成员的共享
1. 使用PureCoverage执行目标测试程序
如果需要实现覆盖测试, 首先就是启动PureCoverage, 然后选择目标测
试程序:
? Java程序员
使用"程序名称"浏览你需要的二进制class文件名或者HTML网页,
PureCoverage会自动插入正确地信息到"运行"对话框.
? VB程序员
针对VB5(native-code)可以直接输入目标程序路径, 而针对VB6(p-
code)则需要附加在Cstart.exe后面作为参数启动.
? VC程序
同VB的native-code.
对于VC和VB native-code程序而言, PureCoverage首先复制程序需
要调用的每一个组件, 然后对于这些副本执行"对象代码插入(OCI)"技术, 这些
附加的代码允许PureCoverage表示你的程序的测试覆盖状态. 对于VB6的
p-code程序和Java程序, PureCoverage不进行代码附加, 但是转而使用
Cstart.exe直接监视过程或者方法.
2. 得到大视图
Coverage浏览器和函数列表窗口向你展示了全局的覆盖状态:
? 没有被目标程序调用的每一个函数, 过程或者方法背标记为遗漏
(MISSED). 那些至少调用一次的标记为点击(HIT)
? 如果调试行信息对于PureCoverage有效, 相应的(MISSED/HIT)状
态的行数也被报告
? Coverage浏览器: 以层次模式展示应用程序的结构
? 函数列表视窗: 提供了习惯组件的函数明细列表
3. 过滤器聚焦数据覆盖程度
PureCoverage收集每一个目标程序模块的信息, 但是通常不显示全部数
据, 为了重点显示你感兴趣的部分, PureCoverage缺省隐藏了系统和第三方
组件部分.
4. 标识未检测行
通过双击Coverage浏览器或者函数列表视窗的指定函数, 过程, 方法可
以切换到对应的逐行源代码部分. PureCoverage缺省显示未测试代码为红色, 已测试代码蓝色, 而死状态
行(通常是函数, 过程或者方法中的非活动代码部分)黑色. 那些部分测试的代
码块为粉色 – 通常它们是那些程序里面的条件分支部分.
你可以按照名称在测试执行的时候测试指定的函数, 过程或者方法的代码.
5. 修改测试运行
这样你就可以知道那些部分你遗漏了没有测试. 如果你以非正常方式执行
程序, 需要考虑你之前遗漏的部分. 如果在一个测试系列当中, 你可以附加或者
调整测试脚本来提升测试覆盖程度.
无论哪种方式之一, 都可以使用PureCoverage提供的信息获得那些代码
需要覆盖 – 而无需猜测.
6. 重新执行测试
Auto Merge Data是将覆盖数据由一个新的执行同其他任何存在的以前执
行的数据进行组合.
7. 保存覆盖数据
PureCoverage支持两种数据格式:
? 数据文件(.cfy), 用来以后打开进行比较合分析, 或者和其他团队成员
共享
? 文本文件(.txt), 用于在表格和字处理程序里面制作报表
四. PureCoverage的原理特性列表
1. 将开发环境同PureCoverage集成
PureCoverage可以和注入VisualStudio等开发集成环境很好的集成, 让
你进行开发和测试的时候可以方便的使用. 如图可以看到习惯的工具条已经自
动集成到了VC的IDE当中, 不过值得注意的是有时候会将SourceSafe的工
具条"挤出"IDE, 这个时候一般重新安装SourceSafe可以解决.
2. 自动数据采集
1) 整体覆盖方式选择
覆盖方式选择
用户可以选择不同的覆盖模式:
? 行覆盖模式
直接对于代码的每一行代码(包括注释等)进行覆盖, 以不同颜色显示执
行命中率
? 函数覆盖模式
对于具体函数进行覆盖, 以不同颜色显示执行命中率
我们可以选择复选框"Exclude all modules in Windows directory"来缩
小覆盖范围, 排除那些位于System(System32)内的系统DLL文件; 也可以
点击"Modules…"按钮可以选择具体文件的覆盖程度.
2) 模块覆盖方式选择
用户可以选择针对具体模块的不同的覆盖模式:
? 缺省模式(Default)
遵从整体设置
? 行覆盖模式(Line)
对于指定模块的代码行进行覆盖
? 函数覆盖模式(Function)
对于指定模块的函数进行覆盖
? 排除模式(Exclude)
不对指定模块进行覆盖
3. 对于关键程序区域的检测
1) 采用交互式快照
在使用独立PureCoverage软件执行指定应用程序的覆盖测试的时候, 我
们可以使用下图工具条实现应用特定时刻的快照摄制数据采集.
在使用VC集成PureCoverage执行指定应用程序的覆盖测试的时候, 我
们可以使用菜单Run Control的Data SnapShot菜单项实现应用特定时刻的
快照摄制数据采集.
下图就是实时采集的数据快照:
窗口的左侧就是具体的快照项目, 显示了摄制日期等时间参数, 而右面的就
是和平时覆盖测试一样的数据采集窗口, 区别在于这里的数据是截至特定时刻
的部分数据.
2) 使用PureCoverage API函数
PureCoverage提供了一组习惯的API函数实现覆盖测试的自定义控制, 对
于VC使用环境而言, 需要在搜索路径里面附加需要的头文件和实现文件的路
径, 一般Pure.H和Pure_api.c位于Coverage的安装目录当中.
以下是习惯的API函数列表:
我们可以看见, 通过相应的在线帮助可以非常方便的获得相应的使用指南,
这里API函数还暂时不支持C#, Java等其他测试环境. 并且注意在有些MFC
程序下面需要设置Pure_api.c文件的Precompiled Header不要使
用"stdafx.h", 否则无法链接.
? CoverageAddAnnotation
在执行总结窗口和相应的覆盖测试日志文件里面附加用户自定义的提示
信息.
int CoverageAddAnnotation (char *Annotation)
返回1表示成功, 0表示失败
一般我们使用该函数设置一些相关注释信息, 比如: 版本, 日期, 测试
时间等等.
应用例子如下:
#include <windows.h>
#include <stdio.h>
#include "pure.h"
void main()
{
CoverageAddAnnotation ("2002.02.26 应用程序名称 12:30
XXX?.");
}
? CoverageClearData
删除当前运行的所有现存收集数据.
int CoverageClearData (void)
返回1表示成功, 0表示失败
? CoverageDisableRecordingData
禁止收集数据.
int CoverageDisableRecordingData (void)
返回1表示成功, 0表示失败
? CoverageIsRecordingData
当前是否在收集数据.
int CoverageIsRecordingData (void)
返回1表示在收集, 0表示不在收集
? CoverageIsRunning
判断当前应用是否运行在PureCoverage环境下.
int CoverageIsRunning (void)
返回1表示是, 0表示否
? CoverageSaveData
保存当前运行的所有现存收集数据.
int CoverageSaveData (void)
返回1表示成功, 0表示失败. 因为具体的存盘路径通过命令行方式交
给PureCoverage, 为此不能控制具体文件名称和路径
? CoverageStartRecordingData
开始收集数据.
int CoverageStartRecordingData (void)
返回1表示成功, 0表示失败
? CoverageStopRecordingData
停止收集数据.
int CoverageStopRecordingData (void)
返回1表示成功, 0表示失败
4. 将测试环境同PureCoverage集成
使用下列命令行方式可以实现在测试而非开发环境下进行测试:
coverage /SaveTextData 应用程序.exe
? 回产生一个同名的.txt文件
? 如果使用SaveData就是得到一个.Cfy文件
? 如果使用SaveMergeData则得到一个_AutoMerge.Cfy文件
? 上述选项可以配合使用
五. PureCoverage课程提纲
1) Rational PureCoverage的运行环境
PureCoverage只能使用在WinNT以上的OS, Win9x以及WinME不能
使用.
2) Rational有关测试的一些组件
Rational的TestStudio是一个系统测试解决方案, 主要由以下组件组成:
? TestManager
测试管理软件, 用于实现测试的计划—用例设计—用例实现—测试实施
—结果分析
? TeamTest
团队测试工具, 用于对于功能, 性能和质量的量化测试和管理
? PurifyPlus
运行时分析软件, 用于对于项目实施:
? 代码覆盖测试
? 代码错误测试(内存泄漏, 代码错误)
? 代码性能(瓶颈查找)
? Robot
面向对象的测试
? VisualTest
针对微软的测试组件
? PreVue
针对X平台和终端软件的测试组件
? ClearQuest
需求管理软件, 用于实现需求项目管理和变更影响评估和协调
3) 如何安装Rational PureCoverage
主要讲述针对Ratioanl Enterprise Suite 2001的安装和注册过程. 需要
注意的就是Ratioanl的几种注册机制:
? CS联机注册模式
? 独立单机注册模式
? 注册码有效期模式
4) PureCoverage的特点和基本要素
? OCI技术
? 代码命中率
? 覆盖模式
? 数据保存
5) 如何启动PureCoverage
如何在PureCoverage里面和IDE里面使用
? 独立环境当中的使用, 记住不同开发工具目标程序的命令行诧异
? IDE环境当中的使用, 相关特性
6) 如何实现PureCoverage的脚本定制自动化
如何通过API实现PureCoverage的自动化 为什么在RUN时系统会报错。系统无法找到指定文件??:( 幸运!正要学习使用Purecoverage的时候发现了这个帖子。多谢楼主。
页:
[1]