jmeter元件执行顺序及简介
最近在学习Jmeter,在进行实操之前,先查看了官方文档。因为官方文档是英文的,为了方便以后查看,自己翻译了一部分,中间个别地方根据自己的理解简单地翻译了部分。如果翻译等有问题,欢迎指正。
一、执行顺序
1、控制器和取样器是有序的,当执行测试计划时,这些请求将按顺序执行。如下图:

2、一些控制器会影响它的子原件的顺序,还有一些元件是分等级的。比如断言,如果它的父元件是一个请求,那么它将作用于这个请求;如果它的父元件是一个控制器,那么它将作用于这个控制器下的全部的请求。如下图:

Assertion#1仅被应用于请求one,Assertion#2作用于请求two 和three。
另一个复杂点的列子:

这个例子中,(定时器)Timer#1将应用于请求Two\Three\Four,Assertion#1将应用于请求Three。Timer#2将应用于所有的请求。
一般情况下,元件执行顺序如下:

0.Configuration elements
1.Pre-Processors
2.Timers
3.Sampler
4.Post-Processors (unless SampleResult is null)
5.Assertions (unless SampleResult is null)
6.Listeners (unless SampleResult is null)

注意:Timers,Assertions,Pre- and Post-Processors 只有当一个sampler申请时才会执行。
举例说明如下图:

在这个例子中,执行的顺序如下:

二、测试计划中的元件
1、线程组
线程组元件是所有测试计划的开始点。所有的控制器和samplers必须在线程组下,其他元件比如监听器,也许会被直接添加在测试计划下,这样这个监听器将作用于所有的线程组。
线程组管理允许你(下面所列为线程组--线程属性中可以配置的信息):
》设置线程数
》设置ramp-up period
》设置循环次数
每个线程都是作为一个整体执行测试计划,并且完全独立于其他线程。多线程用来模拟并发连接到你的服务应用中(Multiple threads are used to simulate concurrent connections to your server application.)
The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen.如果有10个线程,ramp-up period是100秒,那么Jmeter将在100秒内启动并执行这10个线程。每个线程将在前一个线程开始后10(100/10)秒启动。如果是30个线程,ramp-up period是120秒,那么每个连续(successive)的线程将延长4秒。
Ramp-up needs to be long enough to avoid too large a work-load at the start of a test, and short enough that the last threads start running before the first ones finish (unless one wants that to happen).
默认情况下,都是设置为刚好线程组循环一次。
线程组也提供了调度器。可以在线程组--线程属性中勾选框决定是否启用调度器,然后在线程组-调度器配置框中,可以设置持续时间、启动延迟、启动时间和结束时间。持续时间和启动延迟是用来控制每个线程组的持续时间,和在多少秒后每个线程组开始时间。当测试执行时,Jmeter都会等待startup delay中设置的秒数,再去启动此线程组下的线程,并且执行时间为持续时间配置的秒数。注意,持续时间和启动延迟优先于启动时间和结束时间。
或者你可以使用启动时间和结束时间。当测试开始时,如果必要的话Jmeter会等待start-time到达。每一次循环结束后,Jmeter会检查end-time是否到达了,如果是,那么执行将停止。如果不是,将会继续执行下去,知道循环结束。
2、控制器
Jmeter有两种类型的控制器:Samplers和logical Controllers.
Samplers告诉Jmeter发送请求到服务器。比如,如果你想发送一个HTTP请求,你需要在Sampler中添加一个HTTP请求。你也可以通过添加一个或多个配置到Sampler中来自定义一个请求。
Logical Controllers:你可以通过自定义逻辑来使Jmeter决定什么时候发送请求。For example, you can add an Interleave Logic Controller to alternate between two HTTP Request Samplers.
2.1 Samplers
它告诉Jmeter发送请求到服务器,并且等待回应。 Controllers can be used to modify the number of repetitions of a sampler.
如果你发送到服务器的多个请求都有一样的类型(比如HTTP请求),可以考虑使用一个默认值元件(比如HTTP请求默认值)。
记得添加监听器来查看或保存请求的结果到电脑中。
2.2 Logic Controllers
逻辑控制器可以通过他们的子元件来改变请求的顺序,或重复请求等等。
如下列:

(1)因为Login Request在Once Only Controller下,所以登录请求只执行一次,下次迭代将跳过登录请求。
(2)接下来会执行Load Search Page,因为这个没有加控制器,所以正常执行。
(3)Load Search Page执行后,将需要执行两个searches。但是这两个searches前加了Interleave Controller,所以每执行完一个search,将重新执行Load Search Page???
(4)Interleave Controller下的HTTP默认值请求,当search A 和B都是一样的HTTP请求,只是个别信息有异,在这里配置HTTP默认值请求,将节省配置步骤。
2.3 Test Fragments
Test Fragments是一种特别的控制器,跟线程组同一个级别。它区别于一个当被任何一个Module控制器或Include 控制器引用时才开始执行的线程组??
它在测试计划中纯粹是为了代码重用。(这个还是不明白做什么用的、、、)
3、监听器
监听器可以添加到测试中的任何一个地方。它们将从同等级或其下级元件中收集数据。
4、定时器
如果你不增加延时,Jmeter在短时间内发送多个请求时,可能会压垮服务器。
5、断言
断言可以添加到任何一个Sampler中,它将作用于sampler范围内。如果希望断言只作用于单个sampler,可以在这个sampler中添加子元件断言。
要查看断言的结果,可以添加一个断言监听器到线程组中。结果与期望值不一样的断言,也可以在tree view和table listeners中查看。
6、配置元件
配置元件作用于同一级别或其子级别中。如下图:

