脚本概要
Init,action,end说明
init录制的一般是业务流程开始之前的初始化工作(如登录,服务器初始化)
action录制的议案是业务流程操作的事件
end录制的一般是退出的时候执行的操作(用户退出,注销)
init和end不能迭代多次,只能运行一次,action可以迭代多次执行
脚本录制操作步骤
脚本详解
那loadrunner自带的程序来说,首先我们启动webserver服务,打开浏览器访问http://127.0.0.1:1080/WebTours/
使用loadrunner进行订票系统的录制,录制的脚本如下
Action() { web_url("WebTours", "URL=http://localhost:1080/WebTours/", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t2.inf", "Mode=HTML", LAST); lr_think_time(6); web_submit_form("login.pl", "Snapshot=t3.inf", ITEMDATA, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=login.x", "Value=45", ENDITEM, "Name=login.y", "Value=14", ENDITEM, LAST); web_image("Search Flights Button", "Alt=Search Flights Button", "Snapshot=t4.inf", LAST); lr_think_time(7); web_submit_form("reservations.pl", "Snapshot=t5.inf", ITEMDATA, "Name=depart", "Value=London", ENDITEM, "Name=departDate", "Value=05/17/2016", ENDITEM, "Name=arrive", "Value=Paris", ENDITEM, "Name=returnDate", "Value=05/18/2016", ENDITEM, "Name=numPassengers", "Value=2", ENDITEM, "Name=roundtrip", "Value=<OFF>", ENDITEM, "Name=seatPref", "Value=None", ENDITEM, "Name=seatType", "Value=Coach", ENDITEM, "Name=findFlights.x", "Value=8", ENDITEM, "Name=findFlights.y", "Value=10", ENDITEM, LAST); web_submit_form("reservations.pl_2", "Snapshot=t6.inf", ITEMDATA, "Name=outboundFlight", "Value=241;97;05/17/2016", ENDITEM, "Name=reserveFlights.x", "Value=37", ENDITEM, "Name=reserveFlights.y", "Value=7", ENDITEM, LAST); web_submit_form("reservations.pl_3", "Snapshot=t7.inf", ITEMDATA, "Name=firstName", "Value=Joseph", ENDITEM, "Name=lastName", "Value=Marshall", ENDITEM, "Name=address1", "Value=234 Willow Drive", ENDITEM, "Name=address2", "Value=San Jose/CA/94085", ENDITEM, "Name=pass1", "Value=Joseph Marshall", ENDITEM, "Name=pass2", "Value=", ENDITEM, "Name=creditCard", "Value=", ENDITEM, "Name=expDate", "Value=", ENDITEM, "Name=saveCC", "Value=<OFF>", ENDITEM, "Name=buyFlights.x", "Value=44", ENDITEM, "Name=buyFlights.y", "Value=13", ENDITEM, LAST); web_image("SignOff Button", "Alt=SignOff Button", "Snapshot=t8.inf", LAST); return 0; }
下面看另一个简单的小程序
Action() { int randomnumber; randomnumber = rand() % 2+1; switch (randomnumber) { case 1: { lr_rendezvous("访问百度集合点"); web_url("www.baidu.com", "URL=http://www.baidu.com/", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t12.inf", "Mode=HTML", EXTRARES, "Url=http://s1.bdstatic.com/r/www/img/i-1.0.0.png", ENDITEM, "Url=/favicon.ico", "Referer=", ENDITEM, "Url=http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif", ENDITEM, LAST); return 0; } case 2: { lr_rendezvous("访问有道集合点"); web_url("www.youdao.com", "URL=http://www.youdao.com/", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t7.inf", "Mode=HTML", EXTRARES, "Url=http://shared.ydstatic.com/oxo/p/pic.gif", ENDITEM, "Url=http://shared.ydstatic.com/oxo/p/logo.png?1", ENDITEM, "Url=http://shared.ydstatic.com/oxo/p/nv_line.gif", ENDITEM, "Url=http://shared.ydstatic.com/r/2.0/p/pic.gif", ENDITEM, LAST); return 0; } } }
上面的程序,我分别录制了百度、有道访问首页的代码,我想在运行脚本时,随机的去访问其中一个网站,如何做呢?我们通过随机函数,随机出1~3之间的整数,根据随机来的结果,然后执行switch语句中的代码。在Vugen中回放的结果如下
虚拟用户脚本已从 : 2016-05-16 15:10:09 启动 正在开始操作 vuser_init。 Windows 7 版 LoadRunner 11.0.0 的 Web Turbo 重播; 内部版本 8859 (Aug 18 2010 20:14:31) [MsgId: MMSG-27143] Run Mode: HTML [MsgId: MMSG-26000] 运行时设置文件: "C:Users246AppDataLocalTemp无名称1\default.cfg" [MsgId: MMSG-27141] 正在结束操作 vuser_init。 正在运行 Vuser... 正在开始迭代 1。 正在开始操作 Action。 Action.c(10): 集合 访问百度集合点 Action.c(12): 正在下载资源“http://s1.bdstatic.com/r/www/img/i-1.0.0.png”(由参数编号 9 指定) [MsgId: MMSG-26577] Action.c(12): 正在下载资源“http://www.baidu.com/favicon.ico”(由参数编号 11 指定) [MsgId: MMSG-26577] Action.c(12): 正在下载资源“http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif”(由参数编号 14 指定) [MsgId: MMSG-26577] Action.c(12): 在 HTML“http://www.baidu.com/”中找到资源“http://www.baidu.com/img/bd_logo1.png” [MsgId: MMSG-26659] Action.c(12): 在 HTML“http://www.baidu.com/”中找到资源“http://www.baidu.com/img/baidu_jgylogo3.gif” [MsgId: MMSG-26659] Action.c(12): 在 HTML“http://www.baidu.com/”中找到资源“http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js” [MsgId: MMSG-26659] Action.c(12): web_url("www.baidu.com") 已成功,73783 个正文字节,3048 个标头字节,13 个成块开销字节 [MsgId: MMSG-26385] 正在结束操作 Action。 正在结束迭代 1。 正在结束 Vuser... 正在开始操作 vuser_end。 正在结束操作 vuser_end。 Vuser 已终止。
下面的程序是一个读取文件的例子
首先我们新建一个read.txt的文件,里面随便写一些内容
Action() { int count,total=0; char buffer [10]; long file_stream; char * filename = "C:\read.txt"; //读取文件的存放位置 //判断是否可以读取文件 if((file_stream =fopen(filename,"r"))==NULL) { lr_error_message("不能打开%s文件!",filename); return -1; } while(!feof(file_stream)) { count=fread(buffer,sizeof(char),10,file_stream); //从文件中读取50个字符 total=total+count; //字符个数计数 if(total>=10) { fclose(file_stream); //关闭文件 lr_output_message("文件的前10字符:%s",buffer); break; //退出循环 } } return 0; }
回放结果如下:
虚拟用户脚本已从 : 2016-05-16 15:31:33 启动 正在开始操作 vuser_init。 Windows 7 版 LoadRunner 11.0.0 的 Web Turbo 重播; 内部版本 8859 (Aug 18 2010 20:14:31) [MsgId: MMSG-27143] Run Mode: HTML [MsgId: MMSG-26000] 运行时设置文件: "C:Users246AppDataLocalTemp无名称1\default.cfg" [MsgId: MMSG-27141] 正在结束操作 vuser_init。 正在运行 Vuser... 正在开始迭代 1。 正在开始操作 Action。 Action.c(24): 文件的前10字符:猪猪654bhe 正在结束操作 Action。 正在结束迭代 1。 正在结束 Vuser... 正在开始操作 vuser_end。 正在结束操作 vuser_end。 Vuser 已终止。
在了解脚本的基本含义之后,我们所要做的就是熟悉loadrunner的常用函数。