loadrunner最适合初学的测试范例

目录

一、基础

1、术语

2、组件与测试流程

二、生成脚本

1、应用程序要求

2、录制脚本

3、脚本优化

3.1 关联

3.2、参数化

三、运行负载测试

1、生成负载

2、运行负载测试

3、运行视图概述

四、分析结果

1、Analysis 窗口概述

2、分析窗口数据

2.1、查看事务平均响应时间

2.2、研究 Vuser 的行为

五、一些体会


一、基础

1、术语

➤场景:场景是一种文件,用于根据性能要求定义在每一个测试会话运行期间发生的事件。

➤Vuser:在场景中,LoadRunner 用虚拟用户或 Vuser 代替实际用户。Vuser 模拟实际用 户 的操作来使用应用程序。一个场景可以包含几十、几百甚至几千个 Vuser。

➤Vuser 脚本:Vuser 脚本用于描述 Vuser 在场景中执行的操作。 ➤事务:要度量服务器的性能,需要定义事务。事务表示要度量的最终用户业务流程。

2、组件与测试流程

LoadRunner 包含下列组件:

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

➤Controller:用于组织、驱动、管理和监控负载测试。 ➤负载生成器:用于通过运行虚拟用户生成负载。 ➤Analysis:有助于查看、分析和比较性能结果。
➤Launcher:为访问所有 LoadRunner 组件的统一界面。 负载测试通常由五个阶段组成:计划、脚本创建、场景定义、场景执行和结果分析。 ➤计划负载测试:定义性能测试要求,例如并发用户的数量、典型业务流程和所需响应时间。 ➤创建 Vuser 脚本:将最终用户活动捕获到自动脚本中。

➤定义场景:使用 LoadRunner Controller 设置负载测试环境。 ➤运行场景:通过 LoadRunner Controller 驱动、管理和监控负载测试。 ➤分析结果:使用 LoadRunner Analysis 创建图和报告并评估性能。

二、生成脚本

1、应用程序要求

应用程序 Mercury LoadRunner8.1 自带的基于 Web 的旅行代理系统 Mercury Tours。用户可以 连接到 Web 服务器、搜索航班、预订航班并查看航班路线。

1.确保示例 Web 服务器正在运行。安装和重新启动 LoadRunner 后,Web 服务器将自动启动。 如果该服务器没有运行,请依次选择“开始”> “程序”> “Mercury LoadRunner”>“示例”>“Web”> 启动 Web 服务器”。

2.打开MercuryTours应用程序。选择“开始”>“程序”>“MercuryLoadRunner”> “示 例”> “Web”> “Mercury Web Tours 应用程序”。将打开浏览器,其中显示 Mercury Tours 的起 始页。

3.登录到 Mercury Tours。成员名:jojo,密码:bean

假设您是负责验证应用程序是否满足业务需求的性能工程师。项目经理向您提出了一些条件:

1 Mercury Tours 必须在不超过 90 秒的响应时间内,处理 10 起并发航班预订业务。
2 Mercury Tours 必须在不超过 120 秒的响应时间内,处理 10 起并发的旅行代理要求的航线

检查业务。
3 Mercury Tours 必须在不超过 10 秒的响应时间内,处理 10 起代理要求的登录和注销系统任务。本教程将完成建立负载测试的整个流程,以验证应用程序是否满足每项业务要求,从而决定是否可以发行该应用程序。 计划了负载测试之后,下面开始创建脚本。

2、录制脚本

1.启动 LoadRunner,打开 VuGen 在 Launcher 窗口中,单击“Load Testing”选项卡,单击 “Create/Edit Scripts”。将打开 VuGen 的开始页。

2.单击“New Vuser Script”,在弹出的脚本类型选项卡中,选择“web(http/html)”,确定后 跳转到 Introduction to Script Creation 向导窗口(如下图)。

