Multithreading JMeter阻止任何用户同时在不同线程上运行
我使用的线程组有20个线程,将同时运行。 每个线程必须在CSV文件中的20个用户列表中有一个唯一的用户。 因此,基本上我需要每个线程加载一个用户,并使用同一个用户多次迭代测试计划(Task1->Task2->Task3) 我需要在JMeter上执行以下操作: (场景1) 线程1:User1:Task1->Task2->Task3,User1:Task1->Task2->Task3,User1:Task1->Task2->Task3 线程2:User2:Task1->Task2->Task3,User2:Task1->Task2->Task3,User2:Task1->Task2->Task3 线程N:UserN:Task1->Task2->Task3,UserN:Task1->Task2->Task3,UserN:Task1->Task2->Task3 然而,我还没有弄明白如何做到这一点。每次我运行测试时,所有线程似乎都会在遍历CSV文件时选择用户,并将用户混合到同时在两个不同线程上发现一个用户的位置 像这样: (场景2) 线程1:User1:Task1->Task2->Task3,User2:Task1->Task2->Task3,User3:Task1->Task2->Task3 线程2:User2:Task1->Task2->Task3,User4:Task1->Task2->Task3,User3:Task1->Task2->Task3 线程N:UserN:Task1->Task2->Task3,User1:Task1->Task2->Task3,User2:Task1->Task2->Task3Multithreading JMeter阻止任何用户同时在不同线程上运行,multithreading,loops,jmeter,load-testing,Multithreading,Loops,Jmeter,Load Testing,我使用的线程组有20个线程,将同时运行。 每个线程必须在CSV文件中的20个用户列表中有一个唯一的用户。 因此,基本上我需要每个线程加载一个用户,并使用同一个用户多次迭代测试计划(Task1->Task2->Task3) 我需要在JMeter上执行以下操作: (场景1) 线程1:User1:Task1->Task2->Task3,User1:Task1->Task2->Task3,User1:Task1->Task2->Task3 线程2:User2:Task1->Task2->Task3,Us
关于为什么会发生这种情况以及如何实现第一个场景,您有什么想法吗?那么您想要的是将每个CSV行分配给线程一次?我认为可以通过下一个算法实现:
JSR223 Sampler
)创建setUp Thread Group
(1个线程,1个循环)。将CSV文件读取到行/对象,将每个行/对象放入编号属性(行的索引将被视为线程编号)lib/ext
),但您只需在步骤1中将文件读入行,然后在步骤2中按分隔符拆分行即可。拥有下一个文件users.csv
:
username,password
user1,password1
user2,password2
user3,password3
user4,password4
脚本:
希望有帮助。我无法复制您的问题,因此我可以想出两个可能的原因:
所有线程
- 设置:
- CSV文件内容
line1 line2 line3
// main thread group > groovy JSR223 Sampler
// 1st thread will always read 'USER_0' property, 2nd 'USER_1' and so on
def user = props.get("USER_${ctx.threadNum}")
vars.put('USERNAME', user.username)
vars.put('PASSWORD', user.password)
// now all next samplers in thread group can use 'USERNAME' and 'PASSWORD' variables, like ${USERNAME}
//test that once selected user sticks to same thread
log.info("Thread num: ${ctx.threadNum}, user: ${user}")
line1
line2
line3