UML软件工程组织

 

 

如何使用 Rational Performance Tester V7 中的新特性实现高效的性能测试

2008-06-26 作者:姜 世锋,张 雪莹,王 涛 来源:IBM

 
本文内容包括:
作为一款功能强大的性能测试工具,Rational Performance Tester (RPT) 提供了包括录制测试脚本、制定测试规划、执行测试、监控系统资源和统计分析性能数据等在内的诸多功能。最新版本7.0.1虽然只有微小的版本号上的变化,但相对于之前的版本却增加了许多非常实用的新功能,使性能测试实现起来更加轻松和得心应手。本文结合作者实际的使用经验和心得,详细介绍如何使用这些新功能实现高效的性能测试。

Rational Performance Tester(RPT)是 IBM 提供的用于性能测试的主要工具。它基于 Eclipse 平台,适用于大规模高压力的性能测试环境。作为一款功能强大的性能测试工具,Rational Performance Tester 提供了包括录制测试脚本、制定测试规划、执行测试、监控系统资源和统计分析性能数据等在内的诸多功能。最新版本 7.0.1 虽然只有微小的版本号上的变化,但相对于之前的版本却增加了许多非常实用的新功能,使性能测试实现起来更加轻松和得心应手。本文结合作者实际的使用经验和心得,详细介绍如何使用这些新功能实现高效的性能测试。

如何安装或升级到 RPT V7.0.1

RPT V7.0.1 可以通过三种方式进行安装和升级。

  1. 全新安装

RPT V7.0.1 支持全新安装。请依据拿到的介质,参照安装文档进行安装。

  1. 在线升级

运行 IBM Installation Manager,选择更新软件包,在更新软件包界面选择软件包组搜索更新。出现搜索结果后,选择要安装的更新。点击下一步,在线升级便开始执行。更新所需时间取决于本机和文件服务器间的网络传输速度。

图 1. 在线升级
在线升级
  1. 本地离线升级

在 IBM 的官方网站上下载 RPT V7.0.1 的软件更新包,解压到某一目录中。运行 IBM Installation Manager,点击文件,选择首选项。在存储库列表中增加更新包解压缩目录。回到 IBM Installation Manager 的主界面,选择更新软件包后开始更新原有的安装版本。

RPT V7.0.1 新增功能详解

RPT V7.0.1 中增加了许多实用的新功能,如可加入同步点,对虚拟用户进行同步和控制;分割或合并 HTTP 页面;在测试元素响应内容中搜索关联数据;重用测试脚本;在 Web Service 测试中手工创建 XML Call;在不同的测试结果间进行比较;调整测试结果的时间偏移;在测试结果中快速找到失败点;在测试脚本中对某个可替换值进行批量关联等。所有这些新功能都给性能测试工作带来了巨大的便利。

同步点

同步点是 RPT V7.0.1 中新增的一项高级功能,为性能测试增加了灵活性。在性能测试执行过程中,由于各个虚拟用户间的思考时间、页面响应时间等的个体差异,测试脚本中的各段操作时间也会不同。有时我们需要在所有虚拟用户同时达到某一点后执行某一操作。在这种情况下,借助同步点就可以轻松地达到这个目的。同步点可以让先达到这一点的虚拟用户暂停下一步动作,处于等待状态;当所有虚拟用户都到达同步点时才按照设置并发或按某一时间交错执行下一动作。在 RPT V7.0.1 中,同步点可以应用在性能测试脚本或测试调度中。但由于同步点主要用于控制脚本的执行,所以在测试调度中的应用要更多一些。

在性能测试脚本中加入同步点的方法:

  1. 打开性能测试脚本
  2. 选择需要加入同步点后的第一个 HTTP 页面,点击插入,然后选择同步点,如下图所示。
图 2. 在测试脚本中加入同步点
在测试脚本中加入同步点
  1. 在性能测试编辑中填写同步点的名称或者选择现有同步点列表中已经存在的同步点。

在测试调度中加入同步点的方法:

  1. 打开测试调度
  2. 选择需要加入同步点后的第一个元素,点击插入,然后选择同步点,如下图所示。
图 3. 在性能调度中加入同步点
在性能调度中加入同步点
  1. 在弹出的窗口中填写同步点的名称或者选择现有同步点列表中已经存在的同步点。
  2. 在测试调度中,可以对同步点的发布类型以及超时进行设置。
    如发布类型设置为同时,则表示当所有虚拟用户到达同步点之后,在同一时间开始执行后续操作。重新启动时间设为 0 秒时,当最后一个虚拟用户到达同步点,所有的虚拟用户立即同时开始执行后续操作。重新启动时间设为一定的数值,如 10 秒,则当最后一个虚拟用户到达同步点后 10 秒,所有的虚拟用户同时开始执行后续操作。