3.点击左边 Recording 选项下的 Record Appliction,在跳转出的界面中选择 按钮,弹出 开始录制窗口,在“URL”地址框中,键入 http://localhost:1080/MercuryWebTours/。在“Record into Action”框中,选择“Action”。单击“OK”。自动打开浏览器 和浮动工 具栏:

其中,点击红色按钮开始录制。

4.登陆网站,输入用户名 jojo,密码 bean。登陆后点击左边的 Fights,打开 Find Flight 页面, 将 Arrival City 改为 Los Angeles,左下的 Seating Preference 选择 Aisle(过道),点击 Continue,接下来的页面继续 Continue,在接下来的 Payment Dentails 页面,输入 Credit Card:12345678, Exp Date:11/27,单击 Continue 继续,显示预定完成页面。

5.单击左边的“Itinerary”查看路线。
6.点击“Sigin off”退出系统。点击悬浮条上的停止按钮。

以上即完成了一次登录、预定航班、检查路线、注销的事物流程。选择菜单栏 View 中的 Tree View和 Script View 都可以查看录制好的脚本。

3、 运行脚本 录制好脚本之后,在运行之前先对运行做一些设置。

选择侧边栏中第二个选项 Replay 中的 Verify Replay,打开运行脚本向导页面。可以在 Open runtime-settings 中设置运行时的一些行为。

运行时设置可以模拟各种用户活动和行为。它们包括(列举部分): ➤ Run Logic:用户重复一组操作的次数,这里改为 2。

Pacing:重复操作前等待的时间
➤ Log:希望在测试期间收集的信息级别
➤ Think Time:用户在各步骤之间停下来进行思考的时间,通过设置随即思考时间可以模拟不

同熟练操作程度的用户。这里按照上图设置。
➤ Speed Simulation:使用不同网络连接 (例如,调制解调器、 DSL 和电缆)的用户
➤ Browser Emulation:模拟用不同浏览器查看其应用程序性能的用户。 配置好之后,可以点击 Start Replay 开始回放。回放后生成回放日志,可以点击上面菜单 View

中的 OutPut Window 查看。

3、脚本优化

3.1 关联

创建脚本后,可以通过 VuGen 运行该脚本来对其进行验证。有时候,尽管操作的录制已成功, 但相同操作的播放却会失败。因为许多应用程序使用动态值,每次使用该应用程序时这些值都会更 改。例如,某些服务器为每个新会话分配唯一的会话 ID。尝试回放录制的会话时,应用程序将创建 与已录制的会话 ID 不同的新会话 ID。LoadRunner 通过关联解决此问题。关联将把会更改的值(在 本例中为会话 ID)保存为参数。运行仿真时,Vuser 并不是使用录制的值,而是使用服务器为其分 配的新会话 ID。

要演示常见的播放失败,需要修改 Mercury Tours 应用程序中的设置。此设置将通知 Mercury Tours Web 服务器不允许重复会话 ID。

1 打开“Mercury Tours”。选择“开始” >“程序” > “Mercury LoadRunner” >“示例” > “Web” > “Mercury Web Tours 应用程序”。将打开浏览器,其中显示 Mercury Tours 的起始页。

2 更改服务器选项。在 Mercury Web Tours 起始页上单击 “administration”链接。选择第 3 个复选框,其标题为:Set LOGIN form's action tag to an error page(将 LOGIN 表单的操作 标记设置为错误页)。滚动到该页的底部并单击 “Updata”。滚动到该页的底部并单击 “Return to the Mercury Tours Homepage”链接。此设置将通知服务器不允许重复会话 ID。

3 关闭浏览器。此时,运行刚刚录制的脚本,会出现错误(如下图),点击 Show and resolve dynamic server values,会打开一个新的页面,下面会显示可以关联的选项,选中后右键选择 “correlation”,就完成了关联,关联成功会有一个绿色的勾。

3.2、参数化

