【问题标题】:Mimicking the fetch of a web page with JMeter使用 JMeter 模拟获取网页
【发布时间】:2020-06-14 23:51:16
【问题描述】:

在 MacOS/Linux 上运行 JMeter 5.3。我正在尝试模仿网页的获取。页面的 HTML 引用了 3 个静态资源(2 个 JS 文件和 1 个 CSS 文件)。 CSS 引用了 3 个静态资源(2 个字体文件和 1 个图像)。

测试计划相当简单。它有一个事务控制器(SML 主页),而后者又具有一个 HTTP 请求采样器(获取 SML HTML 和嵌入式资产)和一个 If 控制器(条件获取)。 If 控制器有一个 Blazemeter 并行控制器或采样器(获取 CSS 资产)。下图显示两者都已启用,但其中任何一个都很好(因为它们都应该并行获取相同的 3 个资产)。

我有以下问题

  • 并非JMeter HTTP Request 中提到的所有参数都显示在 HTTP 请求采样器的基本或高级选项卡上。还有其他方法可以设置这些吗?

  • 在日志中我看到o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser。从CssParser 的文档中我看到CSS Parser used to extract from CSS files external urls。 JMeter 是否应该使用 CssParser 来获取依赖项——即图像和字体文件?如果这可行,那么测试计划可以进一步简化。

  • 因为 CSS 引用的资产不会自动拉出,所以我使用 Blazemeter 并行控制器在主样本 (HTML) 和子样本(2 个 JS 文件和 1 个 CSS 文件)以 200 状态获取后获取这些资产。在运行 Blazemeter (v0.9) Parallel Connector 时,我注意到相当多的连接问题(如下所述)。我已经尝试过并行控制器和并行采样器。 Sampler 的连接问题比 Controller 少。

    • 响应代码:非 HTTP 响应代码:java.net.SocketException 响应消息:非 HTTP 响应消息:套接字关闭
    • 响应代码:非 HTTP 响应代码:java.lang.IllegalStateException 响应消息:非 HTTP 响应消息:连接池关闭
    • 响应代码:非 HTTP 响应代码:javax.net.ssl.SSLProtocolException 响应消息:非 HTTP 响应消息:以非数据状态接收的数据:6
    • 响应代码:非 HTTP 响应代码:org.apache.http.impl.execchain.RequestAbortedException 响应消息:非 HTTP 响应消息:请求执行失败
    • 响应代码:非 HTTP 响应代码:java.io.InterruptedIOException 响应消息:非 HTTP 响应消息:连接已关闭

【问题讨论】:

    标签: jmeter jmeter-plugins blazemeter


    【解决方案1】:

    您不应该手动下载 CSS 文件和图像,在HTTP Request 采样器的“高级”选项卡上勾选Retrieve All Embedded ResourcesParallel Downloads. Number 框就足够了(或者更好的是HTTP Request Defaults

    这样您将获得类似浏览器的行为,并能够使用HTTP Cache Manager 来模拟浏览器缓存。

    更多信息Web Testing with JMeter: How To Properly Handle Embedded Resources in HTML Responses

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      相关资源
      最近更新 更多