我的性能测试需要线程数和数据的正交组合,比如我想测试1, 2, ... n
线程下的/path_1
,则1, 2, ... n
线程下的/path_2
,则1, 2, ... n
线程下的/path_n
。
注意,我想运行不同的线程为同一路径第一,然后另一个路径。
最简单的解决方案是使用thread_count
和path
作为属性的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的内置机制来完成我的测试线程安排?
2条答案
按热度按时间gab6jxml1#
1.无法使用CSV数据集配置控制当前线程组中的线程数,因为线程组在CSV数据集配置评估前已初始化
然后使用__P()函数读取所选线程组中的属性值
vulvrdjw2#
如果你正在寻找一种方法来设置线程组计数-那么你应该使用属性函数而不是变量函数。
然后像下面这样在threadgroup元素中传递变量
然后,您可以使用-J选项(如
-Jthreadgroup1=1 Jthreadgroup1=2 Jthreadgroup1=3
)覆盖变量的值