- Transaction Controller- 把几个Sampler组合在一起,一起计算响应时间等数据
1.1 参数Generate parent sample
把组合后的总sample当作父sample放在最上面,其他都是子
1.2 参数 Include duration of timer and pre-post processors in generated sample
如果Transaction Controller下面有Timer或前置、后置处理器的话,如果勾选这个选项,会把这些组件所用的时间也计算进来
2. If Controller-条件成立时才执行If Controller里面的子Sampler
定义一个变量wo=‘123’
If Controller配置中如果不选“Interpret Condition as Variable Expression?”, 判断条件用的是js语法。
比如‘123’==‘123’ 或 ‘${变量名}’==‘值’
两个sampler都执行了
2.1 参数“Interpret Condition as Variable Expression?” 只判断该变量的值是否为true(大小写都可以)
如果wo对于123,不满足条件,Debug Sampler-1不执行
2.2 参数 Evaluate for all children?
如果不勾选这个选项,只在If Controller处判断一下条件,满足就执行里面所有sampler;
如果勾选这个选项,在If Controller处判断满足条件后,里面每个sampler执行前还都要判断一次
测试计划中设置了wo的值等于true,wo1的值为false
在Debug Sampler-1下面加了一个ForEach Controller来改变wo的值为false
程序执行到ForEach Controller时wo的值还是true,就把Debug Sampler-2执行了,但这是把wo的值该为false了。
执行到Sampler-3时由于勾选了“ Evaluate for all children?”所以还会再判断wo的值,这是wo已经是false了不满足条件,所以不执行了
- Loop Controller-控制执行几次里面的Sampler
4. ForEach Controller-有一个变量组(可以是test1,test2,test3,也可以是test_1,test_2,test_3),组里有几个变量就执行几次并且会生成一个新的变量,其值为该次循环中test?的值
在测试计划中定义一个变量组wo1 wo2 wo3
加入一个ForEach Controller控制组件,参数Input variable prefix中填写变量组的变量组的前缀wo,参数Output variable name中填写要新生成的变量名 test,参数Add“_"before number? 是选择变量名和数字间有无_, 参数Start index 和 End index是选择变量组中的起始位置
循环执行了三次,每次test的值分别为wo1,wo2,wo3的值
4. Once Only Controller-不管外部循环多少次,该控制器里面的Sampler只执行一次
Debug Sampler-1在该控制器内,只执行一次
5. Simple Controller-只起到分组的作用,没有其他实际意义