JMeter-LogicControllers逻辑控制器

18.2 Logic Controllers


逻辑控制器决定采样器执行的顺序。

Simple Controller(简单控制器)


简单逻辑控制器可以组织采样器和其他逻辑控制器。与其他逻辑控制器不同,此控制器除了存储设备之外,不提供任何功能。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
  • Simple Controller示例
    SimpleController测试计划示例

    结构示例

    上图展示的是一个测试计划的部分内容,它发送两个ant http请求和两个log4jhttp请求。我们将ant和log4j请求放在简单逻辑控制器中进行分组。注意,简单逻辑控制器不影响添加到线程组中的其他控制器。因此,在本例中,JMeter将按以下顺序发送请求,ant home page、ant news page、log4j homepage、log4j history page。
    完整测试计划查看SimpleTestPlan.jmx

Loop Controller(循环控制器)


如果向循环控制器添加生成或逻辑控制器,那么实际循环的次数除了受线程组指定的循环值影响外,还受到循环控制器设定的循环值的影响。例如,如果向一个循环计数为2的循环控制器添加一个http请求,并且线程组循环计数配置为3,则JMeter将总共发送2*3=6个http请求。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
Loop Count 该控制器下所有元素的循环次数,值-1表示forever,即永远执行下去。 NO
  • Loop Controller示例
    LoopController测试计划示例

    结构示例

    上图中的测试计划需要发送两个http请求,其中“主页”http请求只发送一次,“新闻页”http请求需发送五次。
    这两个http请求放在同一个线程组中,线程组的循环计数值为1,即“主页”http请求只循环一次。另外,“新闻页”http请求外层设置了一个循环控制器,其循环次数为5,用于控制“新闻页”http请求循环5次。
    JMeter将按以下顺序发送请求:主页、新闻页、新闻页、新闻页、新闻页和新闻页。
    完整测试计划查看LoopTestPlan.jmx

Once Only Controller(只执行一次控制器)


Once Only Controller表示在控制器所在的线程组只执行其一次。
如果Once Only Controller的父类元素是一个循环控制器,则其只在循环控制器的第一次迭代时执行。因此,如果将Once Only Controller控制器放置在循环5次的循环控制器下,则Once Only Controller将仅在循环控制器的第一次迭代时执行。
注意,这意味着只有一个控制器将仍然如先前预期的那样被放置在一个线程组(每个线程每次测试只运行一次),但是现在用户在只使用一次控制器时有更大的灵活性。
对于需要登录的测试,考虑将登录请求放在这个控制器中,因为每个线程只需要登录一次就可以建立会话。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
  • Once Only示例
    OnceOnlyController测试计划示例

    结构示例

    上图测试计划中的线程组共有两个线程,每个线程执行如下操作,首先向HomePage发送一个http请求,然后向BugPage发送三个http请求。尽管我们将线程组配置为迭代三次,但每个JMeter线程只向HomePage发送一个请求,因为该请求位于Once Only Controller中。
    完整测试计划查看OnceOnlyTestPlan.jmx t

Interleave Controller(交替控制器)


如果将生成控制器或逻辑控制器添加到交替控制器中,JMeter将在每次循环迭代时交替执行这两个控制器。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
ignore sub-controller blocks 该设置表示,交替控制器会像处理单个请求那样处理每一个子控制器,即一次只允许一个子控制器的一个请求通过。 NO
Interleave across threads 该设置表示,交错控制器在每个循环迭代时将交替地执行每个子控制器,例如一个测试计划具有4个线程和3个子控制器,第一次迭代时,线程1将运行控制器1,线程2运行控制器2,线程3运行控制器3,线程4运行控制器1,以此类推。 NO
  • Interleave Controller示例1


    InterleaveController测试计划示例1

    结构示例

    上图测试计划中线程组共配置了两个线程,循环计数为5,因此该线程组总共需发送10个请求。JMeter发送http请求的顺序如下表。

迭代次数 发送请求
1 News Page
1 Log Page
2 FAQ Page
2 Log Page
3 Gump Page
3 Log Page
4 News Page(再次从第一个请求开始发送)
4 Log Page
5 FAQ Page
5 Log Page

完整测试计划查看InterleaveTestPlan.jmx

  • Interleave Controller示例2
    InterleaveController测试计划示例2

    结构示例

    上图测试计划的线程组为一个线程,循环计数为8(截图没有显示)。测试计划中有一个外部交替控制器,其中又包括两个内部交替控制器。
    外部交替控制器交替地执行两个内部交替控制器;然后,每个内部交替控制器交替地执行每个http请求。因此,每个线程将按以下顺序发送请求:Home Page, (交替),Bug Page, (交替),CVS Page, (交替),FAQ Page,(交替)...。
    如果外部交替控制器下的两个交替控制器是简单控制器,则顺序为:Home Page、CVS Page, (交替),Bug Page, FAQ Page,(交替)...。
    但是,如果在外部交替控制器上选中“ignore sub-controller blocks”,则顺序为,Home Page, (交替),Bug Page, (交替),CVS Page, (交替),FAQ Page,(交替)...,即等同于内部是两个交替控制器的情况。
    完整测试计划查看InterleaveTestPlan2.jmx

Random Controller(随机控制器)


随机逻辑控制器的作用与交替控制器类似,只是它不是按顺序执行其子控制器和采样器,而是在每次执行时随机选取一个。

多个控制器之间的交互可以产生复杂的行为。随机控制器尤其如此。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
ignore sub-controller blocks 该设置表示,交替控制器会像处理单个请求那样处理每一个子控制器,即一次只允许一个子控制器的一个请求通过。 NO

Random Order Controller(随机顺序控制器)


随机顺序控制器很像一个简单的控制器,它最多执行每个子元素一次,但是执行顺序却是随机的。

Throughput Controller(吞吐量控制器)


吞吐量控制器是最常用的控制器之一,可以允许用户控制它的执行频率。有两种模式:

  • 执行百分比(Percent executions)
    使控制器执行一定比例的迭代次数。
  • 执行总次数(Total executions)
    使控制器在执行了一定次数后停止执行。

与Once Only Controller一样,当父循环控制器重新启动时,此设置将重置。

注意,此控制器的名称不准确,因为它不控制吞吐量。请参阅可用于调整吞吐量的Constant Throughput Timer

当与其他控制器结合时,吞吐量控制器可以产生非常复杂的行为,特别是以交替或随机控制器作为父控制器使用。

  • Parameters
Attribute Description Required
Name 控制器名称 NO
Execution Style 执行模式,按百分比还是次数执行 YES
Throughput 一个数字。对于百分比模式,是0-100之间的一个数字(可以是小数),表示控制器将按多少比例执行一定的次数。对于执行次数模式,该数字表示控制器将执行的总次数。 YES
Per User 该设置表示控制器执行次数是否考虑每个用户(每个线程)。如果未设置该项,则计算将是所有用户的全局计算。例如,如果使用Total模式,并且不设置Per User,那么吞吐量给定的数字将是执行的总数。如果设置Per User,那么执行的总数将是用户数乘以吞吐量的给定数。 NO
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342