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)    收藏  举报

导航