图 4. 设置同步点的发布类型为同时
设置同步点的发布类型为同时

如发布类型设置为交错 (Staggered),则需设定最短时间和最长时间。此时,虚拟用户在全部到达同步点后按照设定的时间开始执行后续操作。假如最短时间为 10 秒,最长时间为 60 秒,则当所有虚拟用户都到达同步点后,每一个虚拟用户会随机等待 10~60 秒后执行后续的测试脚本。

图 5. 设置同步点发布类型为交错
设置同步点发布类型为交错

分割和合并测试页面

在录制下来的测试脚本中,有些页面的分界可能会不符合实际的测试要求。此时就需要对性能测试脚本中的页面进行分割或合并。RPT V7.0.1 中提供了这两个实用性很强的功能。下面分别进行介绍。

页面分割

  1. 在性能测试脚本中展开需要分割的页面,选择需要分割的位置,右键选择在此处分割页面
图 6. 分割页面
分割页面
  1. 在弹出的分割 HTTP 页面窗口中选择移动位置和目的地,然后点击完成
图 7. 选择被分割页面的目标位置
选择被分割页面的目标位置
  1. 页面分割后诸如页标题、思考时间、延迟等元素 RPT 都会在页面合成时自动重新计算。
图 8. 自动重新计算分割后的页面元素
自动重新计算分割后的页面元素

页面合并

  1. 在性能测试脚本中选择两个或多个需要合并的连续页面,然后点击右键,并选择合并页面
图 9. 合并页面
合并页面
  1. 在合并 HTTP 页面的弹出窗口中选择目标页,点击完成。如果选择保留空页面,则目标页会包含两个页面合成后的页面,另一个页面只包含一个空页面。
图 10. 选择合并页面的目标位置
选择合并页面的目标位置
  1. 页面合并后,RPT 会自动重新计算页标题、思考时间、延迟等页面元素。
图 11. 自动重新计算合并后的页面元素
自动重新计算合并后的页面元素

在测试元素响应内容中搜索关联数据

RPT V7.0.1 增加了在测试元素响应内容中搜索关联数据的功能。这个功能使手工数据关联的过程更加便捷。为使用此项功能,在某个测试元素的相应内容中单击右键,选择查找 -> 在内容中

图 12. 打开响应内容搜索框
打开响应内容搜索框

在弹出的对话框中填入要查找的关联数据。每点击查找按钮一次,就会按照设定查找下一个符合条件的数据,直至查找完毕。

图 13. 设置查找条件
设置查找条件

重用测试脚本

重用测试脚本是提高测试效率的重要因素之一。RPTV7.0.1 的新增功能使得测试脚本的重用更为简单,减少了为此付出的工作量,提高了测试脚本的复用率。对于同一应用系统,我们有时需要在多套测试环境上进行测试。此时,我们不必在每套测试环境上重复录制测试脚本,而是通过重用测试脚本来完成。

  1. 打开测试脚本
  2. 展开测试变量,选择需要修改的变量。本例中为 l bpsrt298vm03.bto.ibm.com_6443
图 14. 展开测试变量
展开测试变量
  1. 在测试元素详细信息中的字段部分依照新测试环境的设置修改主机名称和端口号,然后保存。新的测试变量就被设定了。在本例中主机地址被修改为
    lbpsrt298vm04.bto.ibm.com,端口号被修改为 5300
图 15. 修改主机地址和端口号
修改主机地址和端口号

在测试脚本中查找数据关联及批量对某个值进行多处关联

在创建测试脚本的过程中,我们有时候需要查找整个脚本中某个数据关联值的所有出现位置。RPT V7.0.1 为此提供了良好的查找界面和准确的查找结果。

  1. 在测试导航器中,浏览到待编辑的测试,双击打开测试
  2. 展开 HTTP 页面,选择数据中需要查找的关联值,右键点击查找 -> 更多替换站点,并单击确认
图 16. 查找数据替换点
查找数据替换点
  1. 在弹出的搜索对话框中选择搜索的限制条件,然后点击搜索
图 17. 设定搜索条件
设定搜索条件
  1. 搜索结果页面显示所有包含此关联的页面。
图 18. 搜索结果
搜索结果

