jmeter作为变量的线程数

vlju58qv  于 2023-03-23  发布在  其他
关注(0)|答案(2)|浏览(170)

我的性能测试需要线程数数据的正交组合,比如我想测试
1, 2, ... n线程下的/path_1,则
1, 2, ... n线程下的/path_2,则
1, 2, ... n线程下的/path_n
注意,我想运行不同的线程为同一路径第一,然后另一个路径。
最简单的解决方案是使用thread_countpath作为属性的jmeter计划,然后启动提供不同属性的jmeter。

jmeter.sh ... -Jthread_count=1 -Jpath='/path_1' 
jmeter.sh ... -Jthread_count=2 -Jpath='/path_1' 
jmeter.sh ... -Jthread_count=1 -Jpath='/path_2' 
jmeter.sh ... -Jthread_count=2 -Jpath='/path_2'

但是我想充分利用jmeter的内置机制。理想情况下,我只需要在某个地方配置我的线程和路径列表,无论是在文件中还是在一些脚本中作为json,Jmeter都会为我提升线程和路径组合执行。
我做了两个实验。

  • 实验1:csv数据集配置

添加一个csv配置,如下所示

thread_count,voice
1,path_1
2,path_1
1,path_2
2,path_2

然后添加线程组,指定number of threads = ${thread_count}
但不工作,甚至根本不运行。和属性,如sharing mode在csv配置似乎表明它不能用来控制线程。

  • 实验2:前向控制器

thread group 下,添加一个 JSR223 Sampler,代码如下:

vars.put("thread_count_1","1");
vars.put("thread_count_2","2");
vars.put("path_1","path_1");
vars.put("path_2","path_2");

添加 *foreach控制器 *,导出thread_count变量,然后添加嵌套的 *foreach控制器 *,导出path变量。仍然不起作用,foreach控制器导出的变量无法控制线程数。
谁能建议一下如何使用jemter的内置机制来完成我的测试线程安排?

gab6jxml

gab6jxml1#

1.无法使用CSV数据集配置控制当前线程组中的线程数,因为线程组在CSV数据集配置评估前已初始化

  • ForEach Controller可能是一个可行的选择,前提是您:
  • 放入setUp Thread Group
  • 将JMeter变量转换为JMeter属性:
props.put("thread_count_1","1");
props.put("path_1","path_1");

然后使用__P()函数读取所选线程组中的属性值

  • 您可能需要考虑直接从JSR23测试元素中启动线程的选项,如:
ctx.getThreadGroup().addNewThread(0,ctx.getEngine())
vulvrdjw

vulvrdjw2#

如果你正在寻找一种方法来设置线程组计数-那么你应该使用属性函数而不是变量函数。

然后像下面这样在threadgroup元素中传递变量

然后,您可以使用-J选项(如-Jthreadgroup1=1 Jthreadgroup1=2 Jthreadgroup1=3)覆盖变量的值

相关问题