性能测试-003 Loadrunner第一个脚本和事务的使用方法
首先,来尝试添加第一个脚本:
打开安装好的lr,下面以lr12为例:
1.打开Virtual User Generator
2.点击File-Add-New Script
2.Virtual User Generator会弹出一个对话框:
1:创建一个新的脚本
2:这部分是选择通信协议。一般我们公司,B/S架构的系统的通信协议是什么呢?
3:Script name 脚本名称
4:Location 脚本存放位置
5:最后点击Create按钮
脚本创建好之后,是这个样子的:
可以看到Actions部分被分成了Vuser_init、Action和Vuser_end
Vuser_init、Vuser_end:只迭代一次
Action:迭代N次
当然,你可能看不懂~迭代是什么意思嘛
简单粗暴的方法:登录操作放在Vuser_init里面
业务操作放在Action
退出操作放在Vuser_end
上面 就创建好了第一个脚本
1.录制的action 这个是说 录制的脚本放在哪个地方 选action 就是action 选vuser_init 脚本就是在vuser_init 里面
2.录入使用的浏览器:一般使用chrome 。这里有坑,后面补充
3.录制的地址
最后,点击“start recording”即可开始录制
刚刚提到了一个东西,叫做“操作”。我们来理解一下:xx操作是不是也就是xx功能呢?我说登录操作和登录功能这两个是相等的,这个可以理解吧?然后我再说登录操作=登录功能=登录业务。这个也可以理解吧?
loadrunner(以下简称lr)思想:
把一个个的业务功能用事务(Transaction)来“包裹”
如:登录、查询、新增、删除、退出这些叫事务,一个个单独的http请求不叫事务 这里对应lr中的一个设置,后面会提到。
比如说:
我要去测试“武汉军运会系统”的登录并发情况。 那么我的实际动作是:
打开系统地址----输入用户名和密码-----点击登录按钮----登录成功
在做性能需求分析的时候也就是把系统的业务抽离出来,在性能脚本中用事务来描述
测试事务的时间≈业务相应时间
怎么添加一个事务:
1.使用 lr_start_transaction(“事务名称”)
使用 lr_end_transaction(“事务名称,LR_AUTO”)
2.在录制的过程中使用图中的按钮进行添加
3.使用view-Steps ToolBox 进行添加
简单介绍一个登录事务:见脚本:
Vuser_init:
vuser_init()
{
return 0;
}
Action:
Action()
{
web_reg_save_param_ex(
"ParamName=CorrelationParameter",
"LB=name=\"org.apache.struts.taglib.html.TOKEN\" value=\"",
"RB=\"></div",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/redirect.jsp*",
LAST);
web_url("redirect.jsp",
"URL=http://192.168.3.74:8070/WuHan_JYH/redirect.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t136.inf",
"Mode=HTML",
EXTRARES,
LAST);
lr_start_transaction("登录"); //事务开始函数
web_submit_data("initIndexNew.do",
"Action=http://192.168.3.74:8070/WuHan_JYH/initIndexNew.do?method=ajaxValidaUserid",
"Method=POST",
"RecContentType=text/html",
"Referer=http://192.168.3.74:8070/WuHan_JYH/",
"Snapshot=t186.inf",
"Mode=HTML",
ITEMDATA,
"Name=userid", "Value={user}", ENDITEM,
LAST);
web_submit_data("login.do",
"Action=http://192.168.3.74:8070/WuHan_JYH/login.do",
"Method=POST",
"RecContentType=text/html",
"Referer=http://192.168.3.74:8070/WuHan_JYH/",
"Snapshot=t187.inf",
"Mode=HTML",
ITEMDATA,
"Name=method", "Value=authenticate", ENDITEM,
"Name=needValiUser", "Value=false", ENDITEM,
"Name=password", "Value=MTIzNDU2", ENDITEM,
"Name=isCookies", "Value=1", ENDITEM,
"Name=org.apache.struts.taglib.html.TOKEN", "Value={CorrelationParameter}", ENDITEM,
"Name=userid", "Value={user}", ENDITEM,
LAST);
lr_end_transaction("登录",LR_AUTO); //事务结束函数
return 0;
}
Vuser_end:
vuser_end()
{
lr_think_time(3);
lr_start_transaction("退出");
web_url("login.do_2",
"URL=http://192.168.3.74:8070/WuHan_JYH/login.do?method=logout",
"Resource=0",
"RecContentType=text/html",
"Referer=http://192.168.3.74:8070/WuHan_JYH/redirect.jsp",
"Snapshot=t275.inf",
"Mode=HTML",
LAST);
lr_end_transaction("退出",LR_AUTO);
return 0;
}
运行结果:
Action.c(15): Notify: Transaction "登录" started.
Action.c(17): web_submit_data("login.pl") was successful, 795 body bytes, 225 header bytes [MsgId: MMSG-26386]
Action.c(29): web_submit_data("login.pl_2") was successful, 795 body bytes, 225 header bytes [MsgId: MMSG-26386]
Action.c(45): Notify: Transaction "登录" ended with "Pass" status (Duration: 0.5704 Wasted Time: 0.0152).
PS:这一个是贴的 的别处的,无关紧要
但是可以看到 登录事务是以Pass状态结束的 这就表示,事务通过,脚本成功。
需要注意的事项:
1.事务一定是成双成对的出现。如果:
开始一个事务不结束或者是结束一个事务不开始,脚本在回放的过程中会报错
2.事务的结束状态是通过
来控制
详情:
|
参数
|
含义
|
|---|---|
| LR_AUTO | 函数自行判断是否通过,在实际中使用最多 |
| LR_STOP | 事务一定以暂停的状态结束 |
| LR_FAIL | 事务一定以失败的状态结束 |
| LR_PASS | 事务一定以通过的状态结束 |







浙公网安备 33010602011771号