Loadrunner11示例:飞机订票系统。如何手写开发脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/88684096

背景:点击loadrunner11步骤安装,注意:程序自带安装的草莓千万别卸载,留着吧,不然订票系统打不开或其他错误。现在再说它的录制功能,深受广大使用者喜爱,这也是loadrunner本身受欢迎的优势,loadrunner怎样录制脚本,以及录制过程中遇到的问题,都可以点击本文提供的链接参考解决。我坦白:本机windows7系统+ie11,不想通过降低ie版本来实现脚本的录制,或是通过代理录制chrome浏览器的方法我给大家都百度好了,本篇讲的是手写loadrunner脚本,我们叫开发脚本。

1、第一步,打开我们的目标网址,要知道loadrunner自带订票系统默认用户名:jojo,密码:bean。还可以自己注册

2、第二步,按 F12打开开发者工具,点击network,刷新页面获取请求数据:

3、第三步捕捉到我们的接口,第一个接口,登录:

4、第四步利用loadrunner提供的web_custom_request()函数写脚本,写好并F5回放, 这里默认Mode=HTML:

int web_custom_request( const char *RequestName, <List of Attributes>,
[EXTRARES, <List of Resource Attributes>,] LAST ); 

web_custom_request( "Login.pl",
		"URL=http://127.0.0.1:1080/WebTours/login.pl",
		"Method=POST",
		"Body=userSession=125868.742243823ztHtDHDptcQVzzzHDiitzpctAfHf&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off",
		"Mode=HTML",
		LAST);

回放查看结果,pass? 是不是很高兴?

5、第五步,就是调试脚本啦;脚本(开发)录制完的第一件事是F5回放没错,但是别高兴的太早,回放的结果并不代表正确,不代表业务正常走通,举例说明:例如注册接口,如果注册用户参数化的话,每一次回放都会注册成功一个,数据库也会产生一条用户记录,调试脚本第二步是设置检查点并调试:

web_reg_find("Fail=NotFound",
	 "Search=Body",
	 "SaveCount=Success",
	 "Text=Welcome",
	  LAST);

web_custom_request( "Login.pl",
		"URL=http://127.0.0.1:1080/WebTours/login.pl",
		"Method=POST",
		"Body=userSession=125868.742243823ztHtDHDptcQVzzzHDiitzpctAfHf&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off",
		"Mode=HTML",
		LAST);

6、注意注册函数需要放在请求函数之前,录制登录时跳转Welcome页面,就检查页面文本元素,回放如愿以偿报错:

Action.c(38): Error -26366: "Text=Welcome" not found for web_reg_find  	[MsgId: MERR-26366]
Action.c(38): Notify: Saving Parameter "Success = 0".
Action.c(38): web_custom_request("Login.pl") highest severity level was "ERROR", 795 body bytes, 225 header bytes  	[MsgId: MMSG-26388]

7、 没有找到Welcome,结果为Success=0,那么到这里就要调试脚本检查日志,F4设置log:Advanced trace跟踪:

8、最后没有返回任何有价值的信息,这时候就要拿日志的请求url到浏览器访问一下了,结果提示:

You've reached this page incorrectly (probably a bad user session value). Please use this link.

说明有个参数过期或者不正确,userSession,观察请求参数特点:125868.742243823ztHtDHDptcQVzzzHDiitzpctAfHf,一串随机的字符串,应该是动态的,所以脚本需要关联动态数据,那么怎么定位到这个动态数据呢?继续分析,登录之前就要打开登录页,那么这个动态数据是浏览器生成的唯一凭证,按F12定位登录框,看源码有个input标签,有个属性userSession。

9、到这里结果是不是很明确了?再使用web_url()函数添加首页请求,F4再开启Data returned by server日志:

web_url("WebTours",
	  "URL=http://127.0.0.1:1080/WebTours/",
	  "Resource=0",
	  "RecContentType=text/html",
	  "Referer=",
	  "Snapshot=t1.inf",
	  "Mode=HTML",
	  LAST);

web_reg_find("Fail=NotFound",
	 "Search=Body",
	 "SaveCount=Success",
	 "Text=Welcome",
	  LAST);

web_custom_request( "Login.pl",
		"URL=http://127.0.0.1:1080/WebTours/login.pl",
		"Method=POST",
		"Body=userSession=125868.742243823ztHtDHDptcQVzzzHDiitzpctAfHf&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off",
		"Mode=HTML",
		LAST);

10、运行结果找到userSession日志信息,找到了是不是跟web显示的一样,因为input属性是隐藏的所以不显示,但是这个userSession的value值会跟着登录带过去,且每次登录都不一样。数据找到了,接下来就是关联函数上场:

11、Alt+insert快捷选择函数,也可以一步一步的来找,右键insert--New Steps--查找web_reg_save_param这个函数:

tips:我使用的是web_reg_save_param_ex()函数,至于两者的区别有兴趣的可以去查看帮助文档介绍的使用说明;Ordinal

web_reg_save_param("userSession",
	"LB=value=",
	"RB=>",
	"NotFound=ERROR",
	"Search=Body",
	LAST);

web_url("WebTours",
	  "URL=http://127.0.0.1:1080/WebTours/",
	  "Resource=0",
	  "RecContentType=text/html",
	  "Referer=",
	  "Snapshot=t1.inf",
	  "Mode=HTML",
	  LAST);

web_reg_find("Fail=NotFound",
	 "Search=Body",
	 "SaveCount=Success",
	 "Text=Welcome",
	  LAST);

web_custom_request( "Login.pl",
		"URL=http://127.0.0.1:1080/WebTours/login.pl",
		"Method=POST",
		"Body=userSession={userSession}&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off",
		"Mode=HTML",
		LAST);

12、loadrunner的参数引用格式是:{param},再F4我们设置log成Parameter subsitution:

13、自此一个登录脚本已经完成了,从抓包、写请求函数、调试(包括检查点、关联),如果要做性能就要初始化用户数据即可;本篇还大致介绍了F4对log的设置及作用;但是有一个小bug,本文的web_custom_request()函数Mode不能设置成HTTP模式,不然会报错,也就是登录失败。查看帮助文档有个模糊大概的理解,http模式如果是对http纯接口的请求可以通用,不然跟html资源使用就获取不到html返回的资源:

The Recording Level or Mode for Web scripts. The possible values are: 

HTML level: Instructs VuGen to record HTML actions intuitively, in the context of the current Web page. The actions are recorded as URL steps (web_url), link steps (web_link), image steps (web_image), and form submission steps (web_submit_form). VuGen records only the HTTP requests that return HTML pages, but not scripts or applications. 

HTTP level: Instructs VuGen to record all requests from the server as URL steps (web_url statements). It does not generate the web_link, web_image, or web_submit_form functions. This method is more scalable, but less intuitive when reading a generated script. 

In older versions, the HTTP level is called NORESOURCE. 

猜你喜欢

转载自blog.csdn.net/u011466469/article/details/88684096