jmeter - 如何使用带有 JMeter 的 Vaadin 10 执行负载测试/性能测试
问题描述
我从事 Vaadin 10 项目,我们想在我们的网站上执行负载测试。在我们使用 Vaadin 10 之前,我们可以使用 Jmeter 做到这一点,但使用 Vaadin 10 似乎 JMeter 不起作用。
我们尝试使用 JMeter 5.1.1 并记录了测试用例。第一个问题是 CSRF 令牌和推送 id。两者都可以使用正则表达式提取器提取,我们将它们放入正文数据中:
{"csrfToken":"${csrf}","rpc": [{"type":"mSync","node":5,"feature":1,"property":"invalid","value":true}]," syncId":0,"clientId":0}
据我所知,至少这是可行的,但我们得到的唯一结果是一个 HTML 页面,上面写着“你必须在浏览器中启用 javascript 才能使用这个网站”。
有谁知道是否有更好的方法来对 Vaadin 10 应用程序执行负载测试,或者如何让它与 JMeter 一起工作?
到目前为止,我发现的大多数答案都适用于 Vaadin 8 或 7,但没有适用于 Vaadin 10+。
解决方案
是的,可以使用 JMeter 对 Vaadin 10+ 应用程序进行负载测试。您应该能够使用以下正则表达式来提取 csrf 令牌:
Vaadin-Security-Key":"(.+?)"
测试 Vaadin 13 Bakery 应用程序启动器时我的 JMeter 的屏幕截图:
除了 JMeter,在测试 Vaadin(任何版本)应用程序的可伸缩性时,Gatling 也是一个不错的选择。在 Vaadin 13 的 Bakery App starter 中有一个很好的 Gatling 测试脚本示例:https ://vaadin.com/start/latest/full-stack-spring 查看路径:\src\test\scala\BaristaFlow.scala项目。
编辑:
我在这里上传了一个针对 V13 应用程序(相同的 Bakery Flow 启动器)的小型但功能齐全的 JMeter 测试:https ://gist.github.com/johannest/593309e31e35789f8e5b03bed074f13c
示例脚本显示了 csrf 令牌提取,以及如何提取组件 id(例如用于“新建”按钮的 id)以及客户端和同步 id。提取这些 id 并将它们用作以下请求中的变量(而不是使用记录的 id)使您的测试更加稳定。
推荐阅读
- c# - 用户代码 C# 实体框架未处理 ArgumentException
- amazon-web-services - 在 terraform 中,如何获取作为 aws_autoscaling_group 的一部分创建的所有实例的信息?
- python - 来自 C++ 的回调 python 函数,对象被破坏
- asp.net-mvc - 在 mvc 中是否可以在不使用 _layout 和 Partial 视图的情况下将页脚 HTML 应用于多个视图?
- c++ - 如何在 UE 中为 iOS 创建 Google 身份验证?
- c# - 移动列后如何按顺序获取单元格内的值
- python - json 对象向对象添加额外的引号
- android - 在 Windows 上设置没有 android studio 的颤振应用程序
- swift - 使用segue显示新视图时如何保留导航栏和标签栏
- python - 独立到列的 Numpy 索引