Jmeter常用线程组设置策略

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

一、前言

​ 在JMeter压力测试中,我们时常见到的几个场景有:单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试

在本篇文章中,我们会用到一些插件,在这边先给大家列出:

​ Custom Thread Groups插件
PS:在我们正式测试中,统一使用非GUI界面运行,只有在调试时候我们才会用GUI运行

二、单场景基准测试
1.介绍
​ 单场景基准测试,一般在压力测试实施前进行测试,用于检测被测功能的性能指标,以用来判断制定后期的测试计划。基准测试的策略可以是单用户执行一次或者单用户迭代执行多次。在这里我们采用后者。

2.线程组设计
​ 这里的脚本设计很简单,就是1线程组循环100次。简单!

3.测试结果

(一般情况下我们在生成的HTML报告查看测试结果,当然也可以在GUI界面导入我们生成的jtl文件)

三、单场景并发测试
1.介绍
​ 单场景并发测试是针对单个接口利用一定量的并发进行测试,获取其性能表现,并验证接口是否存在并发性问题。

2.线程组设计
​ 单场景并发测试的设计比较简单,就是在线程组设置中设置若干数量的线程数。这里我们通过Custom Thread Groups插件来更好体现线程组设计。

该线程组意思为:

​ 2000用户并发,在200S完成加载到2000用;然后持续运行900S,然后以100S来结束2000用户

3.测试结果

四、单场景容量/爬坡测试

1.介绍

​ 单场景容量测试,也叫做爬坡测试,通过爬坡测试。获得系统的最佳并发用户数。

2.线程组设计

​ 在这里我们也使用插件来表现

​ 我们来简单讲一下一下这个线程组设计

首先我们这个线程组是以1000并发数开始,每次递增200用户,指导递增到2000用户。

首先第三和第四列可以根据自己需求进行设计。

其实也很简单。按照我们的设计,低234列相加的和要是2000。

我们可以根据第二列来计算出所有,首先我们要形成阶梯式递增,那就得初始化时间等于在此之前并发的运行时间。

我们看第二行的400。他等于增加到1000用户的100s+平均每个阶梯平缓的时间(1900s-20s*5)/6=400s

这个20*5就是要扣除五个200增加的过程对应时间,然后除去平台总数6

第三行就很简单了,也就是400s+300s+20s=720s。

这里讲的比较乱,也比较绕,自己能力问题不能讲的太好,请见谅。

3.测试结果
​ 容量测试的结果更建议大家到HTML报告中进行查看

我们先看看Response Times Over Time,很明显在13.09左右达到了3s左右的响应时间

那我们再看看Active Threads Over Time中该时间段的并发用户数,由此可见最佳用户数是1400

五、混合场景容量/并发测试
1.介绍
​ 这个其实就没啥可说的了,和单场景的差别不大,无非就是多个场景混合在一起了。我们就不介绍了

六、稳定性测试
1.介绍
​ 稳定性测试是为获取多个接口在长时间的负载级别下,平均响应时间、资源利用率的稳定性、事务成功率的稳定性,验证系统的稳定运行能力,获取系统长时间运行的稳定性指标。在稳定性测试中,我们往往要跑好几个小时的性能脚本,所以一般建议大家一定要在下班后挂着

2.线程组设计
​ 在这里我们拿五个脚本。一共是2000用户并发。按照惯例我们最后得到每个脚本为240用户并发。于是每个线程组设置为

3.测试结果

 以上就是这节的全部内容,如有错误,还请各位指正!

既然看到这里,在收藏的同时,也请不吝啬的点个赞呗!期待 ~

最后感谢每一个认真阅读我文章的人,下方这份完整的软件测试教程已经整理上传完成,需要的朋友们可以文末自行领取:【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

