如何使用Vaadin 10执行负载测试/性能测试(Jmeter可以吗?)

Dav*_*idB 3 jmeter vaadin vaadin10

我从事Vaadin 10项目的工作,我们想在我们的网站上执行负载测试,因为我们使用Vaadin 10可以使用Jmeter做到这一点,但是使用Vaadin 10似乎不适用于Jmeter

我们尝试使用Jmeter 5.1.1并记录了测试用例,第一个问题是csrf Toaken和push id,它们都可以用正则表达式提取器提取,然后将它们放在Body数据中

{"csrfToken":"${csrf}","rpc":  [{"type":"mSync","node":5,"feature":1,"property":"invalid","value":true}],"  syncId":0,"clientId":0}
Run Code Online (Sandbox Code Playgroud)

据我所知,至少这样做是可行的,但是我们得到的唯一结果是一个HTML站点,其中显示“您必须在浏览器中启用javascript才能使用该站点。”

有谁知道是否有更好的方法可以对vaadin 10应用程序执行负载测试,或者如何使其与jmeter一起使用?

我发现直到知道的大多数答案是针对vaadin 8或7的,但是对于vadin 10+则没有答案

Joh*_*ala 7

是的,可以将JMeter用于Vaadin 10+应用程序的负载测试。您应该能够使用以下正则表达式提取csrf令牌:

Vaadin-Security-Key":"(.+?)"
Run Code Online (Sandbox Code Playgroud)

针对Vaadin 13 Bakery应用入门测试时,我的JMeter的屏幕截图:

在此处输入图片说明

除JMeter外,在对Vaadin(任何版本)应用程序进行可伸缩性测试时,Gatling也是不错的选择。在针对Vaadin 13的Bakery App启动程序中,有一个很好的示例加特林测试脚本: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(例如用于“ New”按钮的ID)以及客户端和同步ID。提取这些ID并将其用作以下请求中的变量(而不是使用记录的ID)可以使您的测试更加稳定。