对web请求(HTTP/HTML)进行性能测试,确认请求响应时间。分别使用Loadrunner和JMeter进行测试,比较测试结果。
1、LoadRunner测试web请求响应时间
1.1 编制(录制)脚本
创建单协议(HTTP/HTML)脚本,调用如下web_url,作为一个简单事务:
lr_start_transaction("test");
web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Snapshot=t1.inf",
"Mode=HTML",
LAST );
lr_end_transaction("test");
1.2 运行时设置
在Virtual User Generator,打开Vuser/Runtime Setting,设置browser emulation。设置每个迭代使用新的vuser,同时不使用cache,模拟用户第一次发送请求效果,如下:
图1 设置browser emulation
1.3 单个用户运行
设置脚本以单用户在vu generator中运行,迭代10次。
通过调用lr_start_timer和lr_end_timer函数获取web_url消耗时间,调用lr_get_transaction_wasted_time获取事务浪费时间,并调用lr_output_message打印到replay log中。
执行结果:
Action.c(129): web_url("www.baidu.com") was successful, 24357 body bytes, 2474 header bytes, 38 chunking overhead bytes [MsgId: MMSG-26385]
Action.c(144): web_url elapsed = 1.085238
Action.c(167): lr_get_transaction_wasted_time = 0.868584
Action.c(172): Duration = 1.118885 , Waste = 0.868584
Action.c(182): Notify: Transaction "DL_PC" ended with "Fail" status (Duration: 1.1315 Wasted Time: 0.8686).
Action.c(185): actualElapsedTime = 1.146042
上述消息显示,web_url请求成功返回,消耗时间1.085238秒,其中浪费时间0.868584秒。注意,Duration值稍大于web_url elapsed时间。
那么,该事务的实际消耗时间,应该是Duration - Wasted Time,为0.2629秒。10次迭代平均值约为0.255秒,见下表。
表1 LR测试的web_url请求平均duration时间和浪费时间
迭代次数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
2~10次平均 |
web_url time |
1.408252 |
0.231590 |
0.371534 |
0.416005 |
0.235011 |
0.215672 |
0.255214 |
0.215151 |
0.211167 |
0.255022 |
0.267374 |
wasted_time |
0.910228 |
0.018863 |
0.010128 |
0.013624 |
0.010553 |
0.010947 |
0.010819 |
0.010799 |
0.011404 |
0.010636 |
0.011975 |
接下来,在JMeter上执行相同的操作,记录单个请求的平均响应时间。
2、 JMeter测试web请求响应时间
2.1 测试计划
在JMeter测试计划的线程组下,添加HTTP Cache Manager,勾选clear cache each iteration?,以使得每次迭代模拟用户第一次操作效果。
然后添加测试HTTP采样器,集合报告,查看结果树等等。
HTTP采样器的路径填写:http://www.baidu.com/。
2.2 单线程组运行
线程组的线程数属性设为1,迭代次数设为10,ramp-up设为0。
执行结果