LR中Web请求中的EXTRARES不能去掉
在坛子里看到有人在讨论Web请求中的EXTRARES后面的东西能不能不要,我看到一些人理所当然地认为可有可无,为什么呢?谁它的名字叫EXTRARES呢,事实上,性能测试是一门很严谨的技术,不可大意,在没有100%把握之前我们不应该下定论。
关于这一点,结论是EXTRARES部分不能删,删除了LR就不会去下载相关资源了,也就意味着一个请求的Response会变小,毫无疑问,响应时间就会变得快一些,吞吐量变得少一些,数据变得非常的不真实。
那么我是如何来设计这个实验模型得出这样的结论的呢?我们就以访问http://bbs.51testing.com这个页面来做这个实验,怎么做呢?
1) 录制访问本论坛首页的GET请求(web_url函数生成),代码如下:
web_url("bbs.51testing.com",
"URL=http://bbs.51testing.com/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t2.inf",
"Mode=HTML",
EXTRARES,
"Url=/images/default/menu_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/frame_on.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/arrow_down.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/portalbox_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/menu_itemline.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/forumlink.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/online.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/arrow_right.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/header_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/cat_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=http://zs1.cnzz.com/stat.htm?id=1743488&r=&lg=zh-cn&ntime=0.35238800%201269021786&repeatip=6&rtime=1&cnzz_eid=80487640-1268962788-&showp=1280x800&st=357&sin=&res=0", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/cn.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/fenl.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/zazhi.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/zhuanti.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
LAST);
2) 在此函数后使用web_get_int_property函数来取得响应的大小:
lr_output_message("%d", web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE));
3) 运行,得到结果为:1451146 (居然有1.4M,这论坛首页也太大了)
4) 将EXTRARES后面的属性全拿掉(备注即可),再次运行,得到结果为:700095 (700K不到,差不多节省了一半的大小)
现在结论基本有了:不能删,那么为了再严谨一点,再并发10个用户运行一次看看其响应时间和吞吐量是否一致
5) 不备注EXTRARES,打开Controller并发10个用户运行1次,得出:
总吞吐量:14511462 总请求数:430 响应时间:54秒
6) 备注掉EXTRARES,打开Controller并发10个用户运行1次,得出:
总吞吐量:7,000,941 总请求数:280 响应时间:26秒
从总吞吐量,我们很容易看出这不能少,从总请求数,我们也看出来,刚好少150个请求,为什么是150呢,因为我们10个并发用户做一次,每一个Extrares后面跟了15个资源文件,10次当然是150个GET请求少掉咯。当然,这响应时间的差别也是同样的,非常夸张,令人吃惊。
大家也可以自己去做这样的实验来验证这个结论,东西不能乱删,包括默认录制出来的一些Cookie信息,也不能随便删除,除非你知道它们都在干嘛,你为什么需要/不需要它们。
关于这一点,结论是EXTRARES部分不能删,删除了LR就不会去下载相关资源了,也就意味着一个请求的Response会变小,毫无疑问,响应时间就会变得快一些,吞吐量变得少一些,数据变得非常的不真实。
那么我是如何来设计这个实验模型得出这样的结论的呢?我们就以访问http://bbs.51testing.com这个页面来做这个实验,怎么做呢?
1) 录制访问本论坛首页的GET请求(web_url函数生成),代码如下:
web_url("bbs.51testing.com",
"URL=http://bbs.51testing.com/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t2.inf",
"Mode=HTML",
EXTRARES,
"Url=/images/default/menu_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/frame_on.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/arrow_down.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/portalbox_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/menu_itemline.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/forumlink.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/online.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/arrow_right.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/header_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/default/cat_bg.gif", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=http://zs1.cnzz.com/stat.htm?id=1743488&r=&lg=zh-cn&ntime=0.35238800%201269021786&repeatip=6&rtime=1&cnzz_eid=80487640-1268962788-&showp=1280x800&st=357&sin=&res=0", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/cn.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/fenl.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/zazhi.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
"Url=/images/zhuanti.swf", "Referer=http://bbs.51testing.com/default.php", ENDITEM,
LAST);
2) 在此函数后使用web_get_int_property函数来取得响应的大小:
lr_output_message("%d", web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE));
3) 运行,得到结果为:1451146 (居然有1.4M,这论坛首页也太大了)
4) 将EXTRARES后面的属性全拿掉(备注即可),再次运行,得到结果为:700095 (700K不到,差不多节省了一半的大小)
现在结论基本有了:不能删,那么为了再严谨一点,再并发10个用户运行一次看看其响应时间和吞吐量是否一致
5) 不备注EXTRARES,打开Controller并发10个用户运行1次,得出:
总吞吐量:14511462 总请求数:430 响应时间:54秒
6) 备注掉EXTRARES,打开Controller并发10个用户运行1次,得出:
总吞吐量:7,000,941 总请求数:280 响应时间:26秒
从总吞吐量,我们很容易看出这不能少,从总请求数,我们也看出来,刚好少150个请求,为什么是150呢,因为我们10个并发用户做一次,每一个Extrares后面跟了15个资源文件,10次当然是150个GET请求少掉咯。当然,这响应时间的差别也是同样的,非常夸张,令人吃惊。
大家也可以自己去做这样的实验来验证这个结论,东西不能乱删,包括默认录制出来的一些Cookie信息,也不能随便删除,除非你知道它们都在干嘛,你为什么需要/不需要它们。