性能需求:对系统某页面中,点击下载功能做并发测试,以获取在并发下载文件的情况下系统的性能指标。
备注:页面上点击下载时的文件可以是word、excel、pdf等。
问题1:录制完下载的场景后,发现脚本里面并没有包含下载的脚本或url?
解决步骤:
1. 在IE浏览器上打开需要测试功点的页面,点击下载链接前启用httpWatch录制下载功能点,然后查看Stream下面服务器返回的响应信息,一个HTTP响应代表服务器向客户端回送的数据,它包括:
一个状态行、若干消息头、以及实体内容 ,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
如图:只需要关注服务器响应的content-type=application/octet-stream
2. 设置LoadRunner录制选项-HTTP属性-高级-非资源,在里面添加非资源内容类型:application/octet-stream ,如图:
3. 添加完后,再次重新录制脚本,在脚本里面就会有mod=attachment&参数的url请求,脚本代码如下:
download() {lr_think_time(3);lr_start_transaction("download");web_url("forum.php_5", "URL=http://127.0.0.1/Discuz/upload/forum.php?mod=attachment&aid=M3wxMTZiMzFhOXwxNDQzODQ0ODc2fDN8NA%3D%3D", "Resource=0", "RecContentType=application/octet-stream", "Referer=http://127.0.0.1/Discuz/upload/forum.php?mod=viewthread&tid=4&extra=page%3D1", "Snapshot=t6.inf", "Mode=HTML", LAST);lr_end_transaction("download",LR_AUTO);return 0; }
此时,录制下载的脚本有了,但是LoadRunner回放运行脚本后,并没有像手工操作那样真实的把文件下载下来,为什么?
测试场景分析:一般我们手工在页面上点击下载链接时,浏览器会弹出下载保存框,下载并保存到本地电脑里面,而使用LoadRunner录制这种场景时,是不会录制到浏览器弹出下载保存框并保存到本地电脑的步骤的,当点击某个下载文件链接时,LoadRunner录制的脚本里面只会以web_url()函数模拟发送下载的请求,服务器响应直接返回需要下载文件里面的内容,这是通过content-type=application/octet-stream来决定的。所以,LoadRunner在回放脚本的时候,其实已经对服务器产生下载功能的效果了。
问题2:当设置LoadRunner常规选项-显示-勾选show browser during replay时,回放运行脚本,运行时查看器的窗口会弹出下载并保存的提示框,如何解决?
如图:
问题分析:
1、 运行回放下载功能脚本出现此提示的原因是服务器响应返回的只有二进制文件,并且content-type=application/octet-stream才会产生,文本文件不会出现;查看快照如图:
2、 保存的文件格式是UNK,其实保存在本地电脑上,重命名下载文件的格式后,再打开该文件,会发现文件内容就是下载的文件;
3、 不保存或者取消弹出的UNK文件窗口,再次运行vugen时会提示“default result directory is locked”;
解决方法:
把去掉勾选“show browser during replay”即可。