问题 在测试中包括静态资源,如图像,css,js等


我最近开始使用JMeter为我的Web应用程序创建负载测试。我非常喜欢这个工具,在观看了一些视频后,开始创建测试非常容易。

但有一点我不清楚。

在JMeter主页上阅读,有一个 “最佳实践”部分。除其他外,它说:

最重要的是过滤掉您不感兴趣的所有请求。例如,记录图像请求没有意义(可以指示JMeter下载页面上的所有图像 - 请参阅HTTP请求)。这些只会使您的测试计划变得混乱。

我在其他页面上也看到了这一点,并说你不应该在测试中包含对图像或任何其他静态资源的请求。然而,我仍然无法找到一个单独的页面,为什么你不包含静态资源给出了很好的解释。

当然,JMeter不是一个浏览器,但对静态资源的请求无疑会影响您的应用程序的性能?有人可以给我一个很好的解释:-)


6923
2018-01-04 10:55


起源



答案:


这一切都取决于你要测试的内容。

一般来说,我使用JMeter进行两种类型的性能测试:具体测试,我看看我担心的事情,以及“安全网”测试,我测量整个应用程序以确保它确实有效我期望它的方式。

特定测试几乎总是处理Web应用程序的动态方面 - 服务器端代码(.aspx,.php,.jsp等)。这是大多数应用程序存在瓶颈的地方 - 运行服务器端脚本的努力比从磁盘检索CSS文件并将其提供给浏览器而无需任何额外处理的努力要高很多倍。如果我正在测试服务器端脚本,我也不想加载资产 - 因为它们会混乱测试,并在测试客户端消耗带宽。我不希望我的测试失败,因为我的JMeter服务器在每个线程上下载5MB视频文件并消耗所有带宽,而我实际上要做的是查看服务器每秒可以支持多少次登录。

在测试你的网络服务器提供静态文件的能力方面没有什么意义 - 微软,阿帕奇团队,无论是谁,已经在这方面做得非常出色;除非您有特别关注的问题,否则有更好的方法来花费您的测试预算。

安全网测试将整个事情放在一起,以证明它确实以我期望的方式运行。通常,我在生产(类似)环境中运行这些,因此我有一个CDN,生产级硬件和“实时”应用程序配置。我通常会为此使用基于云的测试服务,因此我可以看到来自不同位置的性能,并产生足够的负载来强调生产级套件。你可以使用JMeter(我过去曾经使用过几种JMeter Cloud服务)。它很昂贵,可能需要停机,你应该只把它当作安全网。


7
2018-01-04 12:06



+1。我更喜欢你对我的回答。 - JB Nizet
谢谢你的回答,非常好解释! - Daniel


答案:


这一切都取决于你要测试的内容。

一般来说,我使用JMeter进行两种类型的性能测试:具体测试,我看看我担心的事情,以及“安全网”测试,我测量整个应用程序以确保它确实有效我期望它的方式。

特定测试几乎总是处理Web应用程序的动态方面 - 服务器端代码(.aspx,.php,.jsp等)。这是大多数应用程序存在瓶颈的地方 - 运行服务器端脚本的努力比从磁盘检索CSS文件并将其提供给浏览器而无需任何额外处理的努力要高很多倍。如果我正在测试服务器端脚本,我也不想加载资产 - 因为它们会混乱测试,并在测试客户端消耗带宽。我不希望我的测试失败,因为我的JMeter服务器在每个线程上下载5MB视频文件并消耗所有带宽,而我实际上要做的是查看服务器每秒可以支持多少次登录。

在测试你的网络服务器提供静态文件的能力方面没有什么意义 - 微软,阿帕奇团队,无论是谁,已经在这方面做得非常出色;除非您有特别关注的问题,否则有更好的方法来花费您的测试预算。

安全网测试将整个事情放在一起,以证明它确实以我期望的方式运行。通常,我在生产(类似)环境中运行这些,因此我有一个CDN,生产级硬件和“实时”应用程序配置。我通常会为此使用基于云的测试服务,因此我可以看到来自不同位置的性能,并产生足够的负载来强调生产级套件。你可以使用JMeter(我过去曾经使用过几种JMeter Cloud服务)。它很昂贵,可能需要停机,你应该只把它当作安全网。


7
2018-01-04 12:06



+1。我更喜欢你对我的回答。 - JB Nizet
谢谢你的回答,非常好解释! - Daniel


当您想要进行适当的性能测试(尤其是压力测试)时,您需要根据用户/线程数量及时生成应用程序的响应时间,您需要包含所有静态资源,就像jMeter代理保存一样当你录制考试时。

要考虑浏览器缓存,您可以使用 HTTP缓存管理器 要么 一次只有控制器,以便每个线程只用他们的第一个请求下载一次静态内容。
HTTP缓存管理器是推荐的方式,更容易设置,只需将其包含在您的测试中,作为线程组的第一个子级。
只有当您需要仅在第一次请求时登录用户时才会定期使用控制器。

建议对非静态HTTP请求进行BTW参数化,例如,搜索相同的产品名称或例如每次购买同一本书,这通常是一个起点,可以让你大致了解你的应用程序的性能效率。

希望这可以帮助...


6
2018-01-05 12:01





除非您的应用程序由只看一页然后去的临时访问者使用,否则很有可能静态资源被下载一次,然后从浏览器缓存中提供。

此外,尽管静态资源会影响用户的带宽和总体响应时间,但它们应该对服务器负载产生很小的影响,并且它们可能不是您要测量的类型。

我想你需要尝试模仿真实的,真实的用户会对应用程序做什么。


1
2018-01-04 11:52