<think>好的,我现在需要帮助用户了解如何在JMeter中动态设置线程数。根据用户提供的引用内容,我需要先整理已有的信息,然后结合这些信息给出一个清晰的步骤指南。 首先,用户提到的引用[2]提到了使用shell脚本修改并发数,而引用[4]详细介绍了线程组的属性设置,包括线程数、Ramp-Up时间和循环次数等。引用[3]则提到使用Custom Thread Groups插件来进行线程组设计。这些内容都是关键点。 动态设置线程数可能涉及在测试运行期间调整线程数量,而JMeter本身可能没有直接的GUI选项来实现这一点,所以可能需要借助脚本或插件。例如,引用[2]中的jmeter动态修改线程数脚本,可能涉及到通过外部脚本或BeanShell脚本来调整线程数。另外,引用[4]提到调度器设置和循环次数,这可能用于控制线程的持续时间,但可能不是动态调整的实时方法。 接下来,我需要确定用户的需求是实时调整线程数还是在测试计划中动态调整。根据问题描述,用户可能希望根据测试过程中的某些条件或外部输入来改变线程数。因此,可能需要结合BeanShell或JSR223脚本,或者使用插件如Custom Thread Groups来动态调整。 另外,引用[3]提到的Custom Thread Groups插件可以设计更复杂的线程组策略,可能支持动态调整。而引用[4]中的调度器设置可能允许设置持续时间,但需要配合其他方法来实现动态变化。 可能的步骤包括: 1. 使用BeanShell或JSR223脚本在运行时修改线程数。 2. 利用插件如Custom Thread Groups或bzm - Concurrency Thread Group来实现动态调整。 3. 通过外部脚本(如shell脚本)调用JMeter的API或修改测试计划文件来动态调整线程数。 需要注意检查每个方法的可行性和具体操作步骤,确保语法正确,并引用相关来源。例如,引用[2]提到用shell脚本修改并发数,可能需要具体说明如何编写该脚本以及如何与JMeter集成。同时,引用[4]中的线程组设置可能需要结合调度器来控制线程的运行时间。 最后,需要验证这些方法的正确性,确保用户能够按照步骤操作,并生成相关问题以帮助用户进一步了解。</think>### JMeter动态设置线程数方法教程 在JMeter中动态调整线程数通常需要结合脚本或插件实现,以下是几种常用方法: --- #### 方法1:通过BeanShell/JSR223脚本动态修改 1. **添加线程组** 创建线程组设置初始线程数,例如:线程数=10,Ramp-Up=1秒[^4]。 2. **添加BeanShell Sampler** 在测试计划中添加BeanShell Sampler,编写脚本动态修改线程数: ```java import org.apache.jmeter.threads.ThreadGroup; ThreadGroup threadGroup = ctx.getThreadGroup(); threadGroup.setNumThreads(20); // 动态调整为20个线程 ``` 此脚本会在运行时将线程数从10调整为20[^2]。 3. **配合逻辑控制器** 可将脚本与`If Controller`结合,根据响应结果动态触发线程数调整。 --- #### 方法2:使用Concurrency Thread Group插件 1. **安装插件** 通过JMeter插件管理器安装`Custom Thread Groups`和`Concurrency Thread Group`[^3]。 2. **配置动态线程模型** - 选择`bzm - Concurrency Thread Group` - 设置目标并发数(Target Concurrency),例如从10逐步增加到50 - 通过`Hold Target Rate`控制持续时间,实现动态增减 --- #### 方法3:外部脚本调用JMeter API 通过Shell/Python脚本修改JMeter测试计划文件(.jmx)中的线程数,并重启测试: ```bash # 示例Shell脚本片段 sed -i 's/<stringProp name="ThreadGroup.num_threads">10<\/stringProp>/<stringProp name="ThreadGroup.num_threads">30<\/stringProp>/g' test.jmx jmeter -n -t test.jmx -l result.jtl ``` 此方法适用于测试前预调整,非实时修改。 --- #### 方法4:调度器与定时器组合 在线程组中启用调度器: - 设置`Ramp-Up Period`为阶段时间(如60秒) - 通过`Duration`控制总运行时间 - 结合`Throughput Shaping Timer`动态调整吞吐量,间接影响线程利用率 --- **注意事项** - 动态调整可能影响测试结果稳定性,需多次验证 - 高并发时优先使用插件而非脚本,避免性能损耗 - 实时修改需确保线程组未执行完成[^4] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值