手工进行数据关联是编辑性能测试脚本的基本工作。在录制的测试脚本中,有些数据结构是需要被多处关联的。例如,在测试一个在线电子商店的用户交易过程中,您可能会准备用数据池来替换一个虚拟用户购买的某个商品。但为了让测试流程正确,在测试脚本中所有此商品的出现位置都必须用一个数据池里的变量进行替换。RPT V7.0.1 为此提供了一套崭新的一站式操作来完成这项功能。

  1. 在测试导航器中,打开待编辑的性能测试脚本。
  2. 定位到您想修改或者创建引用的这个值或者替换位置。
  3. 右键单击这个域,点击查找 -> 更多替换站点,并单击确认。在搜索窗口的测试搜索选项卡中,选择合适的选项。
图 19. 关联数据搜索选项
关联数据搜索选项
  1. 左键单击搜索,在结果视图中点击搜索选项卡可以浏览到搜索的结果。
  2. 用 Ctrl 加左键或者 Shift 加左键选中你要替换的匹配,并右键选择在数据源视图中替换。另一种方式是右键单击测试名来接受所有的匹配。
图 20. 打开数据源视图
打开数据源视图
  1. 数据源视图中,选择合适的选项卡来定义替换数据源,例如可以是数据池、事先设定好的引用或者是定制代码中的某个变量。
  2. 选定好数据源后,单击从一下位置替换
图 21. 打开数据源视图
打开数据源视图

这样就批量完成了所有需要替换的同值站点的数据关联工作,节省了不少的时间。

在 Web Service 测试中手工创建 XML Call

在某些情况下,您可能希望能够完全用手动的方式来创建 XML 调用测试元素,例如特定的 XML 远程调用(XML RPC)。幸运的是 RPT V7.0.1 中已经提供了这样灵活的方式帮助您生成 XML 调用测试元素。

具体的创建过程是这样的:

  1. 测试透视图中,单击文件 - > 新建 - > 其他 - > 测试 - > 测试资产 - > 新建 Web Service 测试
  2. 选择一个项目,然后在测试文件名中为测试输入一个名称。您输入的该名称为记录文件、测试文件以及其他必需文件的基本名称。可在标准导航器或 Java 包资源管理器中看到这些文件,它们带有用于区别的后缀。但是在测试导航器中只能看到简单测试名称。
  3. 单击完成
  4. 在测试编辑器中选择测试元素,单击添加,然后选择 XML 调用
  5. 单击 XML 调用测试元素,选择概述选项卡中进行 XML 调用内容的定义。这时你可以打开仅允许有效修改开关来辅助完成 XML 消息的智能化编辑。此处的规则限定是基于 Schema 的。
图 22. XML 调用概述选项卡
XML 调用概述选项卡
  1. 点击添加,可以添加一个元素,属性或者名称空间到 XML 中。
  2. 选择协议选项卡设置调用的协议类型。
    如果您测试的是 XML over HTTP 的话,首先选中 HTTP,其次选择相应的 HTTP 方法(POST, GET, PUT, 或者 DELETE)和版本,然后输入 URL,最后用添加编辑除去按钮进行Cookies 列表的编辑。
    如果您测试的是 XML over JMS,请选中 JMS。必要时可以单击更改来设置整个测试的传输协议,包括代理和 HTTPS 参数。
  3. 在测试元素详细信息中,单击更新返回,这将打开返回预览窗口,其中显示了将用于执行调用的数据。
  4. 在返回预览窗口中单击更新测试。这将执行 XML 调用并创建带有返回数据的消息返回元素。如果返回元素已经存在,则它的返回数据会被更新。消息返回测试元素使您能实现数据关联以及基于内容的验证点。

对测试结果进行比较

RPT V7.0.1 中增加了对测试结果进行比较的功能。这个新特性免除了过去所需的手动工作,使用起来相当简单。

RPT V7.0.1 支持两种类型的结果比较工作方式。一种是快速比较方式,适用于不同运行之间的比较。在性能调优的过程中,我们经常需要比较调优前后的系统性能变化以验证调优的正确方向和效果。基本操作过程如下:

  1. 测试导航器视图中用 Ctrl 或 Shift 键结合鼠标左键选中两个或更多个性能测试运行,然后右键菜单中选中比较,弹出比较结果窗口。
图 23. 打开比较结果窗口
打开比较结果窗口
  1. 在比较结果窗口中,如果需要可以调整比较结果的显示顺序 , 然后单击下一步
  2. 选择要显示的报告类别,比如 HTTP 报告下的性能报告
图 24. 选择报告类别
选择报告类别
  1. 单击完成,比较结果会显示出来。
