首页 > 解决方案 > UI用户场景的负载测试 - Jmeter Webdriver采样器

问题描述

我想在 mendix 应用程序上运行基本的负载测试场景。最初的要求是至少 10 个用户应该能够同时执行一些活动,如登录、文件上传。我在 Jmeter 中使用了带有 selenium 的 webdriver 采样器,并为这些操作编写了 JS 脚本。问题是它在同一台机器上启动了 10 个浏览器。

标签: jmeterwebdriver

解决方案


根据WebDriver Sampler:您回答的 10 大问题文章

问:如何分配 WebDriver Sampler?

A. 首先,不要使用 WebDriver Sampler 来创建负载!每个虚拟用户需要大约 1 个 CPU 内核才能将 JMeter 资源消耗保持在可接受的范围内。除了 HTTP 请求采样器之外,还应使用 WebDriver 采样器。这是应该如何使用它的示例:

  • HTTP Request Samplers 模拟了 1,000 个用户
  • 1 个用户是 WebDriver 采样器

您应该使用 WebDriver Sampler 来评估真实的用户体验。它最常用于测量系统高负载时页面的加载时间。HTTP 请求并没有真正“呈现”页面并且它不能执行 JavaScript。这就是 WebDriver Sampler 如此有价值的原因 - JMeter 不是浏览器,它克服了这一事实带来的限制。

因此,首先我建议重新考虑您的方法并迁移到HTTP 请求采样器,您可能能够执行 10 个浏览器,但如果您需要将测试扩展到 100 或 1000 个用户,您肯定无法做到使用这种“真正的浏览器”方法,而 HTTP 请求采样器在 HTTP 协议级别上起作用,如果您正确配置了 JMeter,那么对于被测应用程序来说,无论请求是来自 JMeter 还是来自真正的浏览器,并且资源占用量将是少得多。


关于加速时间:总体思路是逐渐增加负载,以便您可以将不断变化的虚拟用户数量与不断变化的指标(如响应时间、吞吐量等)相关联。根据 JMeter 文档:

加速期告诉 JMeter 需要多长时间才能“加速”到选择的全部线程数。如果使用 10 个线程,并且加速周期为 100 秒,那么 JMeter 将需要 100 秒才能让所有 10 个线程启动并运行。每个线程将在前一个线程开始后 10 (100/10) 秒后开始。如果有 30 个线程和 120 秒的加速周期,那么每个连续的线程将延迟 4 秒。

加速需要足够长以避免在测试开始时工作负载过大,并且足够短以使最后一个线程在第一个线程完成之前开始运行(除非有人希望发生这种情况)。

开始Ramp-up = number of threads并根据需要向上或向下调整。


推荐阅读