【问题标题】:Randomising number of repeats for different users in GatlingGatling 中不同用户的随机重复次数
【发布时间】:2019-10-03 10:41:08
【问题描述】:

我目前正在尝试在 Gatling 中编写一个场景,我希望某个动作重复 1 到 8 次。随机性应该基于每个用户,例如,一个用户可能会得到 3 次重复,而另一个用户可能会得到 7 次。

我希望该场景像这样工作,以模拟我不确定用户将重复操作多少次的事实。

我尝试了以下方法:

class MySimulation extends Simulation {
  private val myScenario = scenario("Scenario")
    .repeat(Random.nextInt(8) + 1) {
      // some stuff
    }

  setUp(myScenario.inject(rampUsers(100) during (60 seconds)))
}

但是,这最终会编译为一个随机数,然后将其用于每个用户。所以如果随机数生成为 5,每个用户最终会重复 5 次,这不是我想要的。

在 Gatling 中有没有一种方法可以让每个用户为重复功能获得不同的随机数?还是只适用于常数?

【问题讨论】:

    标签: scala gatling scala-gatling


    【解决方案1】:

    您尝试的方式不像您定义的场景那样工作是一个在启动时执行一次的构建器 - 所以 Random.nextInt 只被调用一次。

    但是有几种方法可以实现你想要的。

    最简单的(因为您只需要一个随机数)是使用加特林 EL 随机获取序列中的一个元素。

    首先,用你想要的数字范围定义一个 scala val

    private val times = 1 to 8
    

    然后将您的范围放入会话中并使用 EL 从集合中获取随机值

    .exec(_.set("times", times))
    .repeat("${times.random()}" ) {
      // some stuff
    }
    

    或者,您可以定义一个自定义馈线 - 这种方法可以让您执行诸如随机字符串之类的操作

    private val times = Iterator.continually( Map( "times" -> Random.nextInt(8) + 1))
    

    然后只需喂食并使用“次”值

    .feed(times)
    .repeat("${times}") {
      // some stuff
    }
    

    【讨论】:

    • 不错。不要以为我会想到这一点,所以谢谢你的回答! :)
    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2013-07-29
    • 2015-01-29
    相关资源
    最近更新 更多