在每次迭代中从 CSV 数据集配置中获取 N 个不同的值
Get N different values from CSV data set config in each iteration
我有以下 Jmeter 测试计划
Thread Group
-Java Request
-CSV Data set config(Sharing mode :current thread group)
View Results Tree
Java 请求具有一次处理 N 个值的代码。
CSV 文件中的每个值只能使用一次。
例如,如果
no of entries in CSV file: 1000
threads : 10
loop count :10
N=entries to process in each iteration =10[calculated as :(no of entries in CSV)/(threads)/(loop count)]
因此在每次迭代中,每个线程必须一次获取 10 个条目并将其传递给 Java 请求。
我有以下问题:
- 如何使每次迭代从 CSV 中获取 N 个不同的值?
- 如何将这N个值作为参数传递给Java请求?
- 我的目的objective是衡量所有条目的速度
使用给定数量的线程和循环计数进行处理。我是
使用 Jmeter 来利用线程组并获取
吞吐量。如果有更好的方法,请提出建议。
修改你的测试计划如下:
- 线程组
- 循环控制器(循环计数 = 10)
- Counter
- Beanshell Sampler
- CSV 数据集配置
- Java请求
在 Beanshell 采样器中,您需要放置自定义代码,该代码将从 CSV 数据集配置中读取值并将其添加到 JMeter 变量中,例如:
var1=foo
var2=bar
...
var10=something
因此您可以将这 10 个变量作为 ${var1}
、${var2}
等传递给 Java 请求采样器
有关脚本的信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。
伪代码如下所示:
String postfix = vars.get("POSTFIX"); // where POSTFIX is Reference name of Counter
String value = vars.get("VALUE"); // where VALUE is the Variable Name defined in CSV Data Set
vars.put("var" + postfix, value); // put current value read form CSV file into varX JMeter Variable
我如上所述修改了测试计划,并通过在 Beanshell Sampler 中使用以下代码将一个变量发送到 Java Sampler -
String postfix = vars.get("POSTFIX"); // where POSTFIX is Reference name of Counter
String value = vars.get("VALUE"); // where VALUE is the Variable Name defined in CSV Data Set
vars.put("var" + postfix, value); // put current value read form CSV file into varX JMeter Variable
// all the 10 values are concatenated to the input variable ,and is the single variable sent to the Java Sampler
if(postfix.equals("1"))
vars.put("input",vars.get("var"+postfix));
else
vars.put("input",vars.get("input")+","+vars.get("var"+postfix));
我有以下 Jmeter 测试计划
Thread Group
-Java Request
-CSV Data set config(Sharing mode :current thread group)
View Results Tree
Java 请求具有一次处理 N 个值的代码。 CSV 文件中的每个值只能使用一次。 例如,如果
no of entries in CSV file: 1000
threads : 10
loop count :10
N=entries to process in each iteration =10[calculated as :(no of entries in CSV)/(threads)/(loop count)]
因此在每次迭代中,每个线程必须一次获取 10 个条目并将其传递给 Java 请求。
我有以下问题:
- 如何使每次迭代从 CSV 中获取 N 个不同的值?
- 如何将这N个值作为参数传递给Java请求?
- 我的目的objective是衡量所有条目的速度 使用给定数量的线程和循环计数进行处理。我是 使用 Jmeter 来利用线程组并获取 吞吐量。如果有更好的方法,请提出建议。
修改你的测试计划如下:
- 线程组
- 循环控制器(循环计数 = 10)
- Counter
- Beanshell Sampler
- CSV 数据集配置
- Java请求
- 循环控制器(循环计数 = 10)
在 Beanshell 采样器中,您需要放置自定义代码,该代码将从 CSV 数据集配置中读取值并将其添加到 JMeter 变量中,例如:
var1=foo
var2=bar
...
var10=something
因此您可以将这 10 个变量作为 ${var1}
、${var2}
等传递给 Java 请求采样器
有关脚本的信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。
伪代码如下所示:
String postfix = vars.get("POSTFIX"); // where POSTFIX is Reference name of Counter
String value = vars.get("VALUE"); // where VALUE is the Variable Name defined in CSV Data Set
vars.put("var" + postfix, value); // put current value read form CSV file into varX JMeter Variable
我如上所述修改了测试计划,并通过在 Beanshell Sampler 中使用以下代码将一个变量发送到 Java Sampler -
String postfix = vars.get("POSTFIX"); // where POSTFIX is Reference name of Counter
String value = vars.get("VALUE"); // where VALUE is the Variable Name defined in CSV Data Set
vars.put("var" + postfix, value); // put current value read form CSV file into varX JMeter Variable
// all the 10 values are concatenated to the input variable ,and is the single variable sent to the Java Sampler
if(postfix.equals("1"))
vars.put("input",vars.get("var"+postfix));
else
vars.put("input",vars.get("input")+","+vars.get("var"+postfix));