最近的项目是歌曲下载的压力测试,在用loadrunner录制脚本的时候只能录制网页上的内容,下载的过程loadrunner不能录制。问题出现了, 如果只用录制的脚本去跑压测对服务器产生的压力相当小,而且下载这个最基本的业务根本没有测试到,压力测试没有意义。
那么问题怎么解决呢?我在网络上搜索了一些解决方案,然后结合自己的应用把下载的业务脚本调好的。主要思想是:
1、用lr的 web_reg_save_param函数保存网页的数据
2、用fopen函数获取写入文件的句柄
3、用fwrite函数在本地写入下载数据
具体脚本如下:
long flen;//定义文件大小
long
fp;//定义文件句柄
char file[256]="\0";//定义保存文件名
char
* chNumber;//保存随机数
web_url("xx",
"URL=下载地址",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
web_link("accompany/",
"Text=accompany/",
"Snapshot=t2.inf",
LAST);
chNumber=lr_eval_string("{Random}"); //获取随机数,其中Random是一个参数能产生随即整数
lr_log_message("随机数是:%s",chNumber);
strcat(file,"e:\\song");//连接函数用于连接两个字符串,文件保存在E盘
strcat(file,chNumber);
strcat(file,".mp3");//文件保存在本机E盘,格式为:song+随机数+.mp3
fp =
fopen(file,"wb");//获取文件句柄,文件句柄是打开文件的唯一识别依据
web_set_max_html_param_len("500000");//设置页面接收最大的字节数,该设置应大于下载文件的大小
web_reg_save_param("FILED","LB=","RB=","Search=Body",LAST);//保存页面下载的内容
web_link("chaqubz.mp3",
"Text={song}",
//参数化下载歌曲
"Snapshot=t3.inf",
LAST);
flen = web_get_int_property( HTTP_INFO_DOWNLOAD_SIZE );//获取下载文件大小
if (flen>=0)
{
fwrite(lr_eval_string("{FILED}"),flen,1,fp);//在本地写入下载数据
}
lr_think_time( 4 );
fclose(fp);
lr_log_message("参数是:%s",lr_eval_string("{song}"));
return 0;