【问题标题】:How do I use Gatling 2.1.2 to test a page with lots (150+) of formParams?如何使用 Gatling 2.1.2 测试包含大量(150+)formParams 的页面?
【发布时间】:2015-03-04 07:28:43
【问题描述】:

我有一个表格,我正在尝试使用 Gatling 2.1.2[*](在 Windows 上)进行测试,该表格有很多(150 多个)输入。我可以使用记录器为输入较少的其他页面创建测试。当我通过提交此页面生成模拟并在模拟文件夹中使用该模拟运行 gatling.bat 时,编译器会静默失败。记录器生成的代码如下所示:

.exec(http("request_1")
        .post("/saveform")
        .headers(headers_0)
        .formParam("data[item][0][value]", "hammer")
        ... [~150 more formParam lines] ...
        .formParam("data[item][40][comment]", "Needs more work")
        .headers(headers_2)))

我怀疑问题与 Scala 方法长度的限制有关。我已经通过删除大约一半的 .formParam 调用来确认这一点;完成此操作后,编译器成功,我可以运行模拟。一般的建议似乎是将 exec 项移动到一个对象,但是 formParam 链太长了,即使在它们自己的对象中,编译器也会默默地失败。

object SaveFormLibrary {
    val saveFormChain = http("request_1")
        .post("/saveform")
        .headers(headers_0)
        .formParam("data[item][0][value]", "hammer")
        ... [~150 more formParam lines] ...
        .formParam("data[item][40][comment]", "Needs more work")
}

class ItemSimulation extends Simulation {

  import saveFormLibrary._

  val scn = scenario("saveForm").exec(saveFormChain)
  [...]
}

有什么方法可以进一步分解 exec 链吗?我尝试定义方法来运行部分链,但我不知道如何使它与作为 DSL 的 Http Request 一起工作。我尝试的最后一件事是:

def getForm(form:HttpRequest) = {
    getFormHelper(form)
        .formParam("data[item][25][value]", "stamp")
        [...]
        .formParam("data[item][40][comment]", "Needs work")

}
def getFormHelper(form:HttpRequest) = {
    form
        .formParam("data[item][0][value]", "hammer")
        [...]
        .formParam("data[item][24][comment]", "Buy more")

}

[...]
val scn = scenario("saveForm").exec(getForm(http("request_1")
        .post("/saveform")
        .headers(headers_0)))

这会引发 HttpRequest 未定义的错误,并且我不确定是否有可以工作的对象类型,因为我不熟悉 Scala 和 DSL 的工作方式。我是在正确的轨道上,还是我的想法完全错误?

[*]编辑:我之前使用的是 2.0.0 版。升级到 2.1.2 并看到相同的行为。

【问题讨论】:

  • 首先,请升级到最新版本。我认为自 2.0.0 以来,静默编译器故障问题已得到修复。最新版本是 2.1.2。
  • 更新到 2.1.2,仍然得到完全相同的行为。没有错误或警告,但模拟脚本未显示在选项中(“没有模拟脚本[...]”)。我剪切了 133 行 .formParam 并编译(“ItemSimulation 是唯一的模拟,正在执行它[...]”)。
  • 您介意在 gist 或 pastebin 中分享您的完整模拟吗?
  • 原始模拟:pastebin.com/HyYaGfvz,以及更小的版本:pastebin.com/Lb6y9zQf
  • 我已经打开了一个问题:github.com/gatling/gatling/issues/2495

标签: gatling


【解决方案1】:

这是 Gatling 2.1.2 及更低版本中的一个错误。它已在 2.1.3 中修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多