我正在研究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}
据我所知,至少是可行的,但我们得到的唯一结果是一个HTML站点,显示“您必须在浏览器中启用javascript才能使用该站点。”
有人知道是否有更好的方法可以对vaadin 10应用程序执行负载测试,或者如何使其与jmeter一起使用?
我发现直到知道的大多数答案都是针对vaadin 8或7的,而对于vadin 10+则没有答案。
答案 0 :(得分:5)
是的,可以将JMeter用于Vaadin 10+应用程序的负载测试。您应该能够使用以下正则表达式提取csrf令牌:
Vaadin-Security-Key":"(.+?)"
针对Vaadin 13 Bakery应用入门测试时,我的JMeter屏幕截图:
除了JMeter之外,在对Vaadin(任何版本)应用程序进行可伸缩性测试时,Gatling也是不错的选择。面包店App入门版中有一个很好的示例加特林测试脚本,用于Vaadin 13: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)可使您的测试更加稳定。
答案 1 :(得分:0)
我前一次发布这个问题是因为有人对此问题有所了解,我将发布一些有关我们如何处理这种情况的信息。