LoadRunner初级教程

LoadRunner初级教程

目录

引言....................................................................................................................- 2 -1.LoadRunner简介 ......................................................................................- 3 -1.1为什么要进行应用程序负载测试? .........................................................- 3 -1.2LoadRunner的组件有哪些? .................................................................- 3 -1.3了解LoadRunner的术语 ...........................................................................- 3 -

1.4负载测试流程是什么? .............................................................................- 4 -

2.LoadRunner使用概述................................................................................- 5 -2.1 使用VuGen开发脚本 ...............................................................................- 5 -2.2 使用Controller创建场景 ..........................................................................- 8 -2.3使用Analysis分析结果.................................................................... - 13 -附录................................................................................................................. - 14 -附录1 LR函数表 ....................................................................................... - 14 -

引言

本文主要面向初步接触LoadRunner的读者。本文针对测试目标是C脚本而编写。对LoadRunner软件,使用方法,特别是LoadRunner的三大应用组件,本文做了详细的介绍。希望对想入门LoadRunner的读者,能相对轻松的学会如何使用LoadRunner。

第一章举例说明为什么负载测试很必要,从而引出使用LoadRunner软件的目的。接着简单介绍LoadRunner软件,其中重点介绍LoadRunner软件的主要组件。然后介绍了LoadRunner软件的常用术语。最后提出负载测试的流程。

第二章是介绍如何使用LoadRunner软件,特别是三大组件,本文详细的说明使用方法,从而对如何使用LoadRunner软件,提供详实的信息。

1.L oadRunner简介

1.1为什么要进行应用程序负载测试?

现代的系统体系结构很复杂。在提供了空前强大的功能和灵活性的同时,这些系统也难以测试。单用户测试主要侧重于系统组件的功能和用户界面,而应用程序则侧重于整个系统的性能和可靠性。

例如,一个典型的应用程序测试方案的情况可能是星期一早上有1000 位用户同时登录到系统上。该系统的响应时间是多少?系统会崩溃吗?这些问题通过负载测试就能得到答案。

一个完整的应用程序性能测试方案需考虑以下问题:

1.应用程序是否能够很快地响应用户的要求?

2.应用程序是否能处理预期的用户负载并具有盈余能力?

3.应用程序是否能处理业务所需的事务数量?

4.在预期和非预期的用户负载下,应用程序是否稳定?

通过回答以上问题,负载测试量化更改业务指标所产生的影响,进而说明部署的风险,防止系统出现故障,改进系统性能,并提高或验证系统稳定性和可靠性。

LoadRunner是一种适用于各种体系架构的自动负载测试工具。它通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。LoadRunner 通过使用Vuser(虚拟用户)来代表真实用户。这些虚拟用户模仿真实用户的行为,即运行实际的程序。因为一台计算机上能运行许多Vuser,因此LoadRunner 大大减少了对硬件的要求。LoadRunner支持从一个单一控制点简单有效地控制所有的Vuser,并同时监控应用程序的性能,自动记录测试过程中的数据,便于进一步的性能分析和总结。

1.2LoadRunner的组件有哪些?

LoadRunner包含下列组件:

VuGen(虚拟用户生成器)。用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本)。

Controller(控制器)。用于组织、驱动、管理和监控负载测试。

Load Generator(负载生成器)。用于通过运行虚拟用户生成负载。

Analysis(分析器)。用于查看、分析和比较性能结果。

1.3了解LoadRunner的术语

表1-1介绍了使用LoadRunner中,常见和使用的三种术语,Vuser,场景和

事务。

表1-1 术语描述表

1.4负载测试流程是什么?

一般来说,负载测试由五个阶段:计划、脚本创建、场景定义、场景执行和结果分析,如图1-1所示。

图1-1 负载测试流程图

计划负载测试:定义性能测试的要求,如并发用户的数量、业务流程和所需相应时间。

创建Vuser脚本:使用VuGen最终用户的活动捕捉入自动脚本,或按业务流程编写脚本。

定义场景:使用Controller设置负载测试环境。

运行方案场景:通过Controller驱动、管理和监控负载测试。

分析结果:使用Analysis查看图和报告并评估性能。

2.L oadRunner使用概述

2.1 使用VuGen开发脚本

在本项目实际开发中,使用C Vuser。这种测试脚本不能录制,需要动手编写。其脚本开发的步骤如下:

1.编写测试脚本

新建一个用户单协议脚本(如图2-1所示),并使用C Vuser(如2-2所示)。确定后,进入主题框(如图2-3所示)。

图2-1 VuGen选择协议界面

图2-2 VuGen选择测试脚本类型界面

图2-3 VuGen主界面

VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action。其中vuser_init 和vuser_end 都只能存在一个,不能再分割,而Action 还能分成无数多个部分(如图2-3所示,新建Action XXX)。vuser_init主要用于全局变量定义,初始化变量,加载库文件等准备工作。Action用于模拟实际用户的动作。vuser_end可以直接return 0。

2.完善脚本

当录制完一个基本的用户脚本后,在正式使用前还需要完善测脚本,增强

脚本灵活性。例如用事务来度量特定的业务流程。其中,一般使用一对函数,lr_start_transaction和lr_end_transaction标记事务的开始和结束。附录1罗列常用的LR函数。这些函数,是LoadRunner的自定义函数,为测试需要可以灵活添加。

3.配置RUN-TIME Settings项

点击RUN-TIME Settings按钮(如图2-3所示),打开“Run-time Settings”

对话框。(如图2-4所示)。

图2-4 VuGen设置迭代次数界面

a)打开“运行逻辑”设置,选择“Run logic”节点,在此节点中,设置

迭代的次数,或连续运行过程中重复活动的次数。

b)选择“Pacing”节点。通过此节点控制迭代之间的时间,或将此时

间指定为随机时间。这将准确模拟用户在操作之间等待的实际时间设置。

但在随机时间间隔下,实际用户在重复操作之间等待恰好为60秒的情况是观察不到的。(如图2-5所示)

c)其他选择默认。

图2-5 VuGen设置步调界面

4.单机运行测试脚本并调试

单击Run按钮(如图2-3所示)。在下方Execution log框,查看是否有错误。如果有错误,将会有提示,双击提示提示信息,定位错误那一行。如果编译通过,就会开始运行,得到结果。

5.设置运行场景

到此为止,测试脚本准备完毕之后,就能用Controller设置运行场景, 描述在测试活动中发生的各种事件了。

2.2 使用Controller创建场景

LoadRunner的场景能够描述在测试活动中发生的各种事件。一个场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。

单击图2-3界面下的tools,选择下拉菜单的Create Scenario选项,进入图

2-6所示界面,选择测试虚拟用户数量,运行虚拟用户活动的Load Generator 机器,测试组和保存结果路径,单击OK,启动Controller,得到图2-7所示界面。

图2-6新建场景设置1

图2-7新建场景设置2

选择一种场景类型:选择Manual Scenario:完全手动的设置场景;Manual Scenario with Percentage Mode:该项只有在“Manual Scenario”选中的情况下才能选择。选择该项后,在场景中需要定义要使用的虚拟用户的总数,Load Generator machine 机器集,然后为每一个脚本分配要运行的虚拟用户的百分比;Goal-Oriented Scenario:在测试计划中,一般都包括性能测试要达到的目标。选择该项后,LoadRunner 基于这个目标,只要定义好目标即可自动创建一个场景。

推荐选择完全手动的设置场景。

选择要运行的脚本,双击脚本名添加,或者点击Add按钮。使用Remove按钮删除要运行的脚本。按OK键继续,进入场景设计选项卡,即如图2-8所示界面。

图2-8 Controller选项卡

场景设计选项卡包括两个主要部分:场景计划和场景组。点击Edit schedule 按钮,设置场景计划,如图2-9所示界面。在选项卡中,能给场景计划命名,开始时间设置等精确设计用户的行为。在“场景组”选项卡,用来配置Vuser 组。在此部分中,创建代表系统典型用户的各种组,即定义这些典型用户运行的操作、运行的Vuser数以及Vuser 运行时所用的计算机。设置完毕,点击Start Scenario 按钮,开始负载测试。

图2-9编辑场景计划界面

Controller运行卡(如图2-10所示),用来监测和查看测试过程。下面介绍各个部分的作用和操作。

图2-10检测运行过程界面

1.场景组:位于左上窗格中,用来查看场景组中的Vuser 的状态。使用该

窗格右侧的按钮能启动、停止和重置场景,查看单个Vuser 的状态,并

且手动添加更多的Vuser,从而增加场景运行期间应用程序上的负载。

2.场景状态:位于右上窗格中,查看负载测试的概要,其中包括正在运行

的Vuser 数以及每个Vuser 操作的状态。

3.可用图树:位于中部左侧窗格中,列出LoadRunner 所有可查看的图。

如果需要打开一个图,请在该树中选择该图,然后将其拖动到图查看区

域中。

4.图查看区域:位于中部的右侧窗格中,用于自定义显示以查看一至八个

图(“View” > “View Graphs”)。

5.图例:位于底部窗格中,用于查看选定图中的数据。

如果第一次运行该场景,Controller 将启动场景。结果文件自动保存到负载生成器的临时目录中。如果要重复此测试,将提示是否覆盖现有结果文件(如图2-11所示)。单击“否”,指定新的结果目录。对每个结果集输入唯一且有意义的名称,这是因为在分析图时,可能希望重叠几个场景运行的结果。

图2-11提示界面

