工具向导:使用 Rational PurifyPlus 工具执行测试套件(Windows 和 UNIX)
此工具向导描述如何在测试套件中使用 Rational PurifyPlus 工具来检测可能有害的内存错误和泄漏,以确保测试达到可接受的代码覆盖率级别,并使您注意到性能问题。
工具:Rational PurifyPlus
关系
主要描述

此工具向导适用于 Microsoft Windows 系统和 UNIX 系统。

PurifyPlus 工具包含 Rational Purify、Rational PureCoverage 和 Rational Quantify。

帮助手册图标要了解有关 PurifyPlus 工具的更多信息,请参阅 PurifyPlus 的 Getting Started 手册(Windows 版本或 UNIX 版本)。

帮助手册图标有关使用 PurifyPlus 工具的分步信息,请参阅工具的联机帮助。

可使用 PurifyPlus 工具执行以下操作:

  • 检测内存错误和泄漏(Windows 和 UNIX 上的 C/C++ 程序)。 使用 Purify 可查明被测试的应用程序中的错误和泄漏。
  • 监视代码覆盖率(Windows 和 UNIX)。 使用 PureCoverage 可显示测试中的差距,并提醒您进行回归测试。
  • 概要分析性能(Windows 和 UNIX)。 使用 Quantify 可提醒您:新的检入是否使性能降级。

使用 PurifyPlus 工具执行测试套件将产生以最大效率运行的无错误可靠代码。


工具步骤

要使用 PurifyPlus 工具实施测试:

1. 在 Purify 下运行程序来收集错误和泄漏数据(仅 C/C++ 程序) 

Purify 将检测被测试的应用程序及其使用的组件中的运行时错误,包括内存泄漏。它报告内存错误(如数组范围错误、通过摇摆指针访问、未初始化的内存读取、内存分配错误和内存泄漏),以便将这些错误在造成任何损失之前解决掉。 

首先将 Purify 合并到您的现有 Perl 脚本、批处理文件和 makefile 中。

  • 在 Windows 上,修改用于运行程序 <ProgramName>.exe 的命令行
     
    Purify /SaveTextData <ProgramName>.exe
     

  •  
  • 在 UNIX 上,修改编译与链接行:
     
    % purify -logfile=<filename> cc -g <program_name>.c

在 UNIX 上使用 /SaveTextData -logfile 选项会导致在没有用户界面的情况下运行 Purify,且当您从脚本运行程序时,会在程序终止时向文本输出文件发送错误和泄露数据。

自行检查此输出文件,或编写脚本来分析。可将文件中的错误和警告消息用作测试结果的额外条件。

如果安装了 PureCoverage ,则可通过添加选项 /Coverage(Windows)或添加 purecov purify(UNIX)收集同一运行的覆盖率数据。您还可以使用覆盖率数据查找尚未检查错误的代码部分。有关使用覆盖率数据的更多信息,请参阅此工具向导的步骤 2。

  • 使用 Purify API 可从您的程序内部控制数据收集。
  • Purify 还具有命令行选项,用于将测试数据保存为可使用 Purify 图形用户界面检查的二进制文件;工具向导“使用 Rational PurifyPlus 工具分析运行时性能”中探讨了此信息。

帮助手册图标有关更多信息,请查看 Purify 联机帮助索引中的以下主题:

  • running programs
  • error messages
  • options
  • API functions
  • saving data

2. 在 PureCoverage 下运行程序来监视代码覆盖率。 

PureCoverage 提供了精确的行级别和函数级别的代码覆盖率信息。请将 PureCoverage 用于您的夜间测试来确保测试与代码开发保持相同的进度。

