if控制器使用场景
测试场景中要实现3/2的的业务场景,例如:两种支付场景:线上微信,线下银联刷卡。按目前订单交易来源,微信:银联刷卡: == 3/2,所以在测试过程也是需要按业务比例来设计场景。也就是说10笔订单,微信支付6单,银联刷卡支付4单。
使用if控制器可以实现,在条件中添加判断语句,判断语句是针对if控制下的每一个测试元件,单独评估的,要求所有的请求都要发到该控制器下,判断语句才能生效,如果是同级的元件,则没有作用。
if控制器有两种方式:
1、Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false,(默认)
1)不勾选“interpret condition as variable expression”
直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求,例如“1!=2”,则一定会执行下面的http请求。
2)勾选“interpret condition as variable expression”
Expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有__jexl3和__groovy函数。
2、Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(需要使用__jexl3 or __groovy 表达式)
黄色感叹号,提示你建议采用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式。
3/2业务比例
1、使用__counter该函数可以统计执行的次数。例:在测试过程中,假设:1Vu执行1秒钟,请求成功100笔订单。结合上述3/2业务场景,要求有60%交易订单数据是微信,40%交易订单数据银联刷卡。
2、其他元件现实3/2业务比例场景方式:吞吐率控制器,方法简单更粗暴。
// 3的比例 ${__counter(true,)}%2==1||${__counter(true,)}%10==0 // 2的比例 ${__counter(true,)}%2==0&&${__counter(true,)}%10!==0
3/2业务比例测试结果
默认用法(使用__jexl3 Or __groovy)表达式
__jexl3
需要根据用户变量或者上一个取样器的返回值来进行条件判断否需要执行该取样器。
直接输入条件
去掉 “Interpret Condition as Variable Expression?” 前面复选框,直接输入条件 1==1。访问百度首页的取样器将被执行。
条件中使用变量
新增 “用户自定义变量元件”(变量名:isVariable,值:y)当条件是y是则执行元件内的取样器。
条件中使用变量Evaluate for all children?
在满足if 控制器条件下的取样器被执行后,在将其条件变量值改变,则后续请求将不会被执行。
补条件:
== 例: 1==1 或 ${__jexl3(1==1,)}
> < 例:2>1,1<2,或 ${__jexl3(2>1,)}
>= <= 例:2>=1 ,或 ${__jexl3(2>=1,)}
!=,! 例:"Y"!="N",非 则取 != 的反值
多条件:|| 或,&& 和,例:2<5 && 2>1,${__jexl3(2<5 && 2>1,)}