jmeter-性能混合场景设计
Posted 无敌大牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter-性能混合场景设计相关的知识,希望对你有一定的参考价值。
混合场景
不同数量的并发用户数,对不同接口进行性能测试
在多个线程组下,才能控制不同的并发用户数,多个线程组下,挂接口, 才能实现 不同数量的人对不同接口进行性能测试。
-
跨线程组传参
-
属性 __setproperty 设置动态属性
-
使用bean shell后置处理器、JSR223也行
-
使用调试后置处理程序也行
-
直接使用调试取样器进行设置也行
-
设置过属性以后,使用__P或者
__property
函数来根据属性名称进行获取属性
-
-
文件嫁接(保存响应到文本)
-
数据库嫁接(sqllite数据库)
-
jmeter多个线程组之间默认是并行执行
因为是并行运行的,比如混合场景中设置了三个线程组,依次是从上到下关联的,有可能刚开始运行的时候,最上面的线程组还没有执行完,而导致后面关联的线程组取不到值
-
这里是调试脚本阶段的时候先在测试计划中勾选了独立运行每个线程组,即改为了串行
-
实际性能测试中,是肯定不能取勾选这个独立运行每个线程组,只有调试的时候 看脚本是否能通
实现思路
通过设置动态属性的方式, 进行混合场景设计
/*
1、前面的线程组中,设置属性 setproperty函数,把我们需要关联的参数,设置为属性。 首先,我们设置肯定是 属性名称唯一的 固定属性。(属性名称唯一,导致 后一次执行,会覆盖属性的前一次的值,)
2、、后面的依赖接口的线程组, 就使用 获取属性P 函数 去获取属性,就可以使用了。
3、但是,这个设计中,属性名称只有一个,导致 后一次执行,会覆盖属性的前一次的值
4、可以设置 属性名称动态变化, 可以再属性名称后面 $__threadNum
*/
实现方案
/*
上面的线程组设置的线程数小于下面的线程组所设置的线程数
但这样的话,比如线程组A设置了6个线程数,$__threadNum最大是6
线程组B设置了10个线程数,这就会导致最多会使用线程组A的6个属性,导致线程组B中的threadNum_7/8/9/10这4个属性根本取不到,这样就要去用计数器去控制线程组取最大值,如线程组A设置的线程数为6,则线程组B中计数器最大值就要设置为6,这样就能保证线程组B永远都能取到线程组A所设置的1-6个属性
如果上面的线程组大于下面的线程组数的话,就可以直接使用threadNum
总结:
1、混合场景中如果线程组A大于下面线程组B的线程数,就直接用threadNum函数即可
2、如果线程组A小于线程组B设置的线程数,线程组B使用线程组A所设置的属性时,则线程组B里面就要使用计数器函数来控制取属性的最大值不能超过线程组A的threadNum函数所设置的最大线程数
补充:
counter函数只会一直加1,而计数器可以设置最大值,超过最大值以后就会继续从头开始取
补充到博客:
threadNum函数的值只与线程组中设置的线程数有关,设置了几个线程数,则threadNum的最大值就为几,跟执行运行多久没有任何关系
*/
为什么用threadNum而不用counter函数
/*
,coner函数会一直累加1,会**导致 属性过多。这些属性放再内存中,会占用过高的内存**。属性名称\\_threadNum函数,为属性名称,属性的数量是可控的有限的。 同一个线程数会覆盖前一次的值,整体的 属性的利用率更高、内存占用相比 属性名称\\_counter函数会更少.
*/
总结
/*
**场景设计时,
场景一:线程组1 线程数 大于 线程组2的线程数
线程组2中获取属性值,就可以直接使用 属性名称\\_threadNum;
场景二:线程组1线程数小于线程组2的线程数,
线程组2中 添加计数器元件,元件中的最大值为线程组1的 线程数量,线程组2中使用时,获取属性, 属性名称\\_计数器的值
*/
2019-2021:测试实用干货精选汇总
性能测试设计
【性能测试必备】混合场景:基于ELK实现性能测试业务模型及tps提取
性能测试实战
02、性能测试:jmeter中通过beanshell把关联转变成参数化
03、如何面试性能测试
04、性能测试常用术语解释
05、性能测试案例:redis获取不到连接池,Timeout waiting for idle object
11、性能测试:通过一个案例告诉你,性能到底要不要熟悉业务逻辑?
15、性能测试之redis集群监控环境搭建:prometheus + redis_exporter + grafana
性能分析调优技术栈
linux、nginx、tomcat、jvm、mysql、redis、kafka
已分享至测试提升圈(←点击查看)
另外,直播更详细:查看详情
文末加作者微信邀请进微信群
jmeter & beanshell
jmeter基础
01、jmeter介绍及脚本录制
02-1、jmeter关联的5种方式
02-2、记录一次群答问:jmeter正则提取器提取一个及多个值
03、jmeter参数化
04、事务、检查点、集合点、思考时间、其余设置等
jmeter脚本等
02、测试必备:jmeter测试http协议接口的各种传参方式
04、jmeter二次开发
beanshell
02-06、jmeter对入参进行MD5加密的5种方式
02、jmeter对入参进行MD5加密的5种方式之一:自带函数
03、jmeter对入参进行MD5加密的5种方式之二:beanshell自定义脚本
04、jmeter对入参进行MD5加密的5种方式之三:引用java文件
05、jmeter对入参进行MD5加密的5种方式之四:引用class文件
06、jmeter对入参进行MD5加密的5种方式之五:引用jar包
07、性能测试:jmeter中通过beanshell把关联转变成参数化
loadrunner
04、事务、检查点、集合点、思考时间、其余设置等
05、场景
06、录毛线脚本,带你直接手写
自动化测试
01、接口自动化必备:java、python及jmeter操作redis
02-1、接口自动化测试框架:jmeter + ant + jenkins(上)
02-2、接口自动化测试框架:jmeter + ant + jenkins(下)
03、自动化持续集成环境搭建(上):git + maven + jenkins
04、自动化持续集成环境搭建(下):git + maven + jenkins
05、自动化测试框架(框架源码请文末联系作者获取)
06、接口自动化测试实战
测试其它基础技能
01、查看日志小技巧
简历、笔试、面试
01、如何面试性能测试
02、性能面试题:如何找到并发数、平均响应时间、tps的最佳平衡点?
03、面试题(造火箭必备技能):请举例一个最有成就感的性能bug
04、面试自动化:如果你认为知道18种定位方式就算会自动化,那就太low了
05、悄悄告诉你,这些是我常问的面试题(部分参考答案已经放Q群文件中)
06、常见性能测试面试题
08、python面试题汇总
提升建议
01、测试技术提升建议
更多干货,正在挤时间不断更新中,敬请关注+期待。
添加微信,交流测试,领取资料
以上是关于jmeter-性能混合场景设计的主要内容,如果未能解决你的问题,请参考以下文章