Jmeter(27):jmeter的线程组元件&第三方插件的线程组压力和负载线程
线程组(thread group)
线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件 都必须在某个线程下。所有的任务都是基于线程组。
一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一 个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的, 互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。
线程组的设置相当于性能测试中的场景设置。场景是用来尽量真实模拟用户 操作的工作单元,场景设计源自于用户真实操作。
性能测试中涉及的基本场景有两种,即单一业务场景和混合业务场景,这两 种业务场景缺一不可,缺少任何一种都不能准确评估系统性能,定位系统瓶颈。
如果只做单一业务场景,得到的结果与实际生产环境差距较大,没有实际指 导意义;如果只做混合业务场景,不能快速定位系统性能快速降低的原因,起不 到定位瓶颈、系统调优的作用。只有两种场景互为补充,才可以获取最符合客户 要求的测试结果
线程组界面解析:
在取样器错误后要执行的动作
设置线程组中某一个请求出错后的异常处理方式。
继续:请求出错后继续运行。勾选此项后,有请求出错也继续运行。在大量用户 并发的情况下,服务器偶尔响应错误是正常现象,比如服务器由于性能问题不能 正常响应或者响应不及时,此时我们把过程中错误记录下来,作为有性能问题的 依据
启动下一进程循环:遇到sampler执行出错时,直接进行下次循环,当前循环剩 下的所有sampler不再执行
停止线程:遇到sampler执行出错时,当前线程停止进行,其他线程继续。
停止测试:遇到sampler执行出错时,当前所有线程执行完当前循环停止进行。
立即停止测试:遇到sampler执行出错时,当前所有线程立即停止
线程属性
线程数:设置并发用户线程数量,即通常意义的并发用户数,一个线程对应一个 模拟用户(且用户之间独立);(如果线程数是5,循环次数是2,则代表每个线程用户循环2次,一共执行10次)
Ramp-Up时间(秒):设置并发用户加载时间,即线程启动开始运行的时间间隔,单位是秒。(如上图中表示10秒加载5个线程,很均匀的2秒加载一个,可通过监听器中的用表格察看结果看到间隔时间)
循环次数:线程组下的元件循环次数设置,勾选永远则是无限循环(进行性能测试的时候设置成永远)
same user on each iteration:选中后每次循环用第一次的cookie,不再更新, 可以理解为每次循环都是同一个用户;不选中每次循环都是用新的cookie值,可 以理解为每次循环都是不同的用户;(一般和HTTP Cookie管理器的每次反复清除cookies?的勾选框使用)
延迟创建线程直到需要:默认情况下,测试开始的时候,所有线程就被创建完了。 如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。设置与否区别 不大;
调度器:用于设置该线程组下脚本执行的开始时间和结束时间(及性能测试的持续时间);
持续时间(秒):测试计划持续多长时间(设置性能测试的持续时间,比如设置7200秒等于性能测试要做2小时);
启动延迟(秒):测试计划延迟多长时间启动(设置性能测试的开始时间,比如设置30秒等于30秒后开始进行性能测试)
setUp线程组(setUp thread group):
一种特殊类型的线程组,用于在执行常规线程组之前执行一些必要的操作。 在 setup线程组下提到的线程行为与普通线程组完全相同。不同的是执行顺序--- 它会在普通线程组执行之前被触发;
应用场景举例:
A、测试数据库操作功能时,用于执行打开数据库连接的操作。
B、测试用户购物功能时,用于执行用户的注册、登录等操作。
注:跨线程组之间不能进行jmeter变量传递,即使在线程组最外面使用用户定义的变量也不行;跨线程组之间也不能进行cookie传递,即使在线程组最外面使用cookie管理器也不行;如下图;(可通过后置处理器》BeanShell后置处理程序把jmeter变量和cookie作为jmeter属性进行传递;见下面的解决方法)
解决方法:通过后置处理器》BeanShell后置处理程序把jmeter变量和cookie作为jmeter属性进行传递
解决方法参考:https://i.cnblogs.com/posts/edit-done;postId=16213133
tearDown线程组(tearDown thread group)
一种特殊类型的线程组,用于在执行常规线程组之后执行一些必要的操作。 在 teardown线程组下提到的线程行为与普通线程组完全相同。不同的是执行顺序--- 它会在普通线程组执行之后被触发;
应用场景举例:
A、测试数据库操作功能时,用于执行关闭数据库连接的操作。
jp@gc - Stepping Thread Group线程组
该线程组属于第三方插件可参考:https://www.cnblogs.com/YouJeffrey/p/16212939.html 进行下载安装
当测试需求要求是阶梯型的压力测试场景时,使用该线程组。
Stepping Thread Group界面介绍
This group will start "Max" threads:达到多少个并发,比如需求是达到100个并发 后持续加压,这里就是100,也就是并发的最高点;
First,wait for "N" seconds:启动第一个线程之前,需要等待N秒,如果这里是0, 表示不等待,直接启动;
Then start "N" threads:设置最开始时启动N个线程,一开始启动多少个线程,如 开始启动30个线程;
Next add "N1" threads every "N2" seconds, using ramp-up "N3" seconds:表示每隔 N2秒,在N3秒内启动几个线程,如每隔10s在5s内启动10个线程;
Then hold load for "N" seconds:单台负载机全部线程加载完毕,持续运行多少秒;
Finally,stop "N1" ,threads ervery "N2" seconds:表示每隔N2s,停掉N1个线程;
jp@gc - Ultimate Thread Group线程组
该线程组属于第三方插件可参考:https://www.cnblogs.com/YouJeffrey/p/16212939.html 进行下载安装
该线程组功能强大,可以实现多种自定义场景设置
Ultimate Thread Group界面介绍
Start Threads Count:当前行启动的线程总数
Initial Delay/sec:延时启动当前行的线程,单位:秒
Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒
Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒
Shutdown Time:停止当前行所有线程所需时间,单位:秒
Ultimate Thread Group应用
1、创建线性负载:如下 30s内50个用户进入系统,持续访问系统60s后,在10s 退出
2、创建步进负载:想看系统的负载量是多少,最大负载多少,是否可以平稳运行
3、创建波浪形测试负载:比如12306抢票的时候,每次抢票开始时,有大量用 户响应,等到下次开放时,又有大量用户响应