Loadrunner:手撕飞机订票系统性能测试脚本示例

本文详细介绍使用LoadRunner手写脚本进行飞机订票系统的性能测试。从安装配置开始,逐步讲解如何抓取请求、编写定制化的请求函数、设置检查点、关联动态数据等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在性能测试领域,LoadRunner是一个强大的工具,它能够模拟成千上万的虚拟用户,对飞机订票系统进行压力测试。下面是一个手撕飞机订票系统性能测试脚本的示例,展示了如何使用LoadRunner来创建一个高效的测试脚本。

安装过程

点击loadrunner11步骤安装

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

1、第一步,打开我们的目标网址http:localhost:1080/WebTours(如没有需要单独安装并且start server),要知道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. 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

职说测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值