Jmeter 并发业务场景如何控制接口只执行一次
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
今天在做并发测试执行后会发现登录接口执行多次实际只需执行一次就可以。
刚开始用了网上推荐的仅一次控制器但是发现仅一次控制器对线程组无效。
其实只要对元件熟悉这个问题很简单只需要用吞吐量控制器Throughput Controller即可实现。
1、创建一个线程组Thread Group设置10个并发如图
2、添加吞吐量控制器(Throughput Contrller)
线程组-逻辑控制器-吞吐量控制器
3、吞吐量控制器选择总数计算(Total Executions)吞吐量设置为1
4、【吞吐量控制器】组件中添加需要单次执行的请求接口
4、运行脚本查看结果发现登录接口执行了1次组织项目列表接口执行了10次
问题完美解决
下面详细介绍一下吞吐量控制器
吞吐量控制器
吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数并无控制吞吐量的功能想要控制吞吐量可以使用 Constant throughput Timer。吞吐量控制器有两种模式PercentExecutions 与 Total Executions。
属性介绍
- 名称控制器名称可以随意设置甚至可以为空。
- 注释可以随意设置可以为空。
- Based on选择执行模式。
3.1 PercentExecutions按执行次数的百分比来计算执行次数此时Throughput取值是0~
100。
3.2 Total Executions按Throughput的值来指定执行次数可以是任意整数如果小于等于
零则一次也不执行。- 吞吐量这个值的作用根据你选择的执行模式不同可分为两种情况
4.1 Percent executions 模式下代表执行次数的百分比。如填写30则表示子元件会执行原执行次数*0.3次。
4.2 Total executions模式下代表执行的总次数。如填写50则表示子元件会执行50次。- Per User表示是否要在每个线程组上单独应用控制器的设置。
5.1 PerUser是否勾选对PercentExecutions模式无影响.
5.2 PerUser与TotalExecution一起影响执行次数。比如说在Total executions模式下填写了50的吞吐量勾选了Per User那么控制器的子元件会执行线程数 * 50次不勾选Per User那么控制器的子元件会执行50次。
序号 | 线程数 | 循环次数 | 模式 | Throughput | 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 |
上面表格有6个场景线程数为2循环次数为10。
下面说明一下这6个场景。
1序号 12 场景PerUser 对总的执行次数无影响都是10次。
2序号 3 场景PerUser 勾选每个虚拟用户线程执行7次共执行16次。
3序号 4 场景PerUser 没有勾选则所有虚拟用户共执行7次。
4序号 5 场景PerUser 勾选每个虚拟用户执行7次共16次由于 ThreadGroup 计划的循环次数是42 线程*循环 2 次次所以最多只能执行4次。
5序号 6 场景PerUser 没有勾选所有虚拟用户共执行7次由于 ThreadGroup 计划的循环次数是42 线程*循环 2 次次所以最多只能执行4次。