LoadRunner手写脚本基础实战之重定向

  • Post author:
  • Post category:其他


小编接触性能测试工具时间不长,如果有理解错误的地方,还望纠正,小编微信17673231234

欢迎正在学习LoadRunner的小伙伴加我,一起来解决问题。

此文章仅做参考

辅助工具fiddler(大牛可以用谷歌浏览器,抓包工具只是更加清晰看到请求/响应,方便小白使用),现在一般来说 ,HTTP,大部分都是Get,post     二种传输方式

LoadRunner手写关键靠的是web_custom_request()函数

原型如下:


web_custom_request

(“post_query.exe”, “Method=POST”,

“URL=http://lazarus/cgi–bin/post_query.exe”,

“Body=–––––––––––––––––––––––––––––292742461228954\r\nContent–Disp”

“osition: form–data; name=\”entry\”\r\n\r\nText\r\n––––––––––”

“–––––––––––––––––––292742461228954\r\nContent–Disposition: f”

“–––––––––––292742461228954––\r\n”,

“TargetFrame=”,

LAST );

此模板是惠普公司官方提供。对于url,Method ,body等参数,本文不做介绍,有兴趣的可以自己深究。

首先,给大家明确一下我实战系统的操作流程。

a,访问首页 b,登录账户,

分二步,也就是说,有二个请求(实际上一个操作,代表可能含有多个请求,此处只是一般情况),了解到流程以后,下面开始我们的实战之路。


1)

手写 浏览器打开网址 并且同时打开抓包软件,将fiddler 设置响应后断点。

本人建议使用响应后拦截,因为可以直观的看到响应内容是什么,更加直观的确定这个请求是否是跟你真是操作得出的响应一致(比如登录主页,在fiddler响应中查看文本视图,响应一般都是网页格式源代码,或者json格式)

刷新网页,如图所示:参数就出来了,为了域名安全,此处我将详细地址模糊处理。


将截取的url地址,get等参数填到函数中比如,

web_custom_request

(“open”, “Method=get”, “URL=填你抓取的后台url地址”,LAST );

2)第二步,跟第一步类似,但是呢?是Post协议,抓取的数据如图(操作跟之前一样,输入账户跟密码,fiddler直接开启拦截,点击登录就可以将响应拦截下来了)


当我查看到这个响应的时候,细心的朋友可能发现了,回复的状态吗是302 意思是重定向了。

(关于重定向读者可以自行百度下明确其含义,不过小编还是做一个简单的例子吧,就比如是你去商店买东西,你说老板买瓶雪碧,然后老板说

不好意思,我们这里没雪碧,叫你去另外一家超市买,于是你去了另外一家超市,买了个雪碧。这就是重定向)

然后你继续点击图中的文本视图(响应的网页形式,意思是如果登录成功了,显示的应该是登录后首页的html源代码),发觉是空的。

此时,别慌,点击  fiddler 中的运行完成,果然,fiddler左边多了一条会话记录,双击那条会话,查看请求以及响应数据如图所示。


查看会话2的响应发现跟登录首页后的源代码一致,此时 ,本人明白了,登录请求,分了二个操作,第一个是请求,将数据post传输过去,然后服务器告诉你,地址不是在这里请求,叫你去另外一个地方,也就是Location对应的网址。,于是就出现了会话2,以及图二下响应的登录后首页的源代码响应

所以对于登录操作,我们需要编写二个请求login1,login2(跟之前说的,一个操作,可能含有多个请求,这里就体现出来了)


web_custom_request

(“login1”, “Method=POST”,

“URL=方法如图一”,

“Body=图二已经标识”

LAST );


web_custom_request

(“login2”, “Method=get”, “URL=图三Url”,LAST );


此处登录分为2个请求,但是实际上来说(我们开发说的),只要login1请求没错,系统就会检测已经登录了首页了(log中查看),并不需要login2请求,因为login请求只是为了响应源代码给客户端,也就是按小编的理解来说,login只是一个传送网页Html给客户端的操作。


这个需要开你们开发定义什么才叫做成功。不同的应该会有区别

在Vugen中运行这个三个函数,基本没有问题了,检查系统标准日志没问题


此时,完美的一波重定向的手写代码就已经结束了。

小结:

1)当小编在login1之前设置了一个web_reg_find(“text=xiejiangpeng”,LAST);检查点函数

终于 报错了。

于是疯狂查询资料,又感觉和逻辑不和,既然我成功登录了,为什么检查不到text呢?

后来思索了下

其实问题很简单

既然有二个请求,第一个请求是登录成功提示重定向,第二个请求才是返回页面源代码

所以第二个请求,才是返回Html网页,那么你放Login1函数之前怎么可能检查得到?

移动检查点函数位置,放置Login2前面于是问题得到了解决。

2)解决了第一个问题之后,小编感觉,既然检查点能够检查,那我开启run time setting的扩展日志(只开启从服务器返回的数据)

运行一波,在去日志中,Ctrl+F 搜索,是不是也能搜到?

照着这个思路,于是小编开启了扩展日志,结果,日志出现红色报错了。。。

一开始  小编感觉很奇怪,

既然代码是一样的?难道正确错误?还跟日志有关?

于是,小编,冷静了一会,将问题思索了下,终于发现了问题。

那个红色日志的提示错误,是超时120????what? 原来是这个错误

明确了以后,小编立即将120s改成了500s(注意这个超时时间好像有几个具体几个我忘了,有需要的自行百度吧,但是日志提示报错,会显示具体是哪一个,为了安全起见,小编把所有的超时选项,都设置大了很多)

果然,在运行一次,程序运行市场将近五分钟,但是问题已经解决

总结一下,这个原因,应该是开启扩展日志,程序日志要返回很多响应消息,所以显示超时(还是下载资源超时,这个小编理解不是很深刻),才导致了这个错误的发生




3)其实后面小编思索,因为很多网页或者服务器,采用的是cooike,session,token等保存用户登录信息,也就是说,


比如这二个流程,


每一个流程,对应很多操作。而一个操作就是一个请求(一般情况下),也就是我们用

web_custom_request()函数所封装的数据

a)登录-点击订单模块-点击新建订单-提交订单数据(因为输入订单信息不涉及请求传输,此操作也就是save)。

b)登录-提交订单数据

一般来说,第一个流程,是真实情况下,大家在网页中操作步骤

大家认为 ,是否可以跳过中间哪个点击订单模块,点击新建订单,直接登录之后,提交订单数据呢?

答案是可以的,

由于小编对代码一窍不通,然后对网页协议也是半吊子,

所以表达一下个人的看法吧仅限参考,有错误还望纠正,当我用账户跟密码登录进去的时候,服务器会给我的浏览器发送一个叫做set cookie的东西,然后客户端保存在本地了,然后每次,当客户端发送请求给服务器的时候,就会自动在请求头上加上cookie,然后服务器就知道还是刚才那个用户在跟他打交道,于是,可以这么解释,当我们登录进去了,就说明已经设置了cooike,所以我们并不需要跟真实网页操作一样,可以在登录之后,直接提交你需要请求的操作。

说这些,只是想优化下代码,并且提高效率。

本人测试小白,希望各位多多指教,手打不易,总结经验也是一方面,希望大家支持。



版权声明:本文为Tester_xjp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。