Jmeter测试接口详细步骤(十二)逻辑控制器

ForEach控制器

  • 输入变了前缀:可在“用户自定义的变量”中定义一组变量,循环控制器可以从中获取到变量对应的值,然后作为循环控制器的循环条件,还可以输出变量作为取样器的参数。
  • 开始循环字段(不包含):循环下标起点
  • 结束循环字段(包含):循环下标终点
  • 输出变量名称:循环控制器生成的变量名称
  • 数字之前加上下划线“_”?:变量前缀后是否加“_”作为分隔符

例:

1、访问https://jmeter.apache.org/demos/

2、正则表达式提取第一步中的所有链接【<a href="([^>]+.jmx)"

3、添加一个ForEach控制器

4、在ForEach控制器中添加一个HTTP请求,参数由ForEach控制器传递过来

5、添加一个监控器-查看结果树,运行

简单控制器

 Include控制器

用来导入外部测试片段,在执行时会导入的测试计划,但是被导入的测试计划有特殊要求,不能有线程组,只能包含配置元件。

Runtime控制器

运行时控制器控制其子代运行多长时间。控制器将运行其子级,直到超过已配置的运行时间。

  • Runtime(seconds):默认1,所需的运行时间(以秒为单位)。0表示不运行。

Switch控制器

  • Switch Value:JMeter会给节点下取样器编号(0开始)
    • 可以是数字,如果编号超出了范围,则运行第0个取样器。
    • 可以是字符,为字符时匹配取样器名称,如果匹配不上会默认找名称为default的取样器,没有则不运行。

While控制器

其节点下的元件将一直运行直到While条件为false

  • Condition(function or variable):
    • 接受变量表达式与变量, 如${inputvar}<10
    • Blank:当循环中有取样器失败后停止
    • LAST:当循环前有取样器失败则不进入循环
    • Otherwise:当判断条件为false时停止循环

交替控制器

其节点下的取样器会交替执行

  • 忽略子控制器模块:即子控制器失败,由交替控制器接管。

 仅一次控制器

控制器下的元件只运行一次

  • 把仅一次控制器放在循环控制器下面,也只运行一次
  • 把仅一次控制器放在线程组下面,也只运行一次

吞吐量控制器

用来控制其下元件的执行次数

  • Percent Executions:按照执行次数百分百来计算执行次数,此时吞吐量的取值是0~100。
  • Per User:
    • 勾选:按虚拟用户数来计算执行总次数
    • 不勾选:按照所有虚拟用户数来计算执行总次数
  • Total Executions:按照吞吐量的值来指定执行次数,可以是任意整数,如果小于等于0则一次也不执行。

序号

线程数

循环次数

模式

吞吐量

Per User

执行次数

1

2

10

percent

50

Y

10

2

2

10

percent

50

N

10

3

2

10

total

7

Y

14

4

2

10

total

7

N

7

5

2

2

total

7

Y

4

6

2

2

total

7

N

4

  • 序号1:线程2,循环次数10,总共20次,吞吐量50%,20*50%=10次。
  • 序号2:线程2,循环次数10,总共20次,吞吐量50%,20*50%=10次。
  • 序号3:线程2,循环次数10,总共20次,吞吐量7次,Per User勾选,2*7=14次。
  • 序号4:线程2,循环次数10,总共20次,吞吐量7次,Per User不勾选,总共7次。
  • 序号5:线程2,循环次数2,总共4次,吞吐量7次,由于线程总计划是4次,最多4次。
  • 序号6:线程2,循环次数2,总共4次,吞吐量7次,由于线程总计划是4次,最多4次。

如果(If)控制器

If Controller允许用户控制其下的测试元素(其子元素)是否运行。

  • Evaluate for all children: 判断条件是否针对所有子节点
  • 实例(变量表达式)
  1. $ {__ groovy(vars.get(“ myVar”)!=“ Invalid”)}(检查myVar不等于Invalid)
  2. $ {__ groovy(vars.get(“ myInt”)。toInteger()<= 4)}(检查myInt小于或等于4)
  3. $ {__ groovy(vars.get(“ myMissing”)!= null)}(仔细检查是否未设置myMissing变量)
  4. $ {__ jexl3($ {COUNT} <10)}
  5. $ {RESULT}
  6. $ {JMeterThread.last_sample_ok}(检查最后一个样本是否成功)

随机控制器

节点下的元件随机运行

随机顺序控制器

节点下的元件随机执行,不过每个元件只执行一次

循环控制器

录制控制器

使用JMeter代理进行录制时,录制脚本默认放在此控制器节点下。没有实际的逻辑作用。

 事务控制器

事务响应时间是我们衡量业务性能的主要指标,事务控制器可以把其节点下的取样器执行小号时间累加在一起,便于统计。

如果事务控制器下取样器有多个,那么只有每一个取样器都运行成功了,整个事务控制器定义的事务才算成功,这是充分必要条件。

  • Generate Parent sample:是否生成一个父取样结果
  • Include duration of timer and pre-post processors in generated sample:是否包含定时器,选中将在取样器前后加上延时
原文地址:https://www.cnblogs.com/nicole-zhang/p/14685856.html