Jmeter添加测试组后,测试组中各设置含义以及用法
jmeter中,一般在添加完一个测试计划之后,就是添加测试组,测试组内再添加HTTP请求
那么添加测试组时,会发现他有不少的设置,本篇来说明一下各个设置的含义及其用法(如有错误,欢迎指正)
1、Thread Group
1、name、comments 比较好理解,就是这个测试组的名称以及对这个测试组的说明
2、Action to be taken after a sampler error ,这个翻译过来的意思是:在取样器发生错误时要执行的动作;他有多个选项
- Continue
作用: 当取样器发生错误时,继续执行当前线程。这是默认选项,通常用于保证足够的并发压力。
说明: 如果选择这个选项,JMeter将忽略取样器的错误,并继续执行当前线程中的后续请求。这可以确保测试不会因为单个请求的错误而中断。
- Start Next Thread Loop
作用: 当取样器发生错误时,结束当前线程的当前迭代,并开始下一个迭代(即新的线程循环)。
说明: 这个选项将停止当前迭代中出错后的所有请求,并开始新的迭代。这可以用于在单个迭代中遇到错误时重置测试状态。
- Stop Thread
作用: 当取样器发生错误时,停止当前线程,不再执行后续请求。
说明: 选择这个选项后,如果取样器发生错误,当前线程将立即停止执行,不会继续后续请求。这可以用于在单个线程中遇到严重错误时立即停止测试。
- Stop Test
作用: 当任何一个线程的取样器发生错误时,等待当前线程完成当前迭代后停止所有线程。
说明: 这个选项将确保所有线程完成当前迭代后再停止测试。它允许已经开始的迭代完成,但会阻止新的迭代开始。
- Stop Test Now
作用: 当任何一个线程的取样器发生错误时,立即停止所有线程。
说明: 选择这个选项后,一旦有取样器发生错误,JMeter将立即停止所有线程,不再执行任何后续请求。这是一个强硬的错误处理策略,用于在发生严重错误时立即中断测试。
其中中间三种的使用,结合下面的设置可能会更好理解,当前线程的当前迭代,可以理解成设置了多个用户,每个用户执行多次循环,则第一个用户在执行循环的过程中出错了,
3、Thread Properties 线程属性
- 3.1 Number of Threads (users)
作用: 设置参与测试的线程数,即模拟的虚拟用户数。
用法: 直接输入需要的线程数。例如,输入100表示模拟100个用户进行测试。
- 3.2 Ramp-Up Period (in seconds)
作用: 设置JMeter在多长时间内建立全部的线程。这决定了线程启动的速率。
用法:
如果设置为0,JMeter将立即建立所有线程。
如果设置为非零值(如T秒),JMeter将按照N/T的速率(N为线程数)来建立线程。例如,如果线程数为100,Ramp-Up Period为10秒,则JMeter将每0.1秒建立一个线程。
注意:Ramp-Up Period设置过小可能导致服务器过载,设置过大可能降低访问峰值的负载。
- 3.3 Loop Count
作用: 设置每个线程运行的次数。
用法: 输入一个正整数表示每个线程循环的次数。
如果勾选Infinite(或留空),则线程将无限循环,直到手动停止测试。
- 3.4 Same user on each iteration
作用: 勾选后,每次迭代都使用相同的线程。
场景: 比如如果测试中和用户信息(如Cookie)有关联时,
当勾选Same user on each iteration时,JMeter将在每次迭代中使用相同的用户信息(如Cookie)进行请求。这有助于模拟用户在连续请求中保持登录状态的情况。
当未勾选此选项时,JMeter将在每次迭代中创建一个新的用户会话,这意味着在每次迭代中,请求将携带不同的用户信息(如新的Cookie),从而模拟用户在每次请求中都需要重新登录的情况。
注意事项
这个设置仅适用于HTTP协议的请求,并且需要配合HTTP Cookie管理器一起使用,以便正确地管理和传递Cookie。
默认情况下,Same user on each iteration是勾选的,因为销毁和创建线程本身就会占用资源,可能会影响性能测试结果。
如果你的测试场景需要模拟用户重新登录的情况,或者需要测试系统的会话管理功能,那么可以取消勾选此选项。
在进行性能测试时,如果测试目标是评估系统在用户持续登录状态下的性能表现,那么建议勾选Same user on each iteration。
如果你的测试场景需要模拟用户重新登录或测试会话管理功能,那么应该取消勾选此选项,并相应地配置HTTP Cookie管理器以清除旧的Cookie。
- 3.5 Delay Thread creation until needed(直译为将线程创建延迟到需要时)
作用: 勾选后,延迟线程创建。
场景: 一般比较适用于如果有大量线程的测试计划,为了尽可能减少开始时大量创建和启动线程消耗资源而对测试结果的准确性的影响,可以勾选这个开关。默认情况下,所有配置的线程(用户)在测试开始时几乎同时被创建和启动。这意味着如果有一个包含大量线程的测试计划,所有这些线程会迅速消耗大量的系统资源,这可能会导致服务器或测试环境过载,甚至影响测试结果的准确性。
勾选后,其下有两个设置项可设置:Startup delay (in seconds)、Duration (in seconds)
- 3.5.1 Duration (in seconds) 线程启动前的延迟时间(以秒为单位)
用处: Duration(持续时间)用于设置线程组测试的持续时间,以秒为单位。这个设置决定了从测试开始到结束的时间长度。即使你设置了循环次数为Infinite(无限循环),测试也会在达到这个持续时间后结束。
应用场景: 当你需要控制测试的总体运行时间时,可以使用这个参数。例如,你可能只想让测试运行30分钟来观察系统在一定时间内的表现。
- 3.5.2 Startup delay (in seconds) 每个线程的持续时间(以秒为单位)
用处: Startup Delay(启动延迟)用于设置测试开始后的延迟时间,也是以秒为单位。这个设置决定了从测试计划开始执行到实际创建并启动线程组之间的等待时间。
应用场景: 这个参数在需要定时启动测试时非常有用。例如,你可能想在某个特定的时间点开始测试,或者想在系统负载较低的时候启动测试以避免对生产环境造成不必要的干扰。
注意:
1、当Duration和Ramp-Up Period(线程启动时间)同时设置时,要确保Duration不会小于Ramp-Up Period,否则可能导致测试在达到Ramp-Up Period之前就已经结束。
2、当"Duration"和"Loop Count"都被设置时,JMeter将基于先到的条件来停止线程。例如,如果Loop Count设置为5,但Duration设置为30秒,并且线程在30秒内完成了5次循环,那么线程将在完成5次循环后停止。然而,如果线程在30秒内没有完成5次循环,那么它将在30秒结束时停止,无论它完成了多少次循环。