(1)HTTP Cookie Manager 在Simple Controller下,这个元件将作用于Web Page1 和Web Page2,而对Web Page3没有影响。
同时,一个在树内部的配置元件会比父支拥有更高的优先级。
(2)Web Defaults1和Web Defaults2 :Web Defaults1将影响Web Page2,而Web Defaults2将影响除Web Page2以外的HTTP请求。
注意点:User Defined Variables这个配置元件与上面所说的规则不同,它将在测试开始时执行,无论你放在哪个位置。
jmeter元件执行顺序及简介的更多相关文章
- Jmeter配置元件执行顺序
一.Jmeter组件 Sampler(采样器):真正干活的,比如http 定时器:默认为毫秒. 前置处理器和后置处理器:必须在有采样器才有效,在采样器的前后执行.作关联,拿响应中的数据使用,用得比较多 ...
- Jmeter组件执行顺序与作用域
一.Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用.配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同 ...
- Jmeter --- 组件执行顺序与作用域
一.Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用.配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同 ...
- JMeter的执行顺序
JMeter执行顺序如下:1.配置元件2.前置处理器3.定时器4.采样器5.后置处理器(除非服务器响应为空)6.断言(除非服务器响应为空)7.监听器(除非服务器响应为空) 只有当作用域内存在采样器时, ...
- Jmeter元件运行顺序
JMeter执行顺序逻辑如下: 1.配置元件(如果存在) 2.前置处理器(如果存在) 3.定时器(如果存在) 4.取样器(如果存在) 5.后置处理器(如果存在且取样器的结果不为空) 6.断言(如果存在 ...
- jmeter(2)——元件简介、作用域及执行顺序
上一篇主要介绍了一下 jmeter还有安装配置,这一篇来说一下它的目录组成和元件 1.目录组成 1>bin目录是可执行文件,双击jmeter.bat启动工具,也可以编辑这个批处理文件,设置jvm ...
- JMeter专题系列(三)元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- JMeter基础之--元件的作用域与执行顺序
前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...
- JMeter学习(三)元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
随机推荐
- BZOJ2463[中山市选2009]谁能赢呢?——博弈论
题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...
- bzoj 3631 松鼠的新家 (树链剖分)
链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3631 思路: 直接用树链剖分求每一次运动,因为这道题只需要区间增添,单点求值,没必要用线段 ...
- linux 定时任务到秒级
linux crontab 只有到分钟级别的 有两种方法 方法1.写个sh脚本,循环(下例为每秒访问一次百度) #! /bin/bash PATH=/bin:/sbin:/usr/bin:/usr/l ...
- MS-DOS 6.22 +Vim+masm 汇编环境
安装vim 个人习惯用 vim 编辑,因此稍微折腾了一下.不用这么麻烦直接用 edit 编辑也是可以的. 原来安装的 MS-DOS 7.10 虚拟机安装好vim后无法运行,所以改用了 MS-DOS 6 ...
- linux中shell脚本引用另一shell脚本
调用有三种方法: 1.fork:不同的shell,调用后返回父shell,子shell从父shell中继承变量,但子shell的变量不会带回父shell,直接用path/to/file.sh调用: 2 ...
- 前端之Android入门(3):MVC模式(上)
很多Android的入门书籍,在前面介绍完布局后就会逐个介绍组件,然后开始编写组件使用的例子.每每到此时小伙伴们都可能会有些疑问:是否应该先啃完一本<Java编程思想>学点 Java 知识 ...
- [NOIP提高组2011day1t2]选择客栈
我看到有人用线段树来写而且想法和我的差不多,但是代码有一点复杂,所以我就贴一下我的做法. 思路 首先一定知道纯暴力50分差不多了,所以看到k非常的小,那么就从k入手. 不知道有没有人和我一样是先枚举颜 ...
- 【bfs】仙岛求药
[题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...
- 解决 pip attributeerror 'nonetype' object has no attribute 'bytes'
for Windows : python -m pip install -U pip for Linux : pip install -U pip
- CodeForces - 589D(暴力+模拟)
题目链接:http://codeforces.com/problemset/problem/589/D 题目大意:给出n个人行走的开始时刻,开始时间和结束时间,求每个人分别能跟多少人相遇打招呼(每两人 ...