【发布时间】:2019-11-27 17:01:12
【问题描述】:
在 JMeter 中有一个“ForEach”控制器,它接受一个项目数组并对每个项目执行一个采样器。当您需要根据先前请求中收到的数据执行具有不同参数的采样器时,这非常有用。但是,“ForEach”控制器一个接一个地运行采样器。
我正在寻找的是并行执行样本。 JMeter 中有一个名为“bzm - Parallel Controller”的插件。但是,这不接受像“ForEach”控制器那样的任何输入变量。
例如,我在数据库中有以下数据。作者和他们的书。
[
{
"firstName": "William",
"lastName":"Shakespeare",
"Title": "Mr",
"id": "1",
"books": [
{
"id": "WS1",
"title": "King John",
"year":"1596"
},
{
"id": "WS2",
"title": "Julius Caesar",
"year": "1599"
},
{
"id": "WS3",
"title": "Romeo and Juliet",
"year": "1595"
}
],
"Nationality": "English"
},
{
"firstName": "Sidney",
"lastName":"Sheldon",
"Title": "Mr",
"id": "2",
"books": [
{
"id": "SS1",
"title": "The Naked Face",
"year":"1969"
},
{
"id": "SS2",
"title": "A Stranger in the Mirror",
"year": "1976"
},
{
"id": "SS3",
"title": "Bloodline",
"year": "1977"
}
],
"Nationality": "American"
},
{
"firstName": "Eiichiro",
"lastName":"Oda",
"Title": "Mr",
"id": "3",
"books": [
{
"id": "EO1",
"title": "Wanted",
"year":"1992"
},
{
"id": "EO2",
"title": "Ikki Yako",
"year": "1993"
},
{
"id": "EO3",
"title": "Monsters",
"year": "1994"
}
],
"Nationality": "Japanese"
}
]
在我的 JMeter 测试计划中,我定义了一个 CSV 数据集配置文件来存储我系统中所有作者的 ID。 然后,有一个线程组。在线程组中,我有一个 HTTP 采样器,GET /authors/{id}/books。例如 GET /authors/1/books。这将获得作者“William Shakespeare”所写的所有书籍。
使用 JSON Extractor,我可以捕获由 GET /authors/{id}/books 返回的图书 ID 数组。
有 3 本书的 ID 为 WS1、WS2 和 WS3。现在对于每本书,我都需要运行另一个 HTTP 采样器
PUT /books/WS1 放置/书籍/WS2 放置/书籍/WS3。
当我使用 ForEach 控制器时,我可以指定从之前的 JSON 提取器捕获的输入变量。它循环遍历每个 PUT 请求,针对每个书本 id。我想做同样的事情,但在 PARALLEL 中,而不是顺序。
有谁知道如何做到这一点?或者我们必须为此编写自定义 groovy/BeanShell 脚本?如果自定义 Groovy/BeanShell 脚本是唯一的方法,你能告诉我怎么写吗
非常感谢
【问题讨论】:
标签: jmeter jmeter-plugins