图 25. 不同测试结果间的比较
不同测试结果间的比较

另一种是相对比较复杂的比较,例如比较性能测试中不同节点或运行时间范围内的报告。这时需要先确定一个基本运行(base run),然后选取与之比较的运行。具体操作过程如下:

  1. 测试导航器视图中右键选中基本运行,单击比较
  2. 在比较结果窗口,点击添加
  3. 向比较添加新的运行窗口内依次做如下动作:
    1. 展开选择运行树,定位到要添加的运行。
    2. 选择一个比较的位置。所有主机位置中包含了全部位置的结果。其他位置列表则是代表各用户组在不同远程位置上的运行。
    3. 选择一个比较的时间范围。缺省时间范围包含的从头至尾的运行结果。如果您的运行定义了多个时间范围,那么在列表中会显示出来供选择。
图 26. 向比较添加新的运行窗口
向比较添加新的运行窗口
  1. 单击确认
  2. 如果需要,再次点击添加并重复上面的操作可以添加更多的运行。
  3. 单击完成来获得比较报告。

这两种方式所生成的比较结果基本能满足我们平时的测试结果分析需求。

调整测试结果的时间偏移

RPT 运行结果中的响应时间细分和系统资源监视数据都是根据运行主机的系统时钟来记录。如果一个测试环境中包含多个时钟不同步的主机,这将导致这类性能测试报告的时间轴发生偏移。最佳的解决方案是对测试环境中的所有主机进行时钟同步,比如开启所有主机的互联网同步时钟客户程序并同步到一个共同的互联网时钟服务器。如果您无法采纳这种方案,那该怎么办呢?RPT V7.0.1 提供了一个新的途径来帮助您解决这个麻烦。RPT V7.0.1 支持用手工的方式更正测试运行后发现的时间偏移。典型的做法是,更正所有主机相对于工作台主机的时间偏移。具体方法如下:

  1. 性能测试运行视图中,右键点击需要更正时间偏移的主机,然后选择更正时间偏移
图 27. 根正性能测试报告的时间偏移
根正性能测试报告的时间偏移
  1. 选择移位方向。正向移位将使资源监视和响应时间细分数据向右移动,反向移位将使这些数据向左移动。
  2. 输入移位的数值,在小时、分钟和秒级上都可以随意调整。最后单击确认
图 28. 输入移位时间数值
输入移位时间数值

需要指出的是这种调整只会影响资源监视和响应时间细分两类数据。另外,采集这两类数据需要开启相应的开关设置选项。

在测试结果中快速找到失败点

在性能测试中无论是脚本的调试还是测试执行后对于测试结果的分析,都经常需要花一定的时间来诊断测试日志中记录的失败点存在与否。如果存在的话,接下来还将耗费更为可观的时间来进行错误定位和失败原因分析。在 RPT V7.0.1 中增加了集中管理判定失败点的功能,可以快速定位到某个失败点。

  1. 首先,在测试运行之前,设置好性能调度的测试日志记录等级。打开性能调度视图,在调度元素消息信息的测试日志选项卡中进行配置。例如为了降低日志数据量,减轻日志对 RPT 性能的负面影响,可以将记录等级调整到主要测试操作级别。另外在并发用户数量不是很高时,可以去除仅来自用户子集的样本信息选项保证日志判定数据的完整性。
图 29. 设置测试日志
设置测试日志
  1. 在性能调度或测试运行结束后,在测试导航器视图中右键单击测试运行,选择显示测试日志
  2. 测试日志视图中选择概述标签,其中的判定总结栏以饼图的方式展示本次运行的健康状态。
  3. 在存在判定失败点的运行中,左键单击饼图的错误比例区域,就会在判定列表栏显示出前 20 个失败点。
图 30. 判定总结饼图和判定列表
判定总结饼图和判定列表
  1. 左键单击判定列表中任意一个失败点,相应的事件页面会显示出来,其中提供了细节信息帮助分析失败原因。
图 31. 详细事件信息
详细事件信息

总结

RPT V7.0.1 作为 RPT V7.0 发布一年来最全面的一次升级,提供了众多的改进和新功能。这些改进不仅满足了迅速发展中的 SOA 性能测试的灵活性要求,而且还显示出 RPT 在帮助性能测试工程师处理日益复杂的性能测试问题上所作的坚实努力。其实新版本中还“隐藏”了不少贴心实用的功能,何不现在就开始亲自动手进行探索呢?

参考资料

学习 获得产品和技术
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号