LoadRunner下载的疑难问题一例

2016-07-08  秦天 

在进行压力测试过程中,经常会涉及到下载文件并保存的过程。至于如何用LoadRunner来实现,网上的资料很多,但是方法都一样的。大体的逻辑如下:

1、 用web_reg_save_param函数获取所有的返回内容

2、 用web_get_int_property函数拿到服务器返回的大小

3、 用fwrite函数将数据流写入到指定目录的文件中。

详细代码如下:


于是我也copy了下,这个脚本下载了搜狗浏览器,并保存到本地。运行一下,坐等下载结果。

咦?报错了,看了下,原来是设置的下载超时时间太短,实际下载时间超过120s了。果断打开配置改了下

找到run-time settings→prefences→advanced opinion后,将step download timeout(sec)的值改为1000(最大值),重新运行了下:

运行成功了,去对应目录运行下

擦~怎么安装包损坏了?果断下载一个官网的正常的包,对比下md5值看下

可以看出

1、 md5和官网的不一样

2、 通过LR下载的包比正常的包多了两百多字节。

果断通过compare对比下两个包的16进制。

发现前面所有的数据都一样,只是LR下载的包最后多加了一些空字符。于是可以定位,是fwrite函数中传的文件长度长了。

看下脚本: flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);

难道是这个长度获取的长了?

到网上查了下,原来HTTP_INFO_DOWNLOAD_SIZE是计算body和header的大小。咱们需要的只是body,原来如此~~~

既然这个函数统计的结果不准确,只能重新找方法统计大小了。

于是想到了LR还有一个函数可以自己计算大小:web_save_param_length()

重新修改了下脚本:

重新跑一边。发现下载下来的文件长度正确了,和官网正常下载的包一致。


至此,此问题完满解决。

总结一下:

1、 网上的东西即使都用的同样的方法,也未必正确。

2、web_set_max_html_param_len 这个能小则小,很烧内存的

3、 fopen函数分txt读写和二进制流读写,如果以txt读写方式写二进制文件,也会报错。具体参数列表可以参见http://blog.chinaunix.net/uid-20622737-id-1913086.html

341°/3406 人阅读/1 条评论 发表评论

邓智群  2016-07-08

图片显示不了,而且暴漏了你的路径,你的电脑用户名:ccz?


登录 后发表评论