测试场景是测试过程中通常尽量模拟真实系统环境及用户操作而设计的场景,场景设计源于用户的真实操作,设计原则是贴近于用户实际操作,组合用户的各种操作到场景中来。JMeter是通过线程组的设置来完成场景设置的,有些复杂场景还需要与逻辑控制器配合。JMeter 线程组实际上是建立一个线程池,JMeter根据用户的设置进行线程池的初始化,及在运行时做各种异常处理。如图
一:线程属性:
1:线程数:可以理解为并发用户数,一个线程对应一个并发用户;与LoadRunner中的VU一致,只是LoadRunner中VU可以是线程,也可以是进程(以Http协议为例);
2:Ramp-up period(in second):线程启动开始运行的间隔时间,此处单位为秒,即所有线程多长时间内全部启动,假设线程设置为100(模拟100vu并发),Ramp-up period设置为10秒,那就是10秒内将100个线程启动,相当于每秒中有10个线程启动(100/10);如果设置1,就是场景发起后1秒内全部启动100个线程。
3:循环次数:“永远”就是场景不结束就所有线程一直发起压测,如果想每个线程迭代多少次之后就停止压测,就可以填入具体的数字。
注意:持续一段时间运行,要选择永远;否则调度器设置无效
4:Delay Thread creation until needed:选择该项,线程在Ramp-up period的间隔时间启动并运行,如100并发线程,10秒的ramp-up period时间,那么1秒种启动10个线程并运行采样器中的请求。如果不勾选,测试计划启动所有线程(100个)为new状态,但不立即运行采样器(sampler)中的请求,是按照ramp-up period时间来运行的,如100个线程,ramp-up 的时间是10秒,那么每秒会有10个线程有new状态转为Running,并执行采样器中的请求。实际测试场景设置时,选不选该项都不会影响测试结果。二者的区别是勾选线程是在间隔时间内建立启动并运行,不勾选是先建立所有线程然后按间隔逐步执行。
5:调度器: 选择调度器可以控制场景执行时间或指定那个时间段执行,如秒杀场景就可以设置为某日某点某分开始执行,某日某点某分结束,具体调度器中各个参数如下:
持续时间:表示脚本持续运行的时间,以秒为单位,例如脚本模拟用户持续不断登录1个小时,你可以在文本框中填写3600。如果在1小时以内,结束时间已经到达,它将会覆盖结束时间,继续执行。
启动延迟:表示脚本延迟启动的时间,在点击启动后,如果启动时间已经到达,但是还没有到启动延迟的时间,那么,启动延迟将会覆盖启动时间,等到启动延迟的时间到达后,再运行系统。例如你的测试场景需要再另外一个场景结束后开始,上一个场景需要10分钟后结束,那么你可以再启动延迟中设置601秒,点击启动,就可以在上一个场景结束后,开始本次测试场景;
启动时间:表示我们脚本开始启动的时间,当你不想立即启动脚本测试,但是启动脚本的时间不会再电脑旁的时候,你可以设定一个启动的时间,然后再运行那里点击启动,系统将不会立即运行,而是会等到你填写的时间才开始运行。
结束时间:与启动时间对应,表示脚本结束运行的时间。
二:应用实例