2.3使用Analysis分析结果

选择图2-10的Analysis菜单,点击下拉菜单中Analysize results,启动Analysis 程序,得到如图2-12的界面。软件将生成图和报告。图和报告提供了有关系统性能的重要信息,使用这些图和报告,能轻松的查看系统性能指标(如用户终端的事务响应时间,事务的平均响应时间,网络和服务器的响应时间等),从而分析系统性能,得到提高系统性能所需的改进。

图2-12 Analysis界面

附录

附录1 LR函数表

lr_start_transaction 为性能分析标记事务的开始

lr_end_transaction 为性能分析标记事务的结束

lr_rendezvous 在Vuser 脚本中设置集合点

lr_think_time 暂停Vuser 脚本中命令之间的执行

lr_end_sub_transaction 标记子事务的结束以便进行性能分析

lr_end_transaction 标记LoadRunner事务的结束,并用四种模式表示以

哪种模式结束

Lr_end_transaction("trans1",LR_AUTO/LR_PASS/LR_FAIL/LR_STOP);

lr_end_transaction_instance 标记事务实例的结束以便进行性能分析

lr_fail_trans_with_error 将打开事务的状态设置为LR_FAIL 并发送错误消息

lr_get_trans_instance_duration 获取事务实例的持续时间(由它的句柄指定)

lr_get_trans_instance_wasted_time 获取事务实例浪费的时间(由它的句柄指定)

lr_get_transaction_duration 获取事务的持续时间(按事务的名称)

lr_get_transaction_think_time 获取事务的思考时间(按事务的名称)

lr_get_transaction_wasted_time 获取事务浪费的时间(按事务的名称)

lr_resume_transaction 继续收集事务数据以便进行性能分析

lr_resume_transaction_instance 继续收集事务实例数据以便进行性能分析

lr_set_transaction_instance_status 设置事务实例的状态

lr_set_transaction_status 设置打开事务的状态

lr_set_transaction_status_by_name 设置事务的状态

lr_start_sub_transaction 标记子事务的开始

lr_start_transaction 标记事务的开始

Lr_start_transaction("trans1");

lr_start_transaction_instance 启动嵌套事务(由它的父事务的句柄指定)

lr_stop_transaction 停止事务数据的收集

lr_stop_transaction_instance 停止事务(由它的句柄指定)数据的收集

lr_wasted_time 消除所有打开事务浪费的时间

lr_get_attrib_double 检索脚本命令行中使用的double 类型变量

lr_get_attrib_long 检索脚本命令行中使用的long 类型变量

lr_get_attrib_string 检索脚本命令行中使用的字符串

lr_user_data_point 记录用户定义的数据示例

lr_whoami 将有关Vuser 脚本的信息返回给Vuser 脚本

lr_get_host_name 返回执行Vuser 脚本的主机名

lr_get_master_host_name 返回运行LoadRunner Controller 的计算机名

lr_eval_string 用参数的当前值替换参数

lr_save_string 将以NULL 结尾的字符串保存到参数中

lr_save_var 将变长字符串保存到参数中

lr_save_datetime 将当前日期和时间保存到参数中

lr _advance_param 前进到下一个可用参数

lr _decrypt 解密已编码的字符串

lr_eval_string_ext 检索指向包含参数数据的缓冲区的指针

lr_eval_string_ext_free 释放由lr_eval_string_ext 分配的指针

lr_save_searched_string 在缓冲区中搜索字符串实例,并相对于该字符串实例,将该缓冲区的一部分保存到参数中

lr_debug_message 将调试信息发送到输出窗口

lr_error_message 将错误消息发送到输出窗口

lr_get_debug_message 检索当前消息类

lr_log_message 将消息发送到日志文件

lr_output_message 将消息发送到输出窗口

lr_set_debug_message 设置调试消息类

lr_vuser_status_message 生成带格式的输出,并将其写到ControllerVuser 状态区域

lr_message 将消息发送到Vuser 日志和输出窗口

lr_load_dll 加载外部DLL

lr_peek_events 指明可以暂停Vuser 脚本执行的位置

lr_think_time 暂停脚本的执行,以模拟思考时间(实际用户在操作之间暂停以进行思考的时间)

lr_continue_on_error 指定处理错误的方法

lr_continue_on_error (0);lr_continue_on_error (1);

lr_rendezvous 在Vuser 脚本中设置集合点

TE_wait_cursor 等待光标出现在终端窗口的指定位置

TE_wait_silent 等待客户端应用程序在指定秒数内处于静默状态

TE_wait_sync 等待系统从X-SYSTEM 或输入禁止模式返回

TE_wait_text 等待字符串出现在指定位置

TE_wait_sync_transaction 记录系统在最近的X SYSTEM 模式下保持的时间

相关主题
相关文档
最新文档