2024年3月18日发(作者:)
IBM Rational Performance Tester 和 HP Mercury LoadRunner 的比较
脚本开发,场景构建与配置,性能监控,测试结果分析
张 营 (), 软件工程师, IBM
谷 林 (), 软件工程师, IBM
2008 年 3 月 28 日
本文概要介绍 IBM Rational Performance Tester (简称 RPT)和 HP Mercury
LoadRunner (简称 LR)两个性能 / 压力测试工具,主要从脚本开发,场景构建与配
置,性能监控,测试结果分析几个方面,对 LR 和 RPT 的使用做了详细的对比分析,
并根据 IBM Lotus Form 系统测试团队从 LR 到 RPT 的迁移的工作经历中总结了一
些 RPT 的一些实用技巧。对于那些需要从 LR 工具切换到 IBM RPT 的测试人员的
测试技术的平滑过渡,具有较强的借鉴意义。
1 概要介绍
LoadRunner 是一种适用于各种体系架构的自动负载测试工具,通过模拟实际用户的操
作行为和实施实时性能监测,来帮助用户排查和发现问题。相比于 RPT, LR 能支持更
广范的协议和技术,适应面很广,为用户的特殊环境提供特殊的解决方案。LR 的组件
很多,其中最核心的组件包括:
IBM Rational Performance Tester(简称 RPT)也是一款性能测试工具,适用于基于
Web 的应用程序的性能和可靠性测试。Rational Performance Tester 将易用性与深入
分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具
有支持数以千计并发用户并稳定运行的性能。
RPT 是针对 Web 应用程序的性能测试工具,基于 Windows 和 Linux 的用户界面,
使用基于树型结构的测试编辑器提供高级且详细的测试视图。 提供不同用户数的灵活
的模拟,支持将 Windows 和 Linux 用作分布式负载生成器,使用最小化的硬件资源
实现大型、多用户的测试。 支持使用自定义 Java 代码的灵活测试定制。
LR/RPT 的脚本的开发过程通常都是采用录制 + 定制的模式。首先通过对典型业务逻
辑的录制,完成脚本中的基本业务的框架,然后针对录制结果,通过参数化,数据关联,
增加逻辑控制等方式加强脚本的适应性来满足特殊的业务需求。
LR:直接生成面向过程的运行代码
LR 通过对基本业务的录制,VuGen 将生成的 Vuser 函数(也称作 LR API)并将他
们插入到脚本中。在实践中,LR 脚本就是由这样的 Vuser 函数和一些定制代码组成
的。对于基于 Web(HTTP/HTML) 的应用程序的测试,多数用户选择基于 C 语言的
LR 脚本,显然,这种 LR 脚本是一种面向过程的脚本,开发者可以对最终运行的脚本
进行直接的修改与调整。对于开发者来说,这种 LR 脚本的开发方式比较灵活。相应
地,这项工作,对于开发者的编程基础,尤其是 C 语言和 LR API 的了解,要求都比
较高。
RPT:录制结果经过“翻译”生成最终的运行代码
与 LR 不同,RPT 的脚本录制过程可以拆分成两步。如图 1 所示,第一步,RPT
Recorder on RAC 负责记录用户的所有 HTTP 请求,生成一系列的 Trace 文件。
Trace 文件记录了用户与服务器的交互过程。第二步,当用户完成脚本的录制过程之后,
RPT Test Generator 能够根据 Trace 文件“翻译”一遍,生成最终运行的测试脚本。
这种生成临时 Trace 文件的好处是用户可以随时依据该 Trace 文件生成新的测试脚
本,然后再对脚本进行测试场景定制,而不用对同一个操作过程做多次录制操作。
图 1. RPT 脚本的录制和生成架构
2.2 参数化
录制业务流程时,LR/RPT 生成一个包含录制期间用到的实际值的脚本。假设用户要使
用不同于录制内容的值执行该脚本的操作时,就需要用参数替换已录制的值。这被称为
脚本参数化。脚本的参数化可以简化脚本,同时增强脚本适用性。对于 LR 和 RPT 脚
本,参数化过程类似,都是定义参数,为参数指定属性或者数据源的过程。但是在 LR
中,只有函数中的参数才能参数化,除此之外,其他字符串不能进行参数化。
RPT 的参数化过程同样简单(以替换用户登录密码为例来说明),首先,选中需要进
行参数替换的请求页面,如图 2 所示,选中左侧的登陆请求页面。在其右侧的 Test
Data 中则显示与该请求页面相关的所有数据信息,脚本录制人员可以用其他值代替图
2 中的 password 变量。
图 2. RPT 脚本参数化
数据关联类似于参数化,可以简化脚本,适应企业应用中需要动态数据的情况。默认情
况下,LR 和 RPT 都能做到一些基本的数据关联,但是由于 HTTP 请求之间关联的
复杂性,需要用户手动做一些数据关联。数据关联包含三个步骤,一是定义哪个录制的
值需要被关联(替换);二是定义数据源。三是定义被关联的数据与数据源之间的关联
关系。
LR 的数据关联过程如下:lr_save_XXXX(value,dataSource)语句将数据源的值保存


发布评论