首先将 PureCoverage 合并到您的现有 Perl 脚本、批处理文件和 makefile 中。

  • 在 Windows 上,修改运行您的程序或 Java 类文件、.jar 文件或 applet 的命令行,以包含 PureCoverage:
     
    对于 C/C++ 程序:Coverage /SaveTextData <ProgramName>.exe
    对于 Java 类文件:Coverage /SaveTextData /Java Java.exe <ClassName>.class
    对于 .NET 管理的代码程序:Coverage /SaveTextData /Net <ProgramName>.exe
     
    使用 /SaveTextData 选项将导致 PureCoverage 在没有用户界面的情况下运行,且当您通过脚本运行程序时,将在程序终止时把数据发送到文本输出文件中。

  •  
  • 在 UNIX 上,请修改编译和链接行:
     
    对于 C/C++ 程序:% purecov cc -g <program_name>.c
    对于 Java 类文件:% purecov -java java <class_name>
     
    使用 PureCoverage -export 选项可在程序退出后将覆盖率数据写入文本输出文件。

当您执行代码时,PureCoverage 将记录有关使用的行和函数的数据。您可以通过自己的程序调用 PureCoverage API 函数,以将数据保存在自己的代码内的特定位置,或仅为特定例程收集数据。当您退出程序时,将获得一组精确数据,指示测试覆盖了和未覆盖哪些行和函数。

您可以合并多轮运行的覆盖率数据,或将其保存在不同的文件中来分析覆盖率方面的变化。

使用脚本将当前数据与先前运行中收集的数据进行比较。如果覆盖率下降,则您的测试可能没有遇到新代码,或新代码可能引入了缺陷而导致大部分代码未被测试。请使用 Rational Robot 或 Rational Visual Test 之类的测试工具撰写用于执行新代码的测试用例。

:您可以使用 PureCoverage 图形用户界面检查二进制覆盖率数据文件。

帮助手册图标 有关更多信息,请查阅 PureCoverage 联机帮助索引中的以下主题:

  • running programs
  • options
  • API functions
  • saving data
  • comparing data

3. 在 Quantify 下运行程序来概要分析性能 

Quantify 为您的程序及其组件提供了一组完整且精确的性能数据,因此您可以在开发和测试周期的早期监视性能并确定回归。 

首先将 Quantify 合并到您的现有 Perl 脚本、批处理文件和 makefile 中。

  • 在 Windows 上,修改运行您的程序或 Java 类文件、.jar 文件或 applet 的命令行,以包含 Quantify:
     
    对于 C/C++ 程序:Quantify /SaveTextData <ProgramName>.exe
    对于 Java 类文件:Quantify /SaveTextData /Java Java.exe <ClassName>.class
    对于 .NET 管理的代码程序:Quantify /SaveTextData /Net <ProgramName>.exe
     
    使用 /SaveTextData 选项将导致 Quantify 不通过用户界面运行,且当您通过脚本运行程序时,将在程序终止时把数据发送到文本输出文件中。

  •  
  • 在 UNIX 上,请修改编译和链接行:
     
    对于 C/C++ 程序:% quantify cc -g <program_name>.c
    对于 Java 类文件:% quantify -java java <class_name>
     
    使用 Quantify -export 选项可在程序退出后将性能数据写入文本输出文件。

当您执行代码时,Quantify 将记录有关您程序性能的数据。您可以随时使用 API 函数暂停和重新开始数据记录,以此来限制对特定的代码部分的概要分析。还可以在代码执行中的特定时间保存数据,或仅为特定例程收集性能数据。当您退出程序时,Quantify 将生成程序性能的精确概要文件。

您可以撰写用于比较数据集并报告性能变化的脚本:

  • 性能下降可能表明最近检入的代码降低了程序的速度。 请分析收集的数据以找到性能不可接受的程序部分。
  • 标记的改进可能表明开发人员改进了他们的代码,或由于某种原因,您的测试已停止执行大部分代码。请检查您的覆盖率数据以了解是否仍然保持先前的覆盖率级别。

:Quantify 还可将测试数据保存为可使用 Quantify 图形用户界面检查的二进制文件;工具向导“使用 Rational PurifyPlus 工具分析运行时性能”中探讨了此信息。

有关更多信息,请查看 Quantify 联机帮助索引中的以下主题:

  • running programs
  • options
  • API functions
  • saving data
  • comparing data