簡體   English   中英

加特林(Gatling):是否可以像用戶一樣完成個別方案的擴展?

[英]Gatling: Can ramping up of individual scenarios be done just like the users?

考慮一個使用加特林測試API的示例。 對於一些奇怪的要求,我必須為每個用戶獲取一個方案

var scenarioList // This is of type mutable list

我在此列表中添加了許多方案,因為我的請求正文因每個用戶而異,否則將無法處理該請求。此刻,此方案已配置了以下加特林模擬

Ex: scenarioList += scenario1. inject(rampUsers(1) over (1 minutes)
    scenarioList += scenario2. inject(rampUsers(1) over (1 minutes)
    scenarioList += scenario3. inject(rampUsers(1) over (1 minutes)
    .
    .
    .
    so on

現在,在調用所有這些方案時,如下所示在全局設置中

setUp(scenarioList: _*).assertions(
    forAll.successfulRequests.percent.gte(90)
  )

假設我有1000個用戶( scenarioList大小為1000),這里的問題是所有1000個用戶將同時啟動,但我想增加這些用戶。 因此,問題來了,而不是並行運行這些方案。

這可能嗎 ? 如果沒有,還有其他方法可以遵循嗎? 當請求的主體發生變化時,我不能奢侈地與多個用戶一起運行相同的方案。 請告訴我。

我可以通過在方案中使用feeders來解決此問題,因此無需創建多個方案。

使用feeders加特林(Gatling)提供了用於參數化任何http請求的請求正文的選項。

代碼示例:

  var randomSession = Iterator.continually(Map("randsession" -> ( req.replace("0000000000", randomStringGenerator.randomString(10)))))

  val httpConf = http
    .baseURL("http://localhost:5000")
    .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
    .userAgentHeader("Mozilla/4.0(compatible;IE;GACv10. 0. 0. 1)")

  val scn = scenario("Activate")
    .feed(randomSession)
    .exec(http("activate request")
    .post("/login/activate")
    .body(StringBody("""${randsession}"""))
    .check(status.is(200)))
    .pause(5)

  setUp(
    scn.inject(atOnceUsers(5))
  ).protocols(httpConf)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM