我有一个场景,其中有4个不同的API调用,它们总是保持不变。我正在尝试创建一个平行的压力测试,我希望相同的场景首先运行10%,然后运行20%、30%……最大用户数等。
我面临着一个问题,我无法多次设置相同的场景。
但我也需要设置是动态的,取决于脚本中的可配置变量这是导致问题的原因,我希望能够轻松配置它来运行,例如10%、50%和100%。
这就是我到目前为止所拥有的(缩写,在OnceUser和Nothingfor动态地从配置中获取输入,迭代bla(I))
def scnList() = {
var scnList = new ArraySeq[PopulationBuilder](someArray.length)
var i = 0
for (i <- 0 until someArray.length) {
var scen = myscenario
.inject(atOnceUsers((bla(i)), nothingFor(blabla(i) minutes))
scnList(i) = scen
}
scnList
}
setUp(scnList: _*).protocols(httpConf)
.assertions(global.successfulRequests.percent.gt(99),
forAll.responseTime.max.lt(5000)
)
2条答案
按热度按时间mwg9r5ms1#
每个模拟只能调用一次
setUp
,如果您将场景列表作为参数传递给它,那么它将并行运行它们,这在您的情况下是没有意义的。应该运行的是使用注入配置文件运行单个场景,该场景将一个接一个地运行几个不同负载级别的场景。可以从某个配置FE加载每次迭代的用户数。如果你想让每一次迭代都出现在单独的报表中,那么最好的方法就是创建抽象的模拟类和更多的类,用不同的构造函数参数来扩展它,但这样就很难得到可变数量的步骤,所以如果你愿意拥有固定数量的变量,那么可能是另一种方式。
9ceoxa922#
按顺序运行相同场景N次的示例代码。希望它能帮助一些人。
此处使用
n
为每个步骤指定一个新名称,否则将收到错误java.lang.IllegalArgumentException: requirement failed: Scenario names must be unique but found duplicates
。操作员可以对此进行调整,以使用加载百分比。Mateusz的解决方案不起作用;所有场景都将并行运行。