前言:由于第二个线程用到第一个线程的响应结果作为请求参数,如果第二个线程跑到第一个线程之前,就会有参数取不到的情况,所以对测试计划的设置做了修改,保证线程按顺序执行。
1、没有处理线程执行顺序时,多个线程里的请求是一起执行的,不分先后。(未勾选独立线程运行结果)
2、在测试计划里勾选独立运行每个线程组。(测试计划处勾选独立运行每个线程组)
3、勾选完后再次执行,发现线程按照正常顺序执行。(勾选独立运行线程后的结果)
在Jmeter进行并发测试时,经常会出现请求没有按照顺序执行,如下图(进行登录,需要先设置登录公共信息、再获取验证码等)
从结果树中可以看到执行顺序并没有按照1-2-3-4,1-2-3-4 去执行
为什么会出现这种情况呢?那是因为多线程竞争的原因。多线程执行并发操作,肯定是谁跑得快谁就先执行,线程才不会傻乎乎的的排队。
jmeter自带了一个事物锁控制器。
官方把它定义为线程锁控制器(Critical Section Controller)
意思就是这个锁下面的请求,在相同的时间点只会有一个线程去执行它,也就意味着这个锁下面的事物在相同的时间点会给每个线程分配一个,不会产生竞争。
设置了线程锁控制器(Critical Section Controller)后,再次看结果树
此时就按照顺序执行了