LoadRunner12
一.简介
LR非常重,启动慢,对硬件要求比较高,需要CPU强、内存大,负责运行起来会卡。
最多可以实现50个线程并发。
一般中型项目4台机器200个并发可满足要求。
LoadRunner12较LoadRunner11比较,最大的优点就是自动关联。
LoadRunner的工作原理

打开浏览器的时候,所有的请求会发给LR的一个代理,抓完包之后自动生成一个LR的脚本。
Controller多并发,请求发送给WEB服务器,然后监测结果,analysis生成报告。
二. 扫盲
1. 关联:
从上一次请求中,使用正则或其他方式从响应结果中取到相应的数据存在一个变量里,用在下一个请求里。
例子:
认证信息 cookie和session
2. 参数化:
什么是参数化?为什么用参数化?
任何系统都会有缓存。通常存在内存里,还有存在数据库缓存里,apache也有缓存。
为了防止被系统缓存命中大部分测试数据,我们需要使用不同的测试数据模拟真实的场景进行压力测试。
为了模拟真实的场景,有时候要命中缓存,有时候要不命中缓存,所以使用参数化。
3. 性能测试环境怎么建立?
最好的环境就是上线环境。看公司实际情况,最好搭建一个1:1的环境。
我要上线,肯定生产环境。还未上线,怎么搞对用户没有影响。
上线后还能用么?可以用。--全链路压测。要做到测试数据与正式数据的分离。
三. Virtual User Generator
1. LR的三个组件
Virtual user generator:虚拟用户发生器:编写lr脚本的组件。单线程
Controller:负责压测场景的执行。多线程或多进程。
Analysis:报告生成器。
2. LR的录制
2.1 创建脚本
File->New Script and Solution->Single Protocol->Web HTTP/HTML->设置Script name->设置location

2.2 脚本设置
2.2.1脚本由3部分组成:
Action
vuser init-->相当于jmeter的setUp(),一个线程跑一次
Action
vuser end-->相当于jmeter的tearDown(),一个线程跑一次
以上三个默认跑一次。
2.2.2设定Action一个线程跑的次数
Runtimesettings->Run Logic->Run->顺序执行->iterations设置为2,跑两次。

2.3 录制
点击菜单栏的红色圆圈按钮。进入到录制设置页面。

设置使用的浏览器和网址。

如果在录制过程中打不开浏览器,或者没有生成脚本,可以设置一下record options。Record->Record options->Mapping and Filtering->依次选择每种设置进行尝试。推荐使用第三种。

2.4 脚本运行
点击菜单栏的运行按钮,可以进行脚本运行回放。由于LoadRunner测试性能走的是协议层,不需要打开浏览器,所以不会看到页面回放。
如果运行后,出现报错,可以更改脚本,或者双加日志信息定位到出问题的代码行,进行删除即可。
为了方便查看出错原因,可以设置打印的log详细级别。
Runtime Settings->Log->Detail Level-> Parameter subtitution(用户查看参数化时使用的参数)勾选->Data returned by server(查看服务器返回的数据)

2.5 查看脚本
"Resource=0" #网页
"Resource=1" #资源,js,css
”Referer” #从哪个网页调到当前网页的
“mode=html” #录制的模式有url和html两种,可以在Record->Recording Options->General Recording中设置。一般使用flash,ajax等请求的操作会使用URL。html录制的脚本会简洁一些。主要看测试网页对象。
3. 断言
可以通过Help->Function Reference->来搜索函数及其具体的用法。

断言的程序的位置需要在请求函数的前面,意思为:走注册的程序,查看返回的结果中是否存在特定的词。

运行后,可以看到:

注意:断言的字段最好是查看源码里是否有什么标签。且程序的用户名要改一下,因为录制的时候已经注册使用过。
4. 参数化
选中变量->右键->Replace with Parameter->Create New Parameter->Paramter Type一般是Random Number、、
4.1 Random Number



Parameter Properties 可以设置随机数开始、截止的范围,Update value on更新数值的方式,通常使用Each occurrenc、Each iteration。如果选择了
Each occurrence:如果脚本中有两个变量,当执行到每个变量时,会生成两个随机数。
Each iteration:如果脚本中有两个变量,当执行到每个变量时,会使用一个生成的随机数,即随机数一样
Once:第一次迭代中分配的随机值将用户该Vuser的所有迭代。
我们可以将测试脚本复制一遍,生成两个变量,分别使用以上设置执行,通过log查看打印的变量。
设置好变量后,可以在左侧的Parameters项中的参数列表,查看参数的具体设置。
测试脚本:

选择Each occurrence的运行结果:


Each iteration运行后的结果:


4.2 file
可以从文件中批量导入参数。导入后也可以进行增删改。

可以设置执行时开始的顺序与文件分割格式。

Select next row可以设置参数的执行顺序:Sequential顺序取、Random随机取、Unique只取一次。

Update value on更新数值的方式,通常使用Each occurrenc、Each iteration。

当Select next row设置为unique后,when out of values高亮可设置,代表当数据溢出时如何处理。可选项有Abort Vuser、Continue in a cycle manner、Continue with last value。

如果选择了
Abort Vuser:线程结束,退出
Continue in a cycle manner:重新来一次循环,所有的数据才来一遍
Continue with last value:继续使用最后一个

4.3 Unique Number
保证使用的数据不重复。
Block size per Vser:如果设置为1-100后,假如有5这个线程。
线程1:1-100
线程2:101-200
线程3:201-300
线程4::301-400
线程5:401-500
Block size per Vser:如果设置为100-20后,假如有3这个线程。
线程1:100-119
线程2:120-139
线程3:140-159
Vser是单线程,Controller是多线程。

5. 关联
5.1 自动关联
录制完登陆的脚本后,会自动弹出Design Studio弹框,如果有关联的项,会列出来,点击Correlate,会自动生成参数进行关联。

同时脚本中也自动生成了关联部分的代码。关联的脚本应该放在生成关联页面的前面。

如果没有关联,不会登陆成功。
5.2 手动关联

6. 接口测试

7. 集合点
保证线程在同一时刻一块触发。
线程走到这了,会一起执行。如果想模拟秒杀,可以用集合点rendezvous。
如果不使用集合点,一般情况下,跑单功能,线程不加任何thinking time。

三. Controller
打开Controller组件,会弹出以下弹框,选择Manual Scenario(手动设置场景),Goal-Oriented Scenario基本没用。

选择好一个或多个脚本后,点击OK,进入到场景设置界面,设置多组线程跑不同的脚本。

点击运行后,会实时显示运行情况。
最重要的3项:
Running Vusers
Hits Per Seconds(每秒点击数)
Trans Response time(事务的平均响应时间),一个action就是一个事务。可以在Vuser中将几个页面放在一个action中。

四. Analysis
执行完毕后,点击工具栏的analysis的图标

posted on 2020-07-09 23:57 xiaojingliu 阅读(1147) 评论(0) 收藏 举报
浙公网安备 33010602011771号