Loadrunner基础培训Word文档格式.docx
《Loadrunner基础培训Word文档格式.docx》由会员分享,可在线阅读,更多相关《Loadrunner基础培训Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
●Controller:
进行负载测试;
●Analysis:
查看测试报告。
对应的功能入口见下图:
1脚本录制
Loadrunner脚本可以录制,也可以手动编写,主流应用还是录制-回放的模式。
脚本的录制流程:
协议选择→设置录制选项→开始录制→插入命令→停止录制→回放验证
进入VuGen,点击
开始录制脚本。
1.1协议选择
性能测试是基于协议的,所以必须选择匹配的协议,才可以正确录制用户行为。
LR可以支持单协议、多协议两种情况。
在单协议情况下,所要录制的对象只能使用唯一的协议;
在需要录制的对象使用多于一种协议的情况下,应该选择多协议,并且将这些协议都进行添加,否则会因为漏选协议而无法正常回放脚本。
确定系统使用协议最快捷的方法是询问开发人员,或者使用loadrunner自带的ProtocolAdvisor(协议顾问),功能位置:
FileProtocolAdvisor,运行结果如下图:
ProtocolAdvisor的结果仅做参考,需根据多方因素确定选用协议。
绝大多数的性能测试都是基于B/S架构下的http协议。
1.2开始录制
输入URLAddress、选择RecordintoAction。
浏览器默认IE,如果使用其他浏览器,从Programtorecord进行设置。
http:
//10.1.60.104:
8001/hsu/SIJBJPTLogon.do
简单介绍一下RecordintoAction,Action是VuGen提供的一种类似于函数的脚本快,默认的有三种:
vuser_init、Action、vuser_end。
在Loadrunner中用户的初始化操作应该放在vuser_init中,默认在脚本的开始位置;
用户的结束操作存放在vuser_end中,默认放在脚本的最末位置;
Action用来存放用户的操作,在测试时可以被反复运行,而vuser_init、vuser_end只会在测试开始和结束时运行一次。
通俗来讲,我们要关注其性能的用户操作,需要放到Action里。
点击OK,开始录制脚本。
1.3插入命令
在录制的过程中可以通过RecordingBar添加一些命令。
如切分脚本、添加事务的开始点和结束点、添加集合点、添加注释。
事务:
事务是用户在客户端做一种或多种业务所需要的操作集,通过事务函数可以标记完成该业务所需要的操作内容;
另一方面事务可以用来统计用户操作的响应时间,进而反映服务器的性能。
可以在录制时插入:
这是事务开始和结束的按钮,如果录制时候没有插入可以在脚本中直接添加Insert—StartTransaction/EndTransaction或者直接写函数lr_start_transaction("
xxxx"
),lr_end_transaction("
LR_AUTO)。
LR_AUTO是事务状态,还有LR_PASS:
指代统计已pass状态通过的事务;
LR_FAIL;
LR_STOP;
通常默认LR_AUTO。
事务响应时间主要包含网络时间、服务器处理时间、网络延迟三大部分。
在测试时,应该时时关注网络使用情况,及时发现网络延迟对系统性能的影响。
集合点:
集合点用以同步虚拟用户,以便在同一时刻执行任务。
功能位置:
Insert—Rendezvous。
如果脚本中已设置好集合点,在Controller中可以进行集合点设置:
Scenario—rendezous,如果rendezous是灰色,证明没有检测到脚本中的集合点,这时候需要在VuGen点击Compile
编译一下,Compile也可以检查脚本中的语法错误。
集合点设置页面打开后如下图所示:
点击policy可以设置集合点释放策略,如图:
前三项都可以看明白,解释下最后一项超时时间,是指虚拟用户之间的时间差,当出现两个虚拟用户到达集合点的时间差超过设定的超时时间时,所有在集合点处于等待状态中的用户将会全部释放。
【注】:
可以在多个脚本上设置相同的集合点名称来实现多个脚本同时并发的效果。
集合点要放在事务外面,不然等待时间会被算入响应时间
1.4停止录制
录制结束后,单击Stop停止录制,VuGen随后会对协议交互进行分析,生成脚本。
1.5回放验证
脚本生成后,单击菜单栏上的Run按钮回放脚本。
回放中可以在ReplayLog日志栏中看到脚本执行的日志信息,当脚本回放完成后,可以结合应用系统运行log,及业务数据等判断脚本运行是否成功。
2脚本调试优化
2.1断点
断点多用于调试脚本,与java中的断点类似。
脚本中设置断点快捷键是F9,或者也可在insert中使用togglebreakpoint,逐行执行是F10。
2.2检查点
检查点是用于检查脚本回放时某些关键点是否达到预期。
在ViewTree模式下可查看http请求及收到的响应数据。
在此模式下我们可以选择reponse中的内容来插入检查点,选中reponse中的文字右键addtextcheckpoint,以此来检查脚本是否运行成功。
插入检查点操作会自动在脚本中引用函数,分两种web_find和web_reg_find,web_find是在页面中查找相应内容,,写在要查找内容的请求之后;
web_reg_find是在缓存中查找相应内容,写在要查找内容的请求之前。
默认是web_reg_find。
另外,web_find只能用在基于html模式录制,使用时必须开启内容检查选项,如图:
手工插入检查点的位置insert—newstep
2.3参数化
参数化:
参数化是脚本优化中很重要的技巧,在实际运行环境中,用户不可能都提交一样的内容,这样就得利用参数化来模拟各种输入。
参数化的步骤如下:
1)选中需要被参数化的内容,单击鼠标右键,在弹出的菜单中选择replacewithaparameter
然后弹出如下图:
设置name、type,然后点properties设置。
File可以选已经建好的文件,也可以新创建数据文件;
文件内容可直接编辑,也可以点击EditwithNotepad以文本的形式编辑,还可以点击DataWizard连接数据库直接取数据。
其他设置:
●Selectcolumn是指当前参数引用哪一列,当有多个数据需要参数化时,可以在数据文件中创建多个列,每个参数选择不同的列来实现;
●Fileformat是指文件中列之间的分隔符,默认是逗号;
●Selectnextrow与updatevalueon是一对配合使用的参数:
Selectnextrow:
用于指定多个虚拟用户时如何选择参数值
1)Sequential:
按照顺序一行行的读取;
2)Random:
在每次循环里随机读取一个;
3)Unique:
每个用户取唯一值
4)samelineasXXX用于有关联的值之间,第一个参数化是没有此项的
updatevalueon:
用于指定多次迭代如何取值
1)once:
在所有的反复中都使用同一个值
2)eachiteration:
每次反复都要取新值
3)eachoccurrence:
只要发现该参数就取新值,也就是如果一个action中有多个该参数,没遇到一个就要重新取一个值。
Selectnextrow
UpdateValueon
实际运行结果
sequential
eachiteration
在某次循环中所有用户取值相同。
所有用户第一次循环取第一行值,第二次循环取第二行值
eachoccurrence
在某次循环中或者脚本中使用参数的地方,所有用户取值相同。
脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次。
once
在所有的循环中所有用户取值相同。
所有的用户所有的循环中,只用一个值(即参数中的第一行值)
random
不同的用户,在不同的循环次数中,随机取值
不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次
不同的用户,不管循环多少次,只随机取值一次。
unique
若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。
若选择自动分配参数:
Controller中editschedule中rununtilcomletion:
按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推…...
Controller中editschedule中runfor:
若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。
只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数。
按照用户数分配给每个用户分配一个参数而已。
以后的循环这个用户就使用这一个参数
2)完成上述参数化后,返回到脚本,发现刚才选中的字符串被新建的参数代替,如图:
但是被替换的字符串可能在脚本中多次出现,需要全部参数化,此时选中新替换的参数(上图中的uuid),右击,选择Replacemoreoccurrences,点击ReplaceAll即可。
2.4关联取值
关联就是将服务器返回信息安装一定规则过滤后存放到参数中,供后面的操作请求使用,如登录时的sessionID。
关联取值有3种方式:
自动关联、手动关联、预关联。
自动关联不建议使用,非常不可靠。
目前我们是采用预关联与手动关联相结合的方式(存在无法预关联的情况必须进行手动关联)。
现在以关联usersession_uuid为例,介绍手动关联具体的操作说明。
1)确定需要关联的动态参数,以及服务器返回该参数的请求位置。
无法确定时可以与开发人员沟通。
usersession_uuid,是在登陆调用logon.do时服务器生成并返回的。
在HTTPView下,查看Response的内容,找到了返回usersession_uuid的数据:
{"
flag"
:
true,"
__usersession_uuid"
"
a9e6e463_434d_488a_8933_d7ca31e60aaa"
}
2)插入web_reg_save_param_ex函数。
进入“Script”视图下,找到上一步确定的返回usersession_uuid的位置:
在web_submit_data请求前面,右键→Insert→NewStep。
在弹出的AddStep对话框中,FindFunction中搜索到web_reg_save_param_ex函数,点击OK。
在打开的关联函数设置窗口中,填写“ParameterName”、“Ordinal”。
其中LeftBoundary(左边界),RightBoundary(右边界)用于确定需要截取数据的左右边界,可以先空缺,后面再根据Response的内容手工补充;
Ordinal表示的是从返回的记录中取出符合条件的值的顺序号,这里设置为1即可。
点击OK,发现在web_submit_data请求前面,函数添加成功。
当然,对函数熟悉以后,完全可以直接编写脚本。
然后根据logon.do的Response内容,确定LB、RB。
完善后脚本如下:
【注意】
●LB、RB的内容,注意添加转义字符。
●web_reg_save_param_ex函数的位置,一定要放在返回所需参数的请求前面,位置不对会导致取不到参数值。
3)替换参数。
将脚本中出现的usersession_uuid的值,全部用参数替换。
注意参数不要漏掉{},替换后:
批量替换时注意参数换行的情况,不要遗漏。
至此,usersession_uuid的手动关联完毕。
当我们对被测试系统足够熟悉以后,便可以总结出需要关联的参数,设置好关联规则,在录制脚本时,LR会根据设定好的规则自动关联,这便是预关联。
在录制选项中可以导入设定好的关联规则,功能位置:
VuGen—Tools—RecordingOptions—Correlation,导入关联规则后,对本测试机录制脚本始终有效。
3场景设计及负载测试
在Controller中可以进行场景设置、场景运行。
3.1场景模式
进入Controller,选择此前调试完成的脚本,可以打开场景设计界面。
Groupname是运行组的名称,可以随意更改命名,scriptpath脚本路径,quantity虚拟用户量,loadGenerators产生负载的机器,localhost指的是本机,也可以用其他负载机,只需要输入负载机IP即可。
场景在Scheduleby中分为Scenario模式和Group模式。
Scenario模式市直所有脚本都使用相同的场景模型来运行,只需要分配每个脚本所使用的Vuser个数即可;
Group模式可以设置不同脚本之间的运行关系。
当测试涉及多个脚本时会用到,单个脚本使用默认的Scenario模式即可。
脚本的RunMode分为Real-worldschedule和Basicschedule。
两者的区别是Real-worldschedule更接近于用户的实际使用过程,可以添加多次负载增加、持续时间、负载减少的过程,而Basicschedule只能实现一次负载增加、持续、减少。
如下图就只有Real-worldschedule可以实现。
大多数的性能测试需求使用Basicschedule就可以实现。
不管Real-worldschedule还是Basicschedule都可以实现两种脚本运行方式:
按时间运行、按迭代次数运行。
通过设置StartVuser、Duration、StopVuser策略可以实现。
3.2Runtime-setting设置
按脚本进行runtime-setting,点击
按钮,打开页面如下:
常用的设置:
1)General-Runlogic:
设置迭代次数,见上图。
2)General-ThinkTime:
选择是否忽略thinktime。
3)InternetProtocol-Preferences-options中,常用的是设置超时时间。
4)Browser-BrowserEmulation中可以设置每次迭代是否模拟一个新用户,是否清除缓存。
3.3运行场景
点击
开始运行场景,在Controller中可以实时监控系统运行情况。
常用的有RunningVusers、HitsperSecond、Throughput、TransResponseTime,同时Loadrunner也可以对服务器的运行情况进行实时监控,这里不详细介绍。
4查看测试报告
脚本运行完毕,会自动生成测试报告。
如果没有自动生成,可以手工导出,位置:
Results-AnalyzeResult,测试报告中可以查看最大并发虚拟用户,事务的成功率,平均响应时间,90%的响应时间,吞吐量,每秒点击率等。