在模拟中,跟踪一位预订航班并选择 Aisle 座位的用户。但是,在实际生活中,不同的用户会 有不同的喜好。因此,要改进测试,需要检查当用户选择不同座位首选项(过道、窗口或无)时, 预订是否可以正常工作。

要达到此目的,需要参数化脚本。用参数代替录制值 Aisle。参数值放在一个参数文件中,运 行脚本时, Vuser 将从参数文件中取值(aisle、 window 或 none),从而模拟真实的旅行代理环境。

1.找到要更改数据的部分。选择 “View” > “tree view”进入树视图在测试树中,双击

 将打开如下对话框。右列中的 ABC 图标表示参数为常量。

2.创建参数。单击 第七行 Aisle 旁边的 ABC 图标。将打开“选择或创建参数”对话框。其 中“Parameter”填为 seat,确定。VuGen 将使用参数图标替换 ABC 图标。

3.为参数制定一些示例值。单击 {seat} 旁边的参数图标。从弹出菜单中选择 “参数属性”。 将打开“参数属性”对话框。添加两个 Row:Window 和 None 注意,值不区分大小写,确定。

这样就完成了参数化。运行用户脚本,会发现迭代器第一次选择了 Aisle,第二次选择了 window。

三、运行负载测试

1、生成负载

1.添加负载生成器。打开 Controller 运行视图。选择位于屏幕底部的“Design”选项卡(如上 图),将虚拟用户的数量改为 8(可以自定义)。

2.单击 “Generator” 按钮,将打开“负载生成器”对话框,显示 localhost 负载生成器计算 机的详细信息(如下图)。此处使用本地计算机作为负载生成器 (默认情况下包含在场景中)。 localhost 负载生成器的状态为关闭。这表示 Controller 未连接到负载生成器,可以点击 connect 变为准备状态,完成后点击 Close。

3.点击 design 面板上的 ,打开如下窗口:其中可以设置同时加载负载还是每 隔一段时间加载一定负载,按如下图设定好(每隔 30 秒加载两个虚拟用户)。 

2、运行负载测试

1.打开 Controller 运行视图。选择位于屏幕底部的“Run”选项卡。

2.启动场景。单击 按钮开始运行测试。

如果第一次运行, Controller 将启动场景。结果文件自动保存到负载生成器的临时目录中。 如果是重复此测试,将提示覆盖现有结果文件。

3、运行视图概述

打开 LoadRunner,点击 Run LoadTests,打开 Controller ,窗口中的 “运行”选项卡是用来 管理和监控测试的控制中心。“运行”视图包含五个主要部分:(下图显示一个汉化的界面,没有汉 化的界面分布和功能是一样的)。

➤场景组:位于左上窗格中,使您可以查看场景组中的 Vuser 的状态。使用该窗格右侧的按钮 可以启动、停止和重置场景,查看单个 Vuser 的状态,并且可以手动添加更多的 Vuser,从而增加 场景运行期间应用程序上的负载。

➤场景状态:位于右上窗格中,使您可以查看负载测试的概要,其中包括正在运行的 Vuser 数

 以及每个 Vuser 操作的状态。
➤可用图树:位于中部左侧窗格中,使您可以查看 LoadRunner 图列表。要打开图,请在该树

中选择一个图,然后将其拖动到图查看区域中。 ➤图查看区域:位于中部右侧窗格中,使您可以自定义显示以查看一至八个图(“视图” > “查

看图” )。
➤图图 :位于底部窗格中,使您可以查看选定图中的数据。

四、分析结果

1、Analysis 窗口概述

打开“Mercury LoadRunner Launcher”窗口,选择 Analyze load test。,打开一个 Analysis 会话文件,就出现了 Analysis 窗口。

Analysis 窗口包括下列三个主要部分:

➤ 图树:在左窗格中,Analysis 将显示可以打开查看的图。您可以在此处显示打开 Analysis 时未显示的新图,或删除不再想查看的图。

➤ 图查看区域:在右窗格中显示图。默认情况下,当打开一个会话时, Analysis 概要报告将 显示在此区域。

➤ 图例:下部,使您可以查看选定图中的数据。

2、分析窗口数据

因为由于每个人的电脑配置不同,场景也不一样,生成的 Analysis 会话文件也不一样,所以下面说的各项作为参考。实际运行的数据可能不一样,但是每项的含义一致。

2.1、查看事务平均响应时间

上图的事务概要中,我们来关注一下 check_itinerary 事务,90%的响应时间是 65.744 秒。 该数值是事务平均响应时间 (32.826) 的两倍,说明对于发生的大多数此种事务都需要较高的响应 时间。还能看到该事务失败了 28 次。

点击该事务的名称,打开平均响应时间图表如下:注意,check_itinerary 事务的平均响应时 间显著波动,在场景运行了 2:56 (分钟: 秒)时达到峰值 75.067 秒。

在性能稳定的服务器上,事务的平均响应时间会比较平稳。注意,在图的底部,登录、注销、 book_flight 和 search_flight 事务的平均响应时间都比较平稳。

2.2、研究 Vuser 的行为

1.在图树中单击 ,将在图查看区域中打开正在运行的 Vuser 图(如下图)。可以看到在场景运行的开始,正在运行的 Vuser 处于逐渐加压状态。接着,70 个 Vuser 同时运行了 3 分钟,之后开始逐渐减压。

2.筛选该图,观察所有 Vuser 同时运行的时间片。右键单击该图并选择 “Set Filter/Groud By”,弹出筛选窗口。点击“Scenario Elapsed Time”这一项的“Value”中的向下箭头,选择时间 范围为从 1:30(分钟: 秒)至 3:45 (分钟: 秒)。现在,正在运行的 Vuser 图仅显示场景运行中 1:30(分钟: 秒)和 3:45 (分钟: 秒)之间运行的 Vuser。所有其他的 Vuser 已全被筛选出去。

3.关联两个图,把两个图放在一起,以查看一个图的数据对另一个图的数据所产生的影响。这 称为将两个图关联。将正在运行的 Vuser 图和平均事务响应时间图相关联以比较其数据,以查看大 量的 Vuser 对事务的平均响应时间产生的影响。右键单击正在运行的 Vuser 图并选择“Merge Graphs”,弹出窗口(如下图),设置好之后确定。现在,正在运行的 Vuser 图和平均事务响应时间 图在图查看区域中表示为一个图,即“Running Vusers-Average Transaction Response Time”(如 下图)。

 

4 .分析关联后的图。在该图中可以看到随着 Vuser 数量的增加, check_itinerary 事务的平 均响应时间也在逐渐增加。换句话说,随着负载的增加平均响应时间也在逐渐地增加。运行 64 个 Vuser 时,平均响应时间会突然急速增加,可以说服务器崩溃了。同时运行的 Vuser 超过 64 个时, 响应时间会明显开始变长。

五、一些体会

初步接触 LoadRunner,并且对它自带的服务器和软件系统进行了测试。走了一遍测试的流程, 但是其中很多问题还不深入,比如在虚拟脚本的编写、运行测试过程中观察数据的选取,比较监测 的结果这些问题上,没有什么项目经验,认识只停留在表面。

作为一个负载测试工具,LoadRunner 使用不难,难的是在实践过程中的经验总结。比如哪些行 为定义成一个事务来监测;虚拟用户多少个,怎么加载才能测出系统的瓶颈,怎么分析生成的负载 测试数据等。所以在后续的工作中,要测试不同类型的系统,模拟不同类型的虚拟用户,定义不同 的场景,总结经验才能提高。

附:51testing 论坛上建议的性能测试学习线路图

纵向划分 3 颗子树:vugen,controller,monitor。优先学习 vugen 脚本开发以及调试。横向划 分为 2 层:基础知识以及高级应用。

 

 

 

 

posted @ 2023-11-29 11:01  雷神lyx  阅读(38)  评论(0)    收藏  举报  来源