【问题标题】:Does JMeter interact with physical browserJMeter 是否与物理浏览器交互
【发布时间】:2018-03-05 13:52:39
【问题描述】:

我收到客户的报告,称我们的网络应用程序上的上传文件功能有时无法正常工作。我们在内部进行了测试,但没有发生。于是我用JMeter对web应用进行了性能测试(模拟1000个用户同时上传)。我的经理说,图表结果以及 JMeter 的摘要报告在这种情况下对检测问题所在位置没有多大帮助。他问 JMeter 是否真的可以在 UI 上上传,我们可以看到发生了什么。

据我所知,JMeter 毕竟是一个模拟器,它不能像 Selenium WebDriver 那样与 Web 浏览器交互(?!)。无论如何要对上传按钮进行性能测试,我们实际上可以在 WepApp 上看到它吗?我希望我的问题有意义。

谢谢

【问题讨论】:

  • jmeter 也可以运行 selenium 用户,但您的经理很困惑(回复:“实际上可以在 UI 上上传”)。文件上传不会在 UI 上发生 - 这是不可能的。它发生在 HTTP 级别,这是 JMeter 模拟的。 “在 UI 级别”发生的事情是执行创建 HTTP 请求的 JavaScript(即使这不是 UI)。 o 如果怀疑客户端(JS)不起作用 - 这是一个方向,您可以为此使用普通的 Selenium 测试。如果怀疑是负载,那么 JMeter 上的 HTTP 级别就足够了。

标签: selenium-webdriver jmeter performance-testing


【解决方案1】:

您可以将 WebDriver 添加到 JMeter,以便与完全呈现的网页进行交互。

Web Driver Sampler 自动执行和收集 浏览器(客户端)的性能指标。很大一部分 到目前为止,性能测试一直在服务器端进行 事物。然而,随着技术的进步,HTML5、JS 和 CSS 改进,越来越多的逻辑和行为被推倒 给客户。这增加了整体感知性能 website/webapp,但是这个指标在 JMeter 中不可用。事物 增加整体浏览器执行时间的可能包括:

客户端 Javascript 执行 - 例如。 AJAX、JS 模板 CSS 转换 - 例如。 3D 矩阵变换、动画第 3 方插件 - 例如。 Facebook like、双击广告、网站分析等所有这些 事情增加了整个浏览器的执行时间,这个项目 旨在测量完成所有这些渲染所需的时间 内容。

例如,您可以将此 Javascript 代码添加到脚本部分以导航到 Google。

WDS.sampleResult.sampleStart()
WDS.browser.get('http://google.com')
WDS.sampleResult.sampleEnd()

官方指南:https://jmeter-plugins.org/wiki/WebDriverTutorial/

【讨论】:

    【解决方案2】:

    浏览器不会做任何魔术,它们只是发送HTTP requests 并呈现响应。 JMeter 可以通过其HTTP Request 采样器执行 HTTP 请求,因此从后端服务器的角度来看,文件上传是由真实浏览器还是由 JMeter 进行的没有区别。

    请参阅How to make JMeter behave more like a real browser 文章以了解如何正确配置 JMeter,以便您的测试更加真实。


    关于Graph ResultSummary Report - 我不认为他们讲述了完整的故事。我建议采用以下方法:

    1. 在文件上传请求中添加Response Assertion,这将明确检查上传是否成功
    2. 从 1 个虚拟用户开始并逐渐增加负载,直到开始出现错误。
    3. 生成 HTML Reporting Dashboard 并查看负载增加与其他指标(响应时间、每秒点击次数、每秒错误数等)之间的关系

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多