【问题标题】:What would be the best way to define a gatling a user flow using ChainBuilder?使用 ChainBuilder 定义用户流的最佳方法是什么?
【发布时间】:2019-09-22 08:25:15
【问题描述】:

我是 Scala 和 Gatling 的新手,我正在尝试找出定义用户故事并将其通过 ChainBuilder 传递给 Gatling Scenario 的最佳方式。

当我说用户故事时,在我的例子中,我的意思是一个流程,其中包括登录、许多不同的调用,然后在整个测试期间循环遍历另一个调用列表。

我创建了以下函数来创建场景:

 def createScenario(name: String, feed: FeederBuilder, chains: ChainBuilder*): ScenarioBuilder = {
    scenario(name).feed(feed).forever() {
      exec(chains).pause(Config.pauseBetweenRequests)
    }
  }

这是我执行此功能的方式:

val scenario = createScenario(Config.testName, feeder.random,
  setSessionParams(PARAM1, Config.param1),
  setSessionParams(PARAM2, Config.param2),
  login, 
  executeSomeCall1, 
  executeSomeCall2, 
  executeSomeCall3, 
  executeSomeCall4, 
  executeSomeCall5, 
  executeSomeCall6, 
  executeSomeCall7, 
  executeSomeCall8, 
  executeSomeCall9,   
  )

以下是 executeSomeCall 函数的示例:

  def executeSomeCall = {
    exec(http("ET Call Home")
      .post("/et/call/home")
      .body(ElFileBody("/redFingerBody.json")).asJson
      .check(status is 200))
  }

我的第一个问题:

这是定义一系列休息调用并将其提供给场景的正确方法吗?我之所以这么问,是因为当我定义这样的流程时,我看到的是,由于某种原因,并不是所有的 REST 调用都被实际执行。奇怪的是,如果我改变调用的顺序,它确实可以工作并且所有的函数都会被调用。 (所以我肯定做错了什么)

我的第二个问题:

如何在此流程中定义无限循环? (在测试运行期间无限)

例如,我希望启动上述流程,当它到达 executeSomeCall8 时,它将在整个测试期间循环 executeSomeCall8 和 executeSomeCall9。

【问题讨论】:

    标签: scala gatling


    【解决方案1】:

    我不明白为什么您的调用不会被执行,但是您构建场景的方式并不那么灵活。您可以使用链接而不需要 createScenario() 方法。

    这就引出了你的第二个问题,当你有这样的场景链接时:

    val scn = scenario("something")
    ...
    .exec(someCall7)
    .forever(){
    exec(sommeCall8)
    .exec(someCall9)
    }
    ...
    

    在我的情况下 someCallN 看起来像:

    val someCall = http("request name")
    .get("/some/uri")
    ...
    

    注意:foerever() 只是一个示例,您可以使用其他适合您需要的循环语句。 希望对你有帮助。

    【讨论】:

    • 请注意,如果使用 .forever,您需要在注入配置文件中设置 maxDuration
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多