说到JMeter的动态线程组和动态吞吐量技术时,这里会有一些误解,很多人会理解成动态参数,比如通过NonGui命令模式传参,就是一种动态传入参数的技术:
jmeter -JthreadCount=50 -JDurationTime=100 -n -t F:\TestScript\test.jmx -l F:\TestReport\test\api.jtl -e -o F:\TestReport\testHtml
这是的-J开头表示传入参数,传入的是线程数threadCount和压测时间DurationTime两个参数,这种方式不叫动态线程技术,只能叫动态传入参数进行压测,每次压测参数可能不一样,但是在压测的过程中这个参数是固定没法动态改变的。而我们所说的动态线程技术,是指创建动态的线程组,在测试计划运行过程中(压测不停止),线程组是可以任意改变参数变量的,比如上面的线程数和压测时间,甚至吞吐量都可以在压测过程中任意改变。需要说明的是,这种技术在JMeter原生的线程组ThreadGroup是没有的,只有在第三方线程组(blazemeter线程组)bzm - Arrivals Thread Group和bzm - Concurrency Thread Group。
可能会有人说,为什么要在压测过程中改变参数,大家可以想像一下,如果我们的压测任务是压4小时(稳定性测试场景),当我们压到2小时的时候,发现压力不够(或是压力太大,快崩溃),这时候该怎么办,一个办法就是停止压测,改变压力参数值后重新启动测试,这看似很正常的一个操作,但问