我正在努力寻找解决方案。
我所做的:
我记录了导航页面使用 HTTP 代理服务器生成的每个文件。添加线程组下的所有文件我运行了测试计划,一次没有缓存,一次有缓存。
我得到了什么:
但是我在该页面上使用 Firebug 得到的响应时间比我使用 Jmeter [缓存和非缓存] 得到的响应时间少 30-40 秒。
注意:该页面包含 ajax。
问题:
- 与 Firebug 结果相比,AJAX 是我在响应时间方面出现巨大差异的原因吗?
- 我需要限制几个文件吗?我不会将它们添加到线程组吗?
谢谢。
我正在努力寻找解决方案。
我所做的:
我记录了导航页面使用 HTTP 代理服务器生成的每个文件。添加线程组下的所有文件我运行了测试计划,一次没有缓存,一次有缓存。
我得到了什么:
但是我在该页面上使用 Firebug 得到的响应时间比我使用 Jmeter [缓存和非缓存] 得到的响应时间少 30-40 秒。
注意:该页面包含 ajax。
问题:
谢谢。
Jmeter 不渲染页面,也不做javascript,所以它也不做ajax。
但是,ajax 会生成请求,如果您使用它,这些请求将被代理捕获。
另一个关键区别是大多数浏览器会同时执行请求,通常一次发出 4 到 6 个请求,具体取决于浏览器和设置。
Jmeter 会以串行方式而不是并行方式发出每个请求,因此这也可能会增加给定页面及其所有子样本的总加载时间。
如果您查看每个请求的请求时间并将它们相加,它应该非常接近
对于问题二,我建议不要排除它们,因为您想要准确测量负载,并且排除文件会扭曲您的结果。
有时,负载测试和页面加载速度这两个概念会混淆。真的,尽管它们完全不同,应该使用不同的工具以不同的方式处理。
记录加载页面所需时间的最佳工具是浏览器。如果将其与秒表和合适的样本量相结合,您将获得一些有用的数据。说真的,这是一个很好的方法,您不仅可以获得真实的结果,而且还可以在页面被加载时停止时钟,这真的很重要。如果你想自动化这个过程来产生可重复性,或者你只是想要更细的粒度,那么你应该看看功能自动化工具(比如 Seleneum)。但这是功能测试,不是负载测试,如果你想进行负载测试,那么像 JMeter 这样的东西非常有效。
也就是说,我怀疑如果您在 JMeter 中看到响应时间增加了 40 秒,那么可能是因为您正在使用多个线程运行负载测试?可能您正在使服务器超载,这就是响应时间更长的原因。
正如 Lee 所说,JMeter 串行(一个接一个)发出请求,而浏览器将并行请求资源,一次最多打开 8 个到每个主机的连接(因此在更复杂的情况下可能会发生超过 8 个并行事务页)。简而言之,JMeter 在测量总页面加载时间方面并不准确。因此,它适用于在网站上放置负载或仅测试页面内容本身,但不适用于测量真实的页面加载时间或模拟真实的加载模式。为此,您将需要一个更好的工具。