一、Sampler Controller(简单控制器)
作用:不会改变元件的运行顺序,无实质性的作用,主要用来归类和区分一些事务。比如登录、退出等。
Xnip2021-03-01_17-23-36.jpg二、Once Only Controller(仅一次控制器)
作用:它下面的元件只会运行一次。即使Once only Controller是在循环控制器下面,也只会运行一次。
三、Loop Controller(循环控制器)
作用:功能扩展性不强,只能配置为无限循环和具体循环次数,主要用于测试接口重复调用的情况(后端接口有做重复调用校验的,就可以通过这种方式来验证了。)。
Xnip2021-03-02_14-12-29.jpg Xnip2021-03-02_14-14-58.jpg四、ForEach Controller(循环控制器)
①通过在测试计划中定义多个变量,通过ForEach遍历;定义变量时遵循规则,一组变量的前缀一致;
②通过正则表达式提取器提取出多个值时,可通过ForEach遍历后取到想要的值;
③通过请求数据库,返回结果会以变量名_N进行存储数据,N代表行,这样刚好符合ForEach的输入变量要求;
④通过Json提取器提取所有数据,返回的结果会以变量名_N存储,同样适用ForEach的变量输入要求;
- Input Variable Prefix:输入变量前缀
- Output variable name:输出变量名称
- Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)
- End index for loop(inclusive):循环结束的索引
- Add””before number:输入变量名称中是否使用“”进行间隔。
定义一组全局变量,供ForEach Controller调用:
Xnip2021-03-02_14-31-39.jpg Xnip2021-03-02_14-34-51.jpg五、Transaction Controller(事物控制器)
- Generate Parent Sample:如果选中,事务控制器将作为其他取样器的父级样本,否则事务控制器仅作为独立的样本
- Include duration of timer and pre-post processors in generated sample:是否在生成的样本中包括计时器,预处理和后处理的延迟时间
如果是一个很长的业务流程,最好还是要加上事物控制器,多个操作,放在一个事物控制器里面,这样方便脚本的编写,不用勾选 【Generate parent sample】
Xnip2021-03-02_15-29-27.jpg Xnip2021-03-02_15-31-08.jpg Xnip2021-03-02_15-34-25.jpg如果对于多个接口的测试,有依赖相互关联,或者是要测某一个连贯业务操作的性能情况,可以添加事物控制器,并且勾选 【Generate parent sample】
Xnip2021-03-02_15-35-17.jpg Xnip2021-03-02_15-56-31.jpg不勾选:Include duration of timer...,不将定时器时间统计在内
Xnip2021-03-02_15-34-25.jpg勾选:Include duration of timer...,将定时器时间统计在内
Xnip2021-03-02_16-03-54.jpg六、If Controller(条件控制器)
Expression (must evaluate to true or false) :表达式(值必须是true或false)
Interpret Condition as Variable Expression?:将条件解释为变量表达式,此项默认勾选
Evaluate for all children?:条件作用与每个子节点,默认不勾选,仅在If Controller入口处判断一次
输入框中不能直接填写判断条件的表达式,需要将利用__jexl3函数或__groovy函数将条件表达式求值计算为true/false才有效
步骤描述:添加自定义的变量值,利用ForEach Controller进行读取此变量值,然后将读取的变量值保存到设定的变量中;当变量取值符合IF Controller中设定的条件时,则执行其下的业务请求并监控
- Add-->Config Element-->User Defined Variables
- Add-->Logic Controller-->ForEach Controller
- 在ForEach Controller下添加HTTP Request001,请求中配置引用读取的参数
输入框中表示ForEach Controller中读取的变量值为"002"时,才会执行IF Controller之下的请求
Xnip2021-03-02_16-31-42.jpg Xnip2021-03-02_16-35-52.jpg我们还可以通过If Controller来实现混合场景压力测试业务占比:
(1)新增一个线程组并设置线程数及运行时间,40个线程组持续请求持续10秒。 Xnip2021-03-03_11-16-23.jpg (2)新增随机变量,设置随机范围0~100,后续通过随机变量在if控制器中配置接口业务占比。 Xnip2021-03-03_11-08-39.jpg(3)新增3个如果(if)控制器,并设置接口业务占比,表达式支持KaTeX parse error: Expected group after '' at position 2: {__jexl3({num}>=1&&${num}<=50,)}。
表达式支持:
== 是否等于,如${ __jexl3(${VAR}==1,)},判断${VAR}变量是否等于1
!= 不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1
! 非,如${__jexl3(!(${VAR}!=1),)}对${VAR}!=1的结果取反
&&或|| 且与或,如 ${__jexl3(${VAR}==1 && ${name} != "heima",)}
> 或者>== 大于等于,如${__jexl3(${count}>=10,)}
Xnip2021-03-03_16-16-38.jpg
Xnip2021-03-03_16-24-36.jpg
Xnip2021-03-03_16-25-21.jpg
(4)新增聚合报告查看执行结果,接口001,接口002,接口003请求比例大约是5:3:2
Xnip2021-03-03_16-26-13.jpg
网友评论