-LoadRunner工具介绍

LoadRunner工具介绍

hades 61天前 96

一、简介

  • 市场占有率70%
  • 支持多种协议,web,email,oracle...
  • 界面友好
  • 支持多种脚本语言,C,VB,java,c#
  • 支持中文

最新版本12,主流版本11,Windows10版本的操作系统建议使用12。

1.1 组成

  • 脚本生成器:VUG
  • 压力调度和监控系统:Controller
  • 结果分析:Analysis

1.2 脚本生成

  • 录制+优化:简单,不够灵活
  • 手工编码:控制灵活些,但难度大

二、VUG使用

VUG的主要功能是录制或编写测试脚本,总体的流程如下:

  • 创建脚本
  • 选择协议
  • 设置录制选项
  • 开始录制
  • 插入命令
  • 停止录制

在VUG的编辑器中选中LR的函数,按F1可以查看该函数的功能介绍。

2.1 脚本组成

  • vuser_init

初始化代码放在这个里面,比如登录。这个action不可删除或修改

  • Action

测试代码存放位置,这个可以改名字,删除或者新增其他action。

  • vuser_end

测试结束后清理测试环境的代码,。这个action不可删除或修改

  • Global.h

C语言的头文件,用于存放全局的变量和函数。如果想让一个变量在所有的位置都可用在这个文件定义。

迭代:代码运行的次数。

运行日志:

Virtual User Script started at : 2020-06-20 14:32:02
Starting action vuser_init.
Web Turbo Replay of LoadRunner 11.0.0 for WIN32; build 8859 (Aug 18 2010 20:14:31) [MsgId: MMSG-27143]
Run Mode: HTML [MsgId: MMSG-26000]
Run-Time Settings file: "C:\Users\chenyangv\AppData\Local\Temp\noname3\\default.cfg" [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
#注意这里开始运行第一次迭代,运行的代码是action里面的。
Starting iteration 1.
Starting action Action.
Ending action Action.
#结束第一次迭代
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

 

  • 在“Vuser”——“RUn-timeSettings”——“General”——“RUN——“Logic”中控制迭代次数。
  • 迭代的范围只有action中的,vuser_init和vuser_end中不会迭代。

vug的模式:

  • Tasks 向导模式
  • script 脚本模式
  • Tree 树形模式

2.2 录制前配置

  • - IE浏览器祖业设置为空白页;删除缓存;“高级”选项中不启用第三方浏览器拓展
  • - Loadrunner的录制选项中“General”——“Recoding”——“http-based script”的高级设置中的脚本类型改为基于URL模式
  • - Loadrunner的录制选项中HTTP属性的字符集改为UTF8

2.3 运行脚本

  • - 点击“view”中的“Run”或者直接点击运行的图标即可运行。
  • - 在“view”中的“Test Results”可以查看运行结果的快照,在loadrunner12版本中会有所不同,在回放后自动显示查看结果的链接。

2.4 常用的函数

  • - web_url("步骤的名字","访问的URL地址",LAST);打开URL的函数,相当于一个GET请求。
web_url("openINdex","https://ss.com",LAST);
  • - lr_output_message("日志信息");这个函数用来打印日志。
int a = 1;
lr_output_message("%d",a);
  • - web_submit_data();函数用于提交数据,相当于POST请求;
  • - lr_reg_save_param_ex();用于匹配响应的html源代码中的数据,在请求前使用。
lr_reg_save_param_ex(
"ParaName=cityarr", //声明一个变量参数用来保存数据
"LB=\">", //左边界
"RB=", //右边界
"Ordinal=all", //取第几个值,当为all时,cityarr是一个数据,使用标识符cityarr_3来代表第三个值,使用标识符cityarr_count表示数组的长度
SEARCH_FILTES,
LAST);

 

  • - lr_paramarr_random();用来取数组中的随机值;
lr_paramarr_random("cityarr");
  • - lr_save_string();用来保存一个字符串到声明的变量中;
//从数组中随机选取一个值保存在city变量中
lr_sava_string(lr_paramarr_random("cityarr"),"city");
  • - lr_reg_find();从返回的结果中查找关键字。(注意这个函数是在响应的html源代码中查找,通常用作检查点的处理)
  • - lr_eval_string();从LR中取参数转换成变量。
  • - atoi();用来将字符转换成整型。

注意:在Loadrunner中变量和参数是连个不同概念。

 

2.5参数取值策略

在Parameter List中“Select next row”的选项:

  • sequential:顺序取值
  • random:随机取值
  • unique:唯一取值,在跑controller时选择这个值时,每个vuser取值不同
  • same line as 列名(这个选在用在一个参数文件中有多列时,当确定第二列的取值规则时可以选择与前一列相同行)

select column:在一个参数化文件中有多列值时用来设置取哪一列的数据。

Allocate vuser values in the Controller:控制在Controller场景中每个vuser分配用户的策略。

2.6更新值策略

在Parameter List中“Update value on”的选项:

  • Each iteration:每次迭代的时候更新
  • once:
  • Each occurrence:每次出现的时候更新

2.7 事务和检查点(断言)

  • 事务:需要度量的业务时间。

在“Design”中选择“Insert in script”的“Start Transaction”和“end Transaction”用来添加开始与结束事务。

对应的函数如下:

//这里开始
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/cgi-bin/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={uselr_rendezvous("");
rSession}", ENDITEM,
"Name=username", "Value={username}", ENDITEM,
"Name=password", "Value=qwe123", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=login.x", "Value=59", ENDITEM,
"Name=login.y", "Value=4", ENDITEM,
LAST);
//这里结束
lr_end_transaction("login", LR_AUTO);

注意:事务的结果并不代表应用业务的成功或失败。

  • 检查点

事务的成功与否可以通过lr_end_transaction("login", LR_AUTO);中的最后一个参数判断:

  • LR_PASS:代表成功
  • LR_FAIL:代表失败

所以可以通过检测Response的返回结果来动态的控制事务结束的语句参数。这样就可以统计应用业务的成功率了哦。

流程如下:

graph LR

返回后的结果包含成功信息-->LR_PASS

返回后的结果包含成功信息-->LR_FAIL

 

2.8集合点

进行controller场景时并发(同一时刻)数量。

可以在需要进行并发测试的动作前设置集合点。

lr_rendezvous("LOGIN");

案例:

lr_rendezvous("LOGIN");
//获取登录后的结果
web_reg_find("Search=Body",
"SaveCount=count",
"Text=Welcome,",
LAST);
//插入开始事务
lr_start_transaction("login");
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/cgi-bin/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={userSession}", ENDITEM,
"Name=username", "Value={username}", ENDITEM,
"Name=password", "Value=qwe123", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=login.x", "Value=59", ENDITEM,
"Name=login.y", "Value=4", ENDITEM,
LAST);
//结束事务
if(atoi(lr_eval_string("{count}"))>=1)
{
lr_end_transaction("login", LR_PASS);
}
else
{
lr_end_transaction("login", LR_FAIL);
}

三、Controller

需要调整的配置:

  • vuser用户数
  • 迭代数
  • 日志级别
  • 忽略思考时间
  • 并发测试时间
  • 集合点

3.1Vuser用户数

  • 通过VUG创建controller时会弹出设置界面,可调整vuser数量;
  • 在controller界面的scenario group(场景组)中的“virtual user”可以添加虚拟用户数,删除用delete键。

3.2迭代数/日志/思考时间

  • 双击scenario group中的条目会弹出group information,在里面有Running settings可以设置迭代数/日志/思考时间等特性;
  • 也可以选中一个条目,通过scenario group栏目的Running settings图标设置。

3.3 并发时间

在Global Schedule中配置用户增长、持续时间及减少用户的策略。

3.4集合点设置

如果修改了脚本需要重新加载controller或者双击场景条目,在弹出的group infomation中可点击“Refresh”刷新脚本。

在菜单栏的“Scenario”——“rendezvous”可配置集合点。

最新回复 (0)
返回
发新帖
0