Jmeter if控制器的使用 - 真正实现3:2的业务

  一、业务分析:

    两种支付方式:1.银联刷卡支付(线下支付)、2.微信扫码支付(线上支付),按照公司目前的交易订单来源,银联刷卡支付:微信扫码支付=3:2,所以在执行性能测试的时候,需要按照3:2的比例来测试,也就是说10条订单,6条是刷卡支付,4条是扫码支付。

  二、if控制器元件:

    在jmeter工具执行性能测试时,可以用if控制器元件来实现,在条件中,添加上判断代码,判断代码是针对if控制器之下的每一个可运行测试元件单独评估的,要求所有的请求都要发到该控制器下,判断语句才能生效,如果是同级的元件,是没有作用的。

  三、条件代码设计:    

  1.用__counter该函数可以统计执行的次数。在测试的时候,我用了1个用户,执行1秒钟。成功请求57次:

 2.那么业务要求3:2,57条总的数据,既要求34条数据是银联刷卡、23条是扫码支付的。很多网上的代码条件都是${__counter(true,)}%2==1||${__counter(true,)}%3==0,这个比例不对的,如下详细解析:

   1.    2.   3.   4.    5.    6.   7.    8.    9.   10

满足条件的是1.3.5.6.7.9         余4个满足3:2

  11.  12.  13.  14. 15.  16.  17.  18.  19.  20

满足条件的是11.12.13.15.17.18.19    余3个不满足3:2

  21.  22.  23.  24. 25.  26.  27.  28.  29.  30

满足条件的是21.23.24.25.27.28.29.30   余2不满足3:2

   31.  32.  33.  34. 35.  36.  37.  38.  39.  40

满足条件的是31.33.35.36.37.39      余4个满足3:2

   41.  42.  43.  44. 45.  46.  47.  48.  49.  50

满足条件的是41.42.43.45.37.48.49    余3个不满足3:2

   51.  52.  53.  54. 55.  56.  57.  58.  59.  60

满足条件的是51.53.54.55.57.48.59.60  余2不满足3:2

通过上面的数据,我们发现该条件不满足业务的3:2需求。所以网上提供的是错误的。我自己写了一个满足条件的,如下:

${__counter(true,)}%2==1||${__counter(true,)}%10==0

   1.    2.   3.   4.    5.    6.   7.    8.    9.   10

满足条件的是1.3.5.7.9 .10           余4个满足3:2

  11.  12.  13.  14. 15.  16.  17.  18.  19.  20

满足条件的是11.13.15.17.19.20    余4个满足3:2

21.  22.  23.  24. 25.  26.  27.  28.  29.  30

满足条件的是21.23.25.27.29.30      余4个满足3:2

后面的数据都不用举例了,这个条件是都能满足的。比例是3的条件已经写好了,那么很容易,我们也可以得出2的条件:

${__counter(true,)}%2==0&&${__counter(true,)}%10!==0

   1.    2.   3.   4.    5.    6.   7.    8.    9.   10

满足条件的是2.4.6.8             余6个满足3:2

  11.  12.  13.  14. 15.  16.  17.  18.  19.  20

满足条件的是12.14.16.18      余6个满足3:2

21.  22.  23.  24. 25.  26.  27.  28.  29.  30

满足条件的是22.24.26.28       余6个满足3:2

  四、执行测试: 

场景、脚本如下:

场景设置的是10VU,运行10S,执行结果总的业务量比例是3:2,TPS得比例也是3:2,如下所示:

这里只介绍if条件的使用,整个脚本的运行,看自己的需求,我这里都是接口的测试,前面的文章有介绍,建议在测试的时候,使用的是同一脚本,我的2个脚本都是一样的,脚本如下:

  五、业务测试结果: 

我的业务最终实现的结果如下3线下if控制器代表的是银联刷卡,2线上if控制器代表的是扫码支付,测试的数据是3:2。请求都放到同一个线程组中,业务请求放到if控制器下。在没有瓶颈的情况下,该公式都是正确的,如果是有瓶颈,那么公式测试出来的结果不一定满足。

原文地址:http://www.cnblogs.com/feng-1314/p/6808163.html

时间: 2024-08-29 18:15:17

Jmeter if控制器的使用 - 真正实现3:2的业务的相关文章

【转】JMeter循环控制器循环次数使用变量控制注意事项

