LoadRunner基本实例教程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
负载压力测试-LR工具
说明
此PPT文档,只是对负载压力测试 做一个简单的介绍,并对MI的 LoadRunner工具的使用做个入门级的讲 解。
负载压力测试的基本概念
当一个应用程序在少量用户同时使用的 时候,程序可能正常运行,但是当大量 用户同时使用的时候,可能就会出现功 能失效、性能衰减、甚至系统崩溃。 所以我们压力测试做的就是测试在什么 样的条件下系统的性能变得不可接受。
如图
示例
选择协议
C/S(Client/Server)结构的win32应用 程序一般可以选用winsocket协议。 B/S(Browers/Server)结构的通过浏览 器浏览数据的一般选用Web(Http/Html) 协议。
选择好协议后就开始录制脚本了 。以 winsocket为例; 我们要调取客户端的应用程序。(默认设 置下)点击OK按钮后就开始录制了。 如图:
如何调试脚本?
录制好脚本,并参数化后,我们还得确 定脚本是能正常运行的,是可以模拟用 户操作的,我们脚本很少能录制好后, 参数化好脚本后回放时就没有错误的, 出错时我们需要调试,LR的编译器提供 调试脚本的功能。我们可以调试和优化 我们的脚本。
设ቤተ መጻሕፍቲ ባይዱ断点
LR也是可以设置断点的,在需要设置断 点的语句前按F9快捷键,断点就设置好 了,程序运行到断点语句后会暂停,这时 我们可以用F10单步执行程序.
当新增完成后,我们要结束事务;
Winsocket协议的脚本节选如下:
lrs_send("socket1", "buf7", LrsLastArg); /* * 进入新增界面 */ lrs_receive("socket1", "buf8", LrsLastArg); lrs_send("socket1", "buf9", LrsLastArg); lrs_receive("socket1", "buf10", LrsLastArg); lrs_send("socket1", "buf11", LrsLastArg); /* * 进入查询界面 */ lrs_receive("socket1", "buf12", LrsLastArg); lrs_send("socket1", "buf13", LrsLastArg);
Data.ws文件是winsocket协议下脚本 保存原始数据的地方。我们想要做关联, 首先就是要在recv buf中找到服务器返回 的动态数据,下图为在Tree View下,快 照中找到动态数,将其参数化后,使得 以后测试中,send buf中使用截获的数 据。
我们如果想知道偏移量,那么点击go to offset,如下图所示:
测试环境、工具、数据准备
测试环境准备 我们实验室的测试环境与客户的实际 环境是有较大的不同,我们的网络,计 算机硬件软件都无法做到和客户完全相 一致。我们的软件在客户那功能不正常, 也许就是因为客户安装 了某个不知名的 其他软件造成的。我们的压力测试需要 遵循一个基本的原则:
搭建测试环境的基本原则
我们可以看到winsocket协议录制的 脚本都是lrs_receive和lrs_send语句。我 们在录制的时候就加上注释,我们就知 道大概这些buf记录的是些什么内容。方 便我们阅读,也使接下来要做的查找动 态数据和参数化脚本来得容易些。
查找动态数据(关联)
我们的系统经常会有些动态的数据,如新增 记录之前系统会给一个流水号,我们的脚本在 录制的时候捕获了这个号码,但是每次新增流 水号肯定不同,拿脚本中的原始流水号去新增 记录,肯定违反数据表的主键约束 。如果我们 在receive的包中找到那个流水号,并把它作为 参数给send包,那么问题就迎刃而解了,这就 是关联(其实也是一种参数化)
注意
注意:只能向 Action 部分 (而不是 init 或 end 部分)添加集合点。
录制脚本的时候会产生如下图所示的控制面板:
小建议
小建议5
很多朋友录制脚本的时候,会使用LR 的默认设置,把脚本录制到Vuser_init中, 等录制完成后,再将脚本剪切粘贴到 actions和Vuser_end部分中去。这是个不 可取的做法,我们在录制的过程中,就 应该通过上图所示的控制面板调节我们 录制的操作到脚本的哪个部分。
启动Vugen
可以从开始菜单中启动Vugen,选择‘开 始’->‘程序’->‘LoadRunner’- >Virtual User Generator。 打开Vugen后默认设置会弹出对话框让选 择录制协议,新建Vuser脚本。如果想每 次启动时不再出现那该死的对话框,可 以在tools->General Options里面设置。 如图:
如果要建立关联的话,点击create Parameter.它会将send buffer中 的相同字符串自动参数化,使其与该recv buffer中的值相同,如 图:
参数化
在脚本中,框选要参数的字符,右击 鼠标,选择替换为参数就可以了。用登 录时参数化用户名和密码的例子来说明 如何同步两个参数,即一一对应:
测试工具的安装-LR安装
具体请看LR的安装手册吧,在这里只 是提提个小建议,请将LR安装包路径和 安装路径都改成全英文的,很多朋友安 装不上LR的原因很大部分是因为路径中 有中文字符。
系统配置
数据的准备(小建议4)
很多朋友经常忽略数据的重要性,我 们做压力测试的时候需要有大量的数据, 比如我们测试一个查询操作,数据库表 里就几行记录,这样的测试是失效的。 因为该数据表没有建任何索引话,一个 全表扫描也花不了什么时间,如果有大 量数据的话,索引覆盖的问题都能暴露 出来。
如图
为什么录制后的没有产生脚本?
答:1,选择协议错误。 2,如果服务器和vugen在同一台电脑上的话,必须更改设置,因为 在默认下是排除本地主机和Dns端口的套接字的。在Tools- >Recording Option下,如图:
Vuser的脚本
对于Vuser脚本,我们必须要了解它的 组成和事务、集合点、检查点的概念。 以下的内容将对这些概念和具体的使用 做阐述。
•测试脚本的录制、编写与调试
制作脚本如下步骤: 1) 脚本录制; 2) 查找动态数据(关联); 3) 参数替换; 4) 布置检查点; 5) 单脚本回放; 6) 脚本加压回放;
利用vugen制作脚本
LR用Vuser(虚拟用户)来代替实际的用户。Vuser执行的操作是 用Vuser脚本来描述的。 Vuser脚本生成器(也称Vugen)是LR用于开发Vuser脚本的主要 工具。Vugen通过录制客户端与服务器之间的活动来录制脚本。 例如:在数据库应用程序中,测试工具的脚本生成器(Vugen) 会监控数据库的客户端,并跟踪发送到数据库服务器和从数据库 服务器接收的所有请求。 当Vuser与服务器直接通信时,不需要在用户界面中耗费系统资源, 这样就可以在一个工作站中同时运行大量Vuser,进而可以使用很 少的测试计算机来模拟非常大的服务器负载。
事务和集合点
可以定义事务以度量服务器的性能。每个事务度量服务器响应指定的 Vuser 请求所用的时间。这些请求可以是简单任务 (例如等待对单个查 询的响应),也可以是复杂任务 (例如提交多个查询和生成报告)。 要度量事务,需要插入 Vuser 函数以标记任务的开始和结束。在脚本内, 可以标记的事务不受数量限制,每个事务的名称都不同。 在方案执行期间, Controller 将度量执行每个事务所用的时间。方案运 行后,可使用 LoadRunner 的图和报告来分析各个事务的服务器性能。 要在系统上模拟较重的用户负载,需要同步各个 Vuser 以便在同一时刻 执行任务。通过创建集合点,可以确保多个 Vuser 同时执行操作。当某 个 Vuser 到达该集合点时, Controler 会将其保留,直到参与该集合的 全部 Vuser 都到达。当满足集合条件时, Controler 将释放 Vuser。
Vuser脚本的三个部分
这里我们简单讲讲Vuser脚本的三个部分: 创建的每个 Vuser 脚本都至少包含三部分:vuser_init、 一个或多个 Actions 及 vuser_end。录制期间,可以选 择脚本中 VuGen 要插入已录制函数的部分。通常情况 下,可以将登录到服务器的活动录制到 vuser_init 部 分中、将客户端活动录制到 Actions 部分中,并将注 销过程录制到 vuser_end 部分中。 运行多次迭代脚本,只有脚本的Actions部分被重复, 而Vuser _init和Vuser_end部分只运行一次。 如果我们测试的只是登录操作,需要登录操作循环被 执行。那么我们也可以将登录操作录制在action中。
80~20原理测试强度估算
基本概念:每个工作日80%的业务在20% 的时间内完成。 例如:每天工作8个小时,那么每天80%的 业务在8*20%=1.6小时内完成。
举例
例1:
去年全年处理业务约100万笔,其中,15%的业务处理中,每 笔务需对 应用服务器提交7次请求;70%的业务处理中,每笔业 务需对应用服务器提交5次请求;其余15%的业务处理中,每笔 业务对应用服务器提交3次请求。根据以往的统计结果,每年的 业务增量为15%,考虑到今后3年业务发展的需要,测试需按现 有业务量的两倍进行。 强度估算如下: 每年的总请求数为: (100*15%*7+100*70%*5+100*15%*3)*2=1000万次/年 每天的请求数为: 1000/160=6.25万/天 <备注:每个月为20个工作日,所以1年 为160天> 每秒请求数: (62500×80%)/(8*20%*3600)=8.68次 /秒
写log
只是设置断点是不够的,我们还得知道具 体发生了什么事情,Log告诉了我们一切, 默认的Log是 standard Log,这时远远不 够的.我们要extended log,打开路径 为runtime settings-->log-->extended log.把parameter substitution和data returned by server和advanced trace根 据需要勾选 ,写log很占资源,除调试外, 建议尽量减少使用。
要满足软件运行的最低要求。 选用与被测软件相一致的操作系统和软
件平台。 营造相对独立的测试环境。 无毒的环境。
小建议
小建议1:
很多朋友在实验室里做压力测试,用 的服务器和开发人员共用一台。并不是 一个独立的环境,服务器的资源其他活 动所占用。不能保证测试的有效性。
继续
小建议2
为了强调测试环境的‘真实性’, 很多朋友在客户的实际环境执行测试, 那么要注意: 1) 尽可能地降低对客户现有业务地影响, 挑选在夜间或者在客户业务不繁忙地时 段进行。 2) 要有很好地备份和恢复过程。
继续
小建议6
录制C/S结构的脚本,操作动作多,数据交换 量大,生成的脚本会非常的大,根本无法搞请 清楚每一个BUF的具体内容。这给我们维护和 增强脚本带来了困难。所以在录制的时候,我 们要加必要的注释。并且以操作名来命名事务。 如:我们录制脚本时打开了一个模块,是一个 表,‘确定’按钮的按钮事件是在数据表中新 增一条记录。那么我们在没有点击按钮之前先 设置开始事务,名称为新增记录;如图:
负载压力测试的实施步骤
测试计划->测试需求分析-> 测试案例 制定->测试环境、工具、数据准备-> 测试脚本录制、编写与调试->场景指定 ->测试执行->测试执行->获取测试 结果->结果评估与测试报告。 (由于主要是要介绍LR工具的使用,实施 步骤的每个环节不可能详细述说,部分 略去)
负载压力测试需求分析原理之 80~20原理
关联太烦了,等会再讲,我们先来了解一下Vuser脚本的两种 查看方式:Script View和Tree View。我们通过View菜单条Script View和Tree View 来切换。基于图标的Tree View和基于文本的 script View有各自的作用。 注意: 你在Tree View模式下点击Start Record 是会出错的。只能在 Script View下来录制脚本。 如果你在查看data.ws文件,那么Vugen将不允许你切换到Tree View模式下。
相关文档
最新文档