前言
Loadrunner 是业界公认的权威性能测试工具,被誉为工业级的性能测试工具,支持广泛的协议和平台。
LoadRunner 的安装
推荐看[转]【精选】Win10下LoadRunner12 下载安装汉化图文教程(含LoadRunner安装包)
Loadrunner 的基本概念
功能:LoadRunner 是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量, 并发用户和性能计数器等方面(性能点)来衡量系统的性能表现,辅助用户进行系统性能的优化。
LoadRunner 通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,优化性能和加速应用系统的发布周期。
组成:LoadRunner 主要包括三个前台功能组件,分别为 VUG(虚拟用户脚本生成器)、Controller(测试控制器)和 Analysis(结果分析器)。系统会自动调用后台功能组件LG(负载生成器)和Proxy(用户代理)来完成性能测试工作。
- VUG 是录制与编写脚本的地方。通过录制或编写脚本来模拟用户的行为。
- Controller 是执行负载测试管理和监控的中心。在这里指定具体的性能测试方案,执行性能测试,收集测试数据,监控测试指标。监控工具将测试过程中收集到的客户机、服务器和网络性能指标数据显示在监控页面 上,便于测试人员对系统表现进行随时掌握。
- Analysis 在测试完成后,对测试过程中收集到的各种性能数据进行计算、汇总和处理,生成各种图表和报告,为系统性能测试结果分析提供支持。
使用 Loadrunner 要掌握的概念
- Scenario:场景。所谓场景,是指在每一个测试过程中发生的事件。
- Vusers:虚拟用户。LoadRunner使用多线程或多进程来模拟用户对应用程序操作时产生的压力。 一个场景可能包括多个虚拟用户,甚至成千上万个虚拟用户。
- Script:脚本。用脚本来描述Vuser在场景中执行的动作。
- Transactions:事务。事务代表了用户的某个业务过程,需要衡量这些业务过程的性能。
- rendezvous :集合。当我们测试多个用户并发时,每个用户执行到该事务脚本的先后顺序是不确 定的,所以得到的测试结果也并不是一个完全 并发的极限测试结果。在开始事务之前 ,插入一 个“集合点”,那么在多用户执行时,就可以将用户请求停下来,直到用户数量达到满足的条件(默 认是100%的用户都到达集合点)。那么,所有的用户都将同时发出接下来的请求。
Loadrunner的性能测试过程
开发测试脚本(Virtual User Generator)
LoadRunner 使用虚拟用户的活动来模拟真实用户操作 Web 应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的。
开发测试脚本要使用 VUG 组件。测试脚本要完成的内容有:
- 每一个虚拟用户的活动
- 参数化
- 定义事物
- 定义检查点
打开附带的 Web 程序
Loadrunner 安装时附带有样例程序Web Tours,我们通过这个现成的 web 程序进行讲解。
打开 LoadRunner 文件夹,找到 WebTours 文件
点击 StartServer.bat 启动 Web 程序
如下图所示,启动成功,画线的地方是 web 程序的 URL
在 WebTours 文件夹下点击 conf -> httpd.conf ,找到 WebTours 程序的端口号 1080
所以可以通过 192.168.66.1:1080/WebTours 访问该网站
录制基本的用户脚本
1.启动 Visual User Generator 后,选择新建脚本,因为要测试的是web项目,所以选择协议为WebHTTP/HTML,点击创建后,进入主窗体
在解决方案资源管理器中可以看到该脚本的组成部分。简单说明一下:VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action。vuser_init 用于用户初始化,vuser_end 用于用户清理工作。 Action 用于具体的需要测试的操作。
注意:在重复执行测试脚本时,vuser_init 和 vuser_end 中的内容只会执行一次,重复执行的只是 Action 中的部分。
2.点击下图中的小红点开始录制脚本
应用程序:表示用哪个浏览器去访问 web 录制脚本,指令我用的是 LoadRunner 自带的火狐浏览器
URL 地址:要录制脚本的网页路径
设置好以后点击 “开始录制”,耐心等待,出现弹窗直接确定即可
3.开始录制
在开始录制时会出现上图的弹窗,提供了停止录制,暂停录制,取消录制,插入事务,插入集合等操作
当页面加载好后,在页面上进行需要的操作,操作会被记录下来翻译成脚本。
网页的账号和密码是 jojo,beab
录制好操作后点击“停止录制”,即可看到刚才我们的操作已经被翻译成脚本:
常用函数
点击查看 -> 步骤工具箱
开启“步骤工具箱”后,便可以搜索查看 LoadRunner 提供的函数
插入事务(lr_start_transaction)
lr_start_transaction
事务(Transaction):为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚 本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以 在录制结束后进行。LoadRunner 可以在脚本中插入不限数量的事务。
事务的状态默认情况下是 LR_AUTO。一般情况下,我们也不需要修改。
在“步骤工具箱”处搜索 lr_start_transaction 开启事务,搜索 lr_end_transaction 结束事务。
插入集合点(lr_rendezvous)
lr_rendezvous
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在 LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时, LoadRunner 命令1000 人同时去提交数据,从而达到测试计划中的需求。
注意:集合点经常和事务结合起来使用。
在“步骤工具箱”处搜索 lr_rendezvous 插入集合点
参数化输入
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引 起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。
比如在登录时输入的用户名和密码需要用参数替换,不能写死:
1.需要将数据参数化,可以选中数据后右键,选择使用参数替换 -> 新建参数
2.设置参数名称,点击属性设置数据源
3.点击添加行即可设置参数可用的数据源
参数的类型
- 日期/时间:很简单,在需要输入日期/时间的地方,可以用DateTime 类型来替代。其属性设置也很简 单,选择一种格式即可。当然也可以定制格式。
- 组名:在实际运行中,LoadRunner使用该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name将会是None
- Load Generator Name:在实际运行中,LoadRunner 使用该虚拟用户所在 LoadGenerator 的机器名来代替。
- 迭代编号:在实际运行中,LoadRunner 使用该测试脚本当前循环的次数来代替。
- 随机数字:随机数。很简单。在属性设置中可以设置产生随机数的范围
- 唯一编号:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小(每个Vuser的块大小)。 注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99。当使用该 参数类型时,设置第一个数为1,递增的数为1,但100 个虚拟用户同时运行时,第100 个虚拟用户输入的将是100,这样脚本运行将会出错。
- Vuser ID:设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户的 ID 来代替,该ID 是由 Controller 来控制的。但是在 VuGen 中运行时,Vuser ID 将会是–1。
- File:需要在属性设置中编辑文件,添加内容
- 用户定义的函数:从用户开发的dll 文件提取数据。
C 语言函数
VuGen 中可以使用 C 语言中比较标准的函数和数据类型,语法和 C 语言相同。下面简单介绍一下比较常用的函数和数据类型。
1. 控制脚本流程
if { } else { }
for{ }
while{ }
…………… 总之 C 语言的控制流程的语句这里都可以直接使用
2. 字符串函数
strcmp 比较两个字符串
strcat 连接两个字符串
strcpy 拷贝字符串
输出函数(lr_output_message)
输出函数在调试脚本时非常有用。类似于 c 中的 printf
lr_output_message 输出一条消息
获得参数中的值(lr_eval_string)
插入检查点(web_reg_find)
在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text 检查点,这些检查点验证网页上是否存在指定的Text,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和 unittest 中的断言功能基本上一致。
运行时设置
当完善了测试脚本后,需要对 VuGen 的“运行时设置” 进行配置。 在“解决方案资源管理器”视图中选择“运行时设置”
常用的设置内容如下:
- 常规-其他-错误处理: 一般不需要改动,但是在Controller运行时,可以设置“出现错误时仍继续”,来统计错误率
- 常规-其他-自动事务 当我们手工设置了事务时,建议取消该项,以免 Controller 运行时事务太多
- 常规-运行逻辑-迭代数 根据需要变动,一般在调试脚本时可以设置为多次迭代
- 常规-日志 在调试阶段可勾选“启动日志记录”,脚本稳定时可取消该项
- 常规-思考时间 忽略时会对服务器造成更大的压力,而增加思考时间可以更好的模拟用户使用
- internet协议-首选项-启用图像或文本检查 不勾选“启用图像或文本检查”,web_find 和web_image_check 设置的检查点在运行时无效
- 工具-选项-脚本-回放 如果勾选“回放期间显示运行时查看器”,则在运行时会启动浏览器
创建运行场景(Controller)
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
直接通过 VUG 创建场景
如图,点击工具 ->创建 Controller
Controller 客户端创建场景
当然也可以点击 Controller 客户端创建场景,选中脚本点击添加,将脚本添加到场景中
在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。
1、手动场景:该项要完全手动的设置场景。
1.1 使用百分比模式在脚本间分配 Vuser:该项只有在“手动场景”选中的情况下才能选择。选择该项后, 在场景中我们需要定义要使用的虚拟用户的总数,然后我们为每一个脚本分配要运行的虚拟用户的百分比。如果不按百分比的话每一个脚本分配的用户按数量分配。
2、 面向目标的场景: 在测试计划中,一般都包括性能测试要达到的目标。选择该项后,LoadRunner 基于这个目标,自动为你创建一个场景。在场景中,我们只要定义好我们的目标即可。
Controller 界面分析
设计界面
1.场景组区域
2.全局计划区域
在全局计划区域可以对虚拟用户进行相关设置
运行界面
如下图,将 Controller 界面分为 5 个部分
1.场景组区域
2.
3.场景状态区域
4.性能指标区域(可用图)
5.图标区域
6.监控指标区域
分析结果(Analysis)
在场景执行完毕后,可以进行分析,在 Controller 选择菜单结果--分析结果,会调用 Analysis 进行结果分析。将 自动加载分析勾选上,会在运行场景执行完以后自动启动 Analysis 分析结果
如下图,在 Analysis 中可以查看详细的性能分析结果