[转自]JMeter循环控制器循环次数使用变量控制注意事项 1.进入循环控制器之前变量要有值: 2.BeanShell处理文件,读取行数,赋值给变量,要有相应的Sampler,不然脚本不会运行. 其中的sampler可以用BeanShell Sampler

Jmeter -- 循环控制器 -- 控制请求执行次数

目的: 登录请求 -- 执行一次 查询请求 -- 执行多次 步骤: 1. 添加循环控制器,按照下图层级所示: 2. 配置线程并发数,和循环控制器循环次数 原文地址:https://www.cnblogs.com/xiaochongc/p/11557815.html

Jmeter使用吞吐量控制器实现不同的用户操纵不同的业务

一.需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章. 二.脚本实现 80%的用户查看文章 20%用户创建文章 根据post_id是否能整除2,决定编辑还是删除 原文地址:https://www.cnblogs.com/loveapple/p/10035706.html

Jmeter -- 循环控制器和线程并发(关注执行顺序)

测试计划中包含两个线程组,分别设置如下: 线程组1:线程数为2,循环次数为4 线程组2:线程数为4 执行顺序 监听器View Results in Table(用表格查看结果)中,ThreadName列,n-m,其中n指线程组号,m指线程号例如:1-1,指第一个线程组中的第一个线程    1-2,指第一个线程组中的第二个线程    2-1,指第二个线程组中的第一个线程    2-4,指第二个线程组中的第四个线程每个线程下的请求,按顺序执行,有循环的在循环内按顺序执行 两个线程组都有四个请求,请求

【JMeter_17】JMeter逻辑控制器__随机顺序控制器<Random Order Controller>

随机顺序控制器<Random Order Controller> 业务逻辑: 当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍,执行一遍,不是执行一个. 注意:是将子节点的顺序打乱,而非请求的顺序打乱,子节点可以是其他逻辑控制器. 演示脚本: Demo_随机顺序处理器 随机控制器与随机顺序控制器名字十分接近,但两者还是有着明显的区别,可参考  JMeter逻辑控制器_随机控制器 随机控制器为每次只执行节点下的一个子节点,随机顺序控制器是将节点下的所有子节点都正常执行,只是将执

Jmeter——for循环控制器和if逻辑控制器

有时我们不仅仅需要用例按照简单的顺序跑,需要内嵌循环,或者条件分支,让某些用例在满足一定条件时才执行. 1.for循环控制器 此处记录两种应用的场景,一种是直接定义好要循环的变量,循环次数是固定的,写死就可以. 1)比如对起止时间进行循环,我们固定开始时间,让结束时间跨半小时.1小时.3小时.6小时...然后取各种长度的时间段.下面我们写好时间参数,配置for循环控制器: 这个例子中,我们循环只执行一次,就是让lte取lte_3的值,循环执行几次,取哪几个值,是可以通过start index和e

【JMeter_09】JMeter逻辑控制器__临界部分控制器&lt;Critical Section Controller&gt;

临界部分控制器<Critical Section Controller> 业务逻辑: 根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景 锁名类型: 锁名为空,认为每个锁为不同的锁 锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中 锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁 演示脚本: Demo_临界部分控制器 原文地址:https://www.cnblogs.com/fcholy/p/10902051.

jmeter之-用Firefox录制https协议证书问题

录制脚本的时候,比如录制https协议的百度网站 https://www.baidu.com ,所有录制设置均正常,但是在jmeter录制控制器里面就是没有任何录制的请求. 这个时候提示说证书不对 1.打开火狐选项--高级--证书 也可以在浏览器输入about:preferences#advanced 2.导入证书 之后就可以正常的录制https请求了. 用Chrome浏览器的可以如下设置 1.打开设置,找到管理证书 2.选择证书导入 选择是  导入成功之后就可以正常录制了

jmeter 逻辑控制器

简单的控制器 简单的逻辑控制器可以让你组织你的采样器和其他 逻辑控制器. 不像其他逻辑控制器,该控制器不提供除此之外的功能 存储设备. 控制面板简单的控制器的截图 参数 在这个例子中,我们创建了一个测试计划,发送两个蚂蚁和两个HTTP请求 Log4J HTTP请求. 我们分组蚂蚁和Log4J请求安置在里面 简单的逻辑控制器. 记住,简单的逻辑控制器如何JMeter没有影响 流程控制器(s)添加到它. 所以,在这个例子中,JMeter发送的请求 以下订单:Ant主页,Ant新闻页面,Log4J主页