使用 Rational PureCoverage™ 评估代码覆盖
目的
本工具向导概括说明了如何使用 Rational PureCoverage 便捷地找出 Visual C/C++、Visual Basic 和 Java 程序在测试中存在的差距。要了解 PureCoverage 的详细信息,包括如何过滤覆盖数据、合并与比较运行过程,以及数据集合调优,请查阅 Getting Ahead With Rational PureCoverage。
概述
PureCoverage 会为您的程序及其使用的每个构件收集一组详细的覆盖数据。有了这些数据,您就能检测正在测试的程序中的每一代码行、函数、过程或方法是否都已执行,合格后您就可以向客户发布此程序了。要评估代码覆盖的有效性,并查明代码中未被执行的部分,请执行以下步骤:
- 使用 PureCoverage 运行一个程序来收集覆盖数据
- 使用 PureCoverage 的窗口和工具来分析覆盖数据
- 再次运行该程序并使用 PureCoverage 的窗口和工具查找覆盖变化
工具步骤
监测覆盖的第一步是收集代码覆盖数据。
对于 Visual C++,既可以直接使用 PureCoverage 集成的 Microsoft Developer Studio,也可以通过 PureCoverage 来诊断并运行程序。PureCoverage 诊断可执行文件的副本和与其相关的模块。PureCoverage 也可以插入其他的代码来检测在程序中执行了哪些函数和代码行。PureCoverage 在诊断文件的同时将显示进度。
对于 Visual Basic,既可以直接使用 PureCoverage 集成的 Microsoft Visual Basic,也可以通过 PureCoverage 来运行 Visual Basic 项目或伪码程序(仅适用于 Visual Basic 6.0)或 Visual Basic 本机码程序(Visual Basic 5.0 或更高版本)。在监测项目或伪码程序时,PureCoverage 将 Visual Basic for Applications (VBA) 解释引擎置于一种特殊模式,PureCoverage 借此监测该引擎的操作并在运行代码的同时直接收集覆盖数据。对于本机码程序,PureCoverage 将诊断该程序,然后收集代码覆盖数据。 PureCoverage 诊断可执行文件的副本和与其相关的对象库。PureCoverage 也可以插入其他的代码来检测在程序中执行了哪些过程和代码行。PureCoverage 在诊断文件的同时将显示进度。
对于 Java,既可以由 PureCoverage 的容器程序(使用 Run Program 对话框),也可以由命令行来运行 Java Applet、类文件或代码。监测 Java 代码时,PureCoverage 将 Microsoft virtual machine (VM) for Java 置于一种特殊模式,PureCoverage 借此监测 VM 的操作并在 Applet、类文件或代码运行的同时直接收集代码覆盖数据。
当 PureCoverage 开始监测时,它会显示 Run Summary 窗口,这样您就可以看到反映测试进度的数字和图形信息,还可检查有关此次运行的其他信息。在您执行代码的同时,PureCoverage 会记录有关代码覆盖的数据。您可以随时暂停和重新开始记录数据,这样您就可以检查特定的代码段。您也可以保留当前数据的快照,这样您就可以分阶段地检查代码覆盖。
退出该程序时,PureCoverage 会显示它收集到的覆盖数据。由于数据较多,所以 PureCoverage 在显示程序的覆盖详细资料之前,会使用过滤器从系统库和其他模块中自动滤除不重要的数据。在分析覆盖数据的同时,您可以控制所显示的数据量。
提示:除了交互式地使用 PureCoverage 之外,您也可以将 PureCoverage 并入测试脚本以便自动测试。有关详细信息,请查阅 PureCoverage 联机帮助索引中的 scripts。
监测覆盖的第二步是分析 PureCoverage 收集的代码覆盖数据。
退出 PureCoverage 为其收集数据的程序后,PureCoverage 会显示 Coverage 浏览器窗口,其中显示了诸如测试覆盖到的和遗漏的函数、过程或方法(此处总称为函数)的数量,以及测试覆盖到的和遗漏的代码行数这样的信息。另外,您也可以看到覆盖到的函数和代码行所占的百分比,以及每个函数的调用次数。
还可以使用 PureCoverage 的其他窗口来进一步检查该程序的代码覆盖。要对当前运行的所有函数复审覆盖数据,并根据不同标准对其分类,请使用 Function List 窗口。如果提供了调试行信息,并且您是在代码行一级上监测函数,那么您就可以使用 Annotated Source 窗口逐行地分析特定函数的覆盖。如果您监测的是 Visual Basic 6.0 伪码程序,则无法得到逐行覆盖数据。要得到最详细的覆盖数据,请直接使用 PureCoverage 集成的 Visual Basic 6.0 监测 Visual Basic 6.0 项目。
PureCoverage 提供了几种只显示您感兴趣的数据的方法。例如,您可以按照模块名、源文件名或函数名来滤除数据。PureCoverage 在显示程序的覆盖详细资料之前,会自动从系统库和其他模块中滤除不重要的数据。在分析覆盖数据的同时,您可以控制所显示的数据量。您也可以使用 Show/Hide Columns 对话框只显示您当前感兴趣的信息。
默认情况下,PureCoverage 会在 Navigator 窗口中创建一个 Auto Merge 条目,这样就方便您跨越多次运行来分析程序的总体覆盖情况。您也可以自己合并某几次运行过程来分析覆盖情况。
监测覆盖的第三步也是最终步骤是重新运行测试,查看所作改动是否使得覆盖情况有所改进。
改动代码后,您可以重新运行更新过的程序并将新结果同前一次运行作比较。
使用 Navigator 窗口来跟踪您执行的各次运行过程。您可以将覆盖数据保存为一个 PureCoverage 数据文件 (.cfy),以用于进一步的分析或同其他 PureCoverage 用户共享。您也可以将数据保存为一个由制表符分隔的 ASCII 文本文件 (.txt),从而能够在 PureCoverage 之外(如在测试脚本中或在 Microsoft Excel 中)使用。您还可以将数据由 Coverage 浏览器窗口复制到文本编辑器中使用,或由 Function List 窗口复制到 Excel 中作进一步的分析。
要对各个发布版逐个跟踪代码覆盖,请将保存的 .cfy 文件同该产品的发布版一起存档。
提示:如果已将 PureCoverage 并入测试脚本,您就可以将覆盖数据自动保存为一个文本文件 (.txt)。有关详细信息,请查阅 PureCoverage 联机帮助索引中的 scripts。