IBM Rational助您轻松完成基于J2EE的Web应用系统的性能测试和性能优化(二)

 


  图九、数据池的创建过程和数据池内容编辑窗口


  通过以上描述,我们可以充分了解到RPT灵活、方便的测试脚本的参数化能力和上下文数据的智能关联能力,它们将会使性能测试员的性能测试工作变得更加轻松。

3.2.3 自定义Java脚本的使用

 在测试脚本中添加自定义的Java代码,主要是为了实现对消息返回内容的验证、为其后的消息构造动态消息数据或为了完成如验证、加解密、日志记录等的特殊任务。RPT通过内置Java代码执行引擎,提供在测试脚本中灵活插入客户化Java代码的能力。性能测试员可以通过右键菜单(如图六所示),方便地在测试脚本中添加定制Java脚本。

图十、在测试脚本中加入定制代码


  在加入定制代码过程中,性能测试员通常要根据需要为添加的Java类命名,然后,点击"生成代码"按钮,RPT可以自动生成测试脚本的框架;通过点击"查看代码"按钮,性能测试员可以对生成的代码进行编辑,实现所需的定制任务。自动生成的Java代码框架如下所示:

package test;
import com.ibm.rational.test.lt.kernel.logging.IKLog;
import java.util.Random;
/**
* @author Ning Dejun
*/
public class Random_Duration implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode {
public Random_Duration() {
}
/** * @see com.ibm.rational.test.lt.kernel.custom.ICustomCode#exec(IKLog, java.lang.String[])*/
public String exec(IKLog log, String[] args) {
/********
以下部分是测试员所加入的定制代码 *****************/
// Function Generates a Random Trip duration from 1 to 7 days
Random generator = new Random();
int iDuration = generator.nextInt(6)+1;
String sDuration = new Integer(iDuration).toString();
log.reportMessage("Random Trip Duration: " + sDuration);
return sDuration;
/*************************************************************/
}
}

 从代码中我们可以看到,性能测试员只要把要实现的逻辑写入exec()方法即可。定义了定制脚本之后,我们就可以在其后的测试脚本中使用自定义的代码,完成各种任务了。具体操作过程如图十一所示,RPT用桔黄色来标识变量的值来自定制的Java脚本。

图十一、在测试脚本中使用"定制代码"


3.3
建立性能测试负载模型,执行性能测试
  压力测试的关键是能够通过测试工具准确模拟被测系统在生产环境运行时的真实负载情况。在进行性能测试前,一般会由性能测试员和用户代表一起,根据性能测试计划中指定的的测试目标,制定测试用例,完成对应的负载模型分析,以便正确执行和实现性能测试目标。一般情况下,性能测试员使用《负载分析文档》来确定性能测试负载模型中要使用的各种变量,并定义变量值。通过它们来确定被测系统在生产环境中运行时,涉及的各种负载角色特征、每种角色要执行的最终用户业务功能(用例及其执行流程与条件)和对应工作量和容量,以便最恰当地模拟最终用户的负载情况。此外,负载模型中还应确定负载模拟持续的时间间隔、测试期间要改变的任何因素或变量,以及测试结果的评测方法。

 进行负载模型分析的关键,在于找出被测系统的主要角色,以及主要角色所进行的关键任务,从而从总体上了解被测系统是如何被各种不同用户使用和在怎样的负载情况下工作的。在进行性能测试前,性能测试员可以通过如下手段获得系统负载模型中的各种变量:

 1) 从最终使用人员获得操作情况,如经常进行的业务类型、业务操作的频率;

 2) 根据系统日志,可以获得每日所进行的各种业务类型和业务量;

 3) 通过和系统测试人员、操作人员、系统架构师充分沟通和配合,对被测系统作如下分析:

 定义系统主要角色,它在UML中被称作主角(Actor),确定每个主角的属性和工作简档,确定哪些能够唯一标识被测系统最终用户的各种特征的属性和变量(如打字速度、思考时间以及反复出现的因素)。
确定系统主要角色相关联的用例(Use Case),及每个用例中的主要操作流程,即用例中的必选流和主要可选流,明确每种角色通过执行用例来履行业务职责时,每种操作流程所用的工作量比例或耗时百分比。
确定评测指标和标准,用于评估既定性能目标是否已达成。评测指标通常包括响应时间限度或吞吐量。
最终形成如下面例子中的系统负载模型:

 
  在IBM Rational Performance Tester工具中,如图十二所示,可以使用性能调度(Schedule)完成构建负载模型的任务。它主要提供了以下测试控件,帮助测试员实现灵活的负载模型:

 1) 用户组:实现不同角色的模拟。在用户组中,可以加入各种测试脚本、随机选择器、循环、延时等完成与角色关联的各种典型业务操作流程的模拟。对用户组可以设置具体业务负载百分比,来模拟不同用户组对被测系统造成的负载比例;

 2) 随机选择器:实现用户组内部各种随机业务操作(用例及其事件流)所占不同负载比例的模拟。可以在随机选择器中加入不同的加权块,代表不同的业务操作(用例及其事件流),通过对其设置权重完成对其负载比例的模拟。

 3) 循环:完成用户的重复操作的模拟,例如用户在查询产品时,可能会对不同产品进行多次查询,这时性能测试员可以通过对测试脚本进行参数化和指定脚本的循环次数,来完成对应的负载模拟工作。

 4) 延时:用来模拟真实环境中,用户在进行不同业务操作中可能存在的思考和等待时间。

 通过RPT中的性能调度(Schedule),性能测试员就可以将上表所述的负载模型准确的模拟出来,如图十二所示。

图十二、RPT使用性能调度进行负载模型的模拟


  在完成负载模型以后,测试员就可以在"性能调度(Schedule)"的属性中动态随需指定想要运行的虚拟用户数,进行不同数量的虚拟用户负载情况的性能测试。

图十三、在RPT中指定不同数量的虚拟用户执行性能调度(Schedule


  测试员执行指定的性能调度(Schedule)时,如图十三所示,应该首先选择"运行",然后在弹出的运行配置管理窗口中,为Schedule创建新的配置。如图十四所示,在配置的属性中,性能测试员可以指定要执行的Scheudle,执行结果的存放项目和目录,以及是否该配置出现在运行或调试菜单中。

图十四、性能调度(Schedule)的运行配置


  从以上部分我们能够看到,RPT为性能测试员提供了通过鼠标点击就可实现的灵活负载模型建立能力,使得负载模型的建立变得更加的简单。

 3.4 轻松完成测试结果分析
  测试执行过程中,性能测试员可以通过自动弹出的测试报告窗口,方便的监控整个测试执行过程,并通过不同的报告页面实时察看测试结果信息。

 在进行测试结果分析时,首先性能测试员可以通过总体运行情况报告,如图十五所示,对整个测试运行过程有个一目了然的了解。

 图十五中上面的滚动条显示了整个测试执行的状态:

 正在初始化计算机
  正在运行
  正在进行执行历史数据传输
  完成
  图十五、总体运行情况报告


  图十五中四个柱状条分别显示:

 

 

 

 

 更多精彩内容请访问        www.17testing.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值