对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。
执行结果