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提取

性能测试实战

00、一篇文章告诉你怎么做性能测试

01、jmeter5.1分布式压

02、性能测试:jmeter中通过beanshell把关联转变成参数化

03、如何面试性能测试

04、性能测试常用术语解释

05、性能测试案例:redis获取不到连接池,Timeout waiting for idle object

06、性能测试案例:tps波动频繁

07、性能测试案例:一个频繁fgc问题

08、性能测试案例:获取不到redis连接池

09、性能测试案例:数据库cpu高导致响应时间长

10、性能测试案例:带宽占用高

11、性能测试:通过一个案例告诉你,性能到底要不要熟悉业务逻辑?

12、jmeter分布式导致重复登录的问题

13、三种方式,轻松搭建可视化性能测试监控平台

14、你也可能遇到的一个类似的性能需求

15、性能测试之redis集群监控环境搭建:prometheus + redis_exporter + grafana

16、性能测试案例:Oracle重复的SQL

性能分析调优技术栈

linux、nginx、tomcat、jvm、mysql、redis、kafka

已分享至测试提升圈(←点击查看)

另外,直播更详细:查看详情

Arthas在性能测试中的常用功能

文末加作者微信邀请进微信群

jmeter & beanshell

jmeter基础

00、jmeter,学这些重点就可以了

01、jmeter介绍及脚本录制

02-1、jmeter关联的5种方式

02-2、记录一次群答问:jmeter正则提取器提取一个及多个值

jmeter正则提取多个值

03、jmeter参数化

04、事务、检查点、集合点、思考时间、其余设置等

jmeter脚本等

01、jmeter引用jar包的3种方式

02、测试必备:jmeter测试http协议接口的各种传参方式

03、jmeter测试dubbo接口

  想练习dubbo接口测试,但是没接口?

04、jmeter二次开发

beanshell

01、玩转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把关联转变成参数化

08、jmeter参数化文件路径问题

loadrunner

01、LoadRunner原理、使用流程及脚本实战

02、LoadRunner核心功能:关联

03、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、接口自动化测试实战

07、一个jmeter自动化问题

测试其它基础技能

01、查看日志小技巧

02、写了那么久代码,还不会debug?

简历、笔试、面试

01、如何面试性能测试

02、性能面试题:如何找到并发数、平均响应时间、tps的最佳平衡点?

03、面试题(造火箭必备技能):请举例一个最有成就感的性能bug

04、面试自动化:如果你认为知道18种定位方式就算会自动化,那就太low了

05、悄悄告诉你,这些是我常问的面试题(部分参考答案已经放Q群文件中)

06、常见性能测试面试题

07、高级测试面试题(mysql篇)

08、python面试题汇总

09、你可能会遇到的一个jvm面试题

10、【笔试必备】sql太菜?速来恶补一下

提升建议


01、测试技术提升建议

02、测试提升方向:选测试开发?还是性能测试?

更多干货,正在挤时间不断更新中,敬请关注+期待。

添加微信,交流测试,领取资料

以上是关于jmeter-性能混合场景设计的主要内容,如果未能解决你的问题,请参考以下文章

jmeter混合场景性能测试

Jmeter性能压测

jmeter学习-性能指标jmeter初识

性能场景之压测策略设计

全网火爆,Jmeter性能场景设计 - 压力负载测试性能场景+分析性能指标

jmeter压力测试