LoadRunner自带了一个飞机票订票网站web tours,可以用来进行简单的录制和回放,以下介绍都是基于此网站。
1.启动web tours服务
在LoadRunner安装目录下,单击..\Samples\Web\Start HP Web Tours Server.bat
2.验证web tour可访问
- 打开浏览器,输入http://127.0.0.1:1080/WebTours/
- 单击..\Samples\Web\ HP Web Tours Application.bat
3.启动virtual user generator
单击virtual user generator的快捷方式,弹出如下窗口:
4.File-->New Script and Solution
5.选择对应的协议
支持http/socket/web serivice等,常用的是http
Single Protocol:单一协议,一般都是用这个
Multiple Protocol:混合协议,可以多选,一般不用
Mobile and IoT:手机和物联网,一般不用
Popular:主流的,一般不用
Recent:最近使用的协议
6.脚本结构
Solution是压测方案,可以包含多个script;每个script可以包含一个Actions;Actions的组成:
- vuser_init:是一个函数,在一个线程中最多执行1次,,一个用于数据准备等操作,在action前执行,类似于unittest中的setUp,执行初始化的工作;
- vuser_end:是一个函数,在一个线程中最多执行1次,在action后执行,类似于unittest中的tearDown,执行清理工作;
- Action:是一个函数,可以包含多个,每个Action可以执行多次,并且设置是顺序执行,还是随机顺序执行。通过Runtime setting设置脚本执行次数。一个action就是一个函数,lr支持多种脚本语言:c/java/vb等,有返回值
- 每个action对应一个函数,同时在脚本目录下会有以改action开头的.c函数。比如vuser_init,其实是vuser_init.c文件中的vuser_init()函数
原则:
- 用户的初始化操作存(比如登录)放在Vuser_init中,用户的结束操作(比如退出)存放在Vuser_end中。因为这两个Action在后面的Run Logic默认设置中是处在脚本最先运行和最后运行的位置,并且负载时,不管迭代多少次,Vuser_init和Vuser_end只会在开始和结束时被运行一次。
- Action用来存放用户的操作,可以当作普通的函数在负载,迭代时会被反复运行。
- 录制时可以通过如下方式切换Action,然后进行录制操作来实现,不必在脚本中手动添加或修改
7.开始录制
单击yes
单击否
录制的过程中会出现各种弹框,点击一下会有点慢,耐心等待即可
8.结束录制
录制中的进度条,录制完成后点结束就行
9.生成的脚本
Action()
{
web_add_auto_header("DNT",
"1");
web_url("index.htm", //请求的名字
"URL=http://127.0.0.1:1080/WebTours/index.htm", //请求的网址
"Resource=0", //是否是资源?0:不是资源,是个网页 1:是资源,文件/图片、js、css..
"RecContentType=text/html", //contentType:请求类型:网页类型
"Referer=", //从哪个网址访问来的信息
"Snapshot=t1.inf", //截图文件的名字
"Mode=HTML", //录制的模式:html或url。如果有ajax\flash\:必须使用url,会把所有的http请求录制下来。
EXTRARES, //资源文件
"Url=../favicon.ico", "Referer=", ENDITEM,
"Url=http://s.pc.qq.com/navigate/adc/adc_loader.js?v=20160326171611", ENDITEM,
"Url=http://s.pc.qq.com/navigate/adc/v4/engine_loader_v3.js", ENDITEM,
"Url=http://s.pc.qq.com/navigate/adc/jquery.min.js?ver=3", ENDITEM,
"Url=http://s.pc.qq.com/navigate/adc/velocity.js", ENDITEM,
LAST);
web_set_sockets_option("SSL_VERSION", "2&3");
web_url("login.pl",
"URL=http://127.0.0.1:1080/WebTours/login.pl?username=&password=&getInfo=true",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/home.html",
"Snapshot=t3.inf",
"Mode=HTML",
LAST);
web_add_cookie("SRCHD=AF=NOFORM; DOMAIN=iecvlist.microsoft.com");
web_add_cookie("SRCHUID=V=2&GUID=213C7604B2E646778D68C0E2C5F9563A&dmnchg=1; DOMAIN=iecvlist.microsoft.com");
web_add_cookie("SRCHUSR=DOB=20190119; DOMAIN=iecvlist.microsoft.com");
web_add_cookie("MC1=GUID=1cc40e7eeb084d58a1a4aab5a0176a31&HASH=1cc4&LV=201903&V=4&LU=1553846123710; DOMAIN=iecvlist.microsoft.com");
web_add_cookie("MUID=30550888172C666B26C505A6132C607F; DOMAIN=iecvlist.microsoft.com");
web_add_auto_header("UA-CPU",
"AMD64");
web_revert_auto_header("UA-CPU");
web_submit_data("login.pl_2",
"Action=http://127.0.0.1:1080/WebTours/login.pl", //数据提交后的处理网址
"Method=POST", //http协议的类型
"RecContentType=text/html", //资源类型,contenttype
"Referer=http://127.0.0.1:1080/WebTours/login.pl?username=&password=&getInfo=true",
"Snapshot=t6.inf",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=tianchuan", ENDITEM,
"Name=password", "Value=tianchuan", ENDITEM,
"Name=passwordConfirm", "Value=tianchuan", ENDITEM,
"Name=firstName", "Value=tianchuan", ENDITEM,
"Name=lastName", "Value=tianchuan", ENDITEM,
"Name=address1", "Value=tianchuan", ENDITEM,
"Name=address2", "Value=tianchuan", ENDITEM,
"Name=register.x", "Value=57", ENDITEM,
"Name=register.y", "Value=13", ENDITEM,
LAST);
return 0;
}
10.回放脚本
11.执行结果
如果执行失败会显示红色,而且提示failed