在测试中包括图像,CSS,JS等静态资源
问题内容:
我最近开始使用JMeter为我的Web应用程序创建负载测试。我真的很喜欢这个工具,看完一些视频后,开始创建测试真的很容易。
然而,有一件事我不清楚。
在JMeter主页上阅读“最佳实践”部分。其中包括:
最重要的事情是过滤掉所有您不感兴趣的请求。例如,记录图像请求毫无意义(可以指示JMeter在页面上下载所有图像-请参见HTTP
Request)。这些只会使您的测试计划变得混乱。
我在其他页面上也看到了这一点,并说您不应在测试中包括对图像或任何其他静态资源的请求。但是,我仍然找不到一个页面,该页面很好地解释了为什么不应该包含静态资源。
当然,JMeter不是浏览器,但是对静态资源的请求无疑会影响您的应用程序的性能吗?有人可以给我一个很好的解释:-)
问题答案:
这完全取决于您要测试的内容。
总的来说,我使用JMeter进行两种类型的性能测试:特定测试(我在其中查看我担心的事情)和“安全网”(Safety
net)测试,在其中我对整个应用程序进行测量以确保其确实有效我期望的方式。
特定的测试几乎总是处理Web应用程序的动态方面-服务器端代码(.aspx,.php,.jsp等)。这是大多数应用程序遇到瓶颈的地方-
运行服务器端脚本的工作量比从磁盘检索CSS文件并将其提供给浏览器而不进行任何其他处理的工作量高很多倍。如果我正在测试服务器端脚本,那么我也不想加载资产-
因为它们会使测试混乱,并在测试客户端消耗带宽。我不希望我的测试失败,因为我的JMeter服务器正在每个线程上下载5MB的视频文件并消耗了所有带宽,而我实际上想做的就是查看服务器每秒可以支持多少个登录。
测试您的Web服务器提供静态文件的能力几乎没有意义-
微软,Apache团队,无论谁,都已经做了出色的工作。除非您有非常具体的问题,否则有更好的方法来花费您的测试预算。
安全网测试将整个过程放在一起,以证明它确实按照我期望的方式工作。通常,我在生产(如)环境上运行它们,因此我具有CDN,生产级硬件和“实时”应用程序配置。我通常为此使用基于云的测试服务,因此我可以从不同的位置查看性能,并生成足够的负载来强调生产级工具包。您可以为此使用JMeter(我过去使用过几个JMeter
Cloud服务)。这很昂贵,可能需要停机,您只应将其作为安全网。