在每次迭代中从 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 请求。

我有以下问题:

  1. 如何使每次迭代从 CSV 中获取 N 个不同的值?
  2. 如何将这N个值作为参数传递给Java请求?
  3. 我的目的objective是衡量所有条目的速度 使用给定数量的线程和循环计数进行处理。我是 使用 Jmeter 来利用线程组并获取 吞吐量。如果有更好的方法,请提出建议。

修改你的测试计划如下:

在 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));