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