51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1775|回复: 0
打印 上一主题 下一主题

jmeter学习指南之详解jmeter线程组

[复制链接]
  • TA的每日心情

    2018-3-26 10:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-12-31 23:31:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程下。所有的任务都是基于线程组。

    一、Threads (Users)线程 用户

    上图可以看到,jmeter有三个添加线程组的选项,名字不一样, 但是创建之后,其界面是完全一样的。

    1、 setup thread group  

    一种特殊类型的ThreadGroup,用于在执行常规线程组之前执行一些必要的操作。在“setup thread group ”下提到的线程行为与普通线程组完全相同。不同的是执行顺序---它会在普通线程组执行之前被触发。

    应用场景举例:

    A、测试数据库操作功能时,用于执行打开数据库连接的操作。

    B、测试用户购物功能时,用于执行用户的注册、登录等操作。

    2、teardown thread group

    一种特殊类型的ThreadGroup,用于在执行常规线程组完成后执行一些必要的操作。在“teardown thread group ”下提到的线程行为与普通线程组完全相同。不同的是执行顺序---它会在普通线程组执行之后被触发。

    应用场景举例:

    A、测试数据库操作功能时,用于执行关闭数据库连接的操作。

    B、测试用户购物功能时,用于执行用户的退出等操作。

    tips:

    默认情况下,如果测试按预期完成,则TearDown线程组将不会运行。如果你想要运行它,则需要从Test Plan界面中选中复选框“Run tearDown Thread Groups after shutdown of main threads”。

    -----------------------------------------------------------

    可能你还是不太理解他们与普通的线程组有什么不同。但是如果你用过junit,想必你应该对setup ,teardown这两个字眼不陌生。

    如果你熟悉loadrunner,那你应该知道loadrunner的脚本中除了   action里是真正的脚本核心内容,还有进行初始化操作的init脚本和测试完毕后对应的end脚本块。那么这里setup thread group 和 teardown  thread group 就是分别指这两部分。

    3、 thread group(线程组)

         这个就是我们通常使用的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

    二、线程组基本设置

    在线程组界面中可以设置以下数据,进行控制线程组:

    1、取样器错误后要执行的动作:

    继续:忽略错误,继续执行

    Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。

    停止线程:当前线程停止执行,不影响其他线程正常执行。

    停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止

    Stop test now:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。

    这几个配置项控制了“当遇到错误的时候测试的执行策略”是否会继续执行。

    2、设置线程数:

    线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。

    3、设置ramp-up period:

    ramp-up period用于设置启动所有线程所需要的时间。如果选择了10个线程,并且ramp-up period是100秒,那么JMeter将使用100秒使10个线程启动并运行。每个线程将在前一个线程启动后10(100/10)秒后启动。

    当这个值设置的很小、线程数又设置的很大时,在刚开始执行时会对服务器产生很大的负荷。

    下图的线程配置中,5个线程,5秒启动时间,每个线程执行两次循环。那么每个线程之间启动延迟为 1 秒。





    4、设置循环次数:

    该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。

    5、Delay Thread creation until needed:

    默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。

    三、线程组调度器设置

    调度器配置可以更灵活的控制线程组执行的时间


    1、持续时间(秒):

    控制测试执行的持续时间,以秒为单位。

    2、启动延迟(秒):

    控制测试在多久后启动执行,以秒为单位。

    3、启动时间:

    控制测试在某个时间点启动。但这个配置会被“启动延迟”配置覆盖。

    4、结束时间:

    控制测试执行的结束时间。但这个配置会被“持续时间”配置覆盖。

    如果不想立即执行执行,可以通过调度器控制测试执行的开始时间和结束时间。

    当测试开始时,如果设置了调度器,JMeter将等待直到到了开始时间。在每个周期结束,JMeter将会检查是否到达结束时间,如果达到,停止运行;否则测试继续运行直到达到了重复限制。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-14 06:02 , Processed in 0.065335 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表