我在一个Vaadin 10项目上工作,我们想在我们的网站上进行负载测试。在我们使用Vaadin10之前,我们可以用Jmeter做到这一点,但是在Vaadin10中,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才能使用此网站”。
有没有人知道有没有更好的方法在Vaadin10应用程序上执行负载测试,或者如何让它与JMeter一起工作?
到目前为止,我找到的大多数答案都是针对Vaadin 8或7的,但没有针对Vaadin 10+的。
发布于 2019-05-16 20:41:43
是的,在10+应用程序中使用JMeter进行负载测试是可能的。您应该能够使用以下正则表达式来提取csrf令牌:
Vaadin-Security-Key":"(.+?)"我的JMeter在测试Vaadin13Bakery应用程序入门时的屏幕截图:

除了JMeter之外,在可伸缩性测试Vaadin (任何版本)应用程序时,Gatling也是一个很好的选择。在Bakery App starter for Vaadin13中有一个非常好的示例Gatling测试脚本:https://vaadin.com/start/latest/full-stack-spring,请参阅项目的路径:\src\test\scala\BaristaFlow.scala。
编辑:
我在这里上传了一个针对V13应用程序(相同的Bakery Flow starter)的小型但功能完整的JMeter测试:https://gist.github.com/johannest/593309e31e35789f8e5b03bed074f13c
示例脚本显示了csrf令牌提取,但也显示了如何提取组件id (例如用于"New“按钮的id)以及客户端和同步id。提取这些ids并将它们用作以下请求中的变量(而不是使用记录的ids)可以使您的测试更稳定。
发布于 2020-06-08 05:00:20
我前段时间提出了这个问题,因为有些人对这个问题很感兴趣,所以我会发布一些我们是如何处理这种情况的信息。
https://stackoverflow.com/questions/56167860
复制相似问题