jmeter - UI用户场景的负载测试 - Jmeter Webdriver采样器
问题描述
我想在 mendix 应用程序上运行基本的负载测试场景。最初的要求是至少 10 个用户应该能够同时执行一些活动,如登录、文件上传。我在 Jmeter 中使用了带有 selenium 的 webdriver 采样器,并为这些操作编写了 JS 脚本。问题是它在同一台机器上启动了 10 个浏览器。
- 请建议处理此问题的正确方法。目前看来,我得到的错误是因为我在笔记本电脑上运行测试而不是分布式设置。
- 此外,单个用户的总脚本需要 60 秒才能完成。加速时间应该是多少?
- 如果不是 Jmeter,请为此场景建议任何其他合适的工具。
解决方案
根据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
并根据需要向上或向下调整。
推荐阅读
- javascript - 我无法让我的函数的第二部分工作,但它运行时没有显示错误
- javascript - msal-browser 登录卡在回调 url 并返回代码
- godot - 戈多 3.2.1。刷新查询时无法更改此状态。使用 call_deferred() 或 set_deferred() 来改变监控状态
- javascript - 如何在javascript中传递日期而不被操纵
- laravel - 使用 stancl 多租户时,Sanctum 找不到personal_access_tokens 表
- python - 将 gunicorn 与 ubuntu 一起使用:最新的 Docker 映像
- rust - 如何从 rust 宏中的“Foo::Bar”中获取“Bar”?
- sql - 基于使用 Oracle SQL 的图书借阅场景运行不同计数的递增/递减数据
- angular - 我试图从资产目录中获取图像,但是一旦我构建了项目,资产目录就改变了
- javascript - 如何检查它是否包含多个内容?