首页 > 解决方案 > 如何使用带有 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+。

标签: jmetervaadinload-testingvaadin10

解决方案


是的,可以使用 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)使您的测试更加稳定。


推荐阅读