Jmeter的主要元件及元件的执行顺序
一、JMeter的主要元素
1.Test Pan(测试计划)
Jmeter中的测试计划包括一个或者一组的测试用例,一个Thread Group可以认为是一个测试用例,一个测试计划中可以包括多个Thread Group,即多个测试用例。
在测试计划中可以为该测试计划下的重复的值设置静态变量,例如URL地址,www.baidu.com,可以把该值设置为变量,在使用的地方只需要将其替换为${URL},这样为后续更换为其他url提供了便利,不建议在此处设置变量,因为不方便停用,可以直接选择Config Element下的User Defined Variables,增加用户自定义变量。

Run Thread Groups consecutively:独立运行每个线程组,勾选之后,则按顺序执行测试计划中的每个线程组,否则测试计划中的线程组是交替执行的。
Run TearDown Thread Groups after shutdown of main threads:在主线程组运行完之后运行TearDown线程组。
Functional Test Mode:函数测试模式,将请求的响应保存到文件中,很影响性能,一般不勾选。
2.Thread(Users)(线程)
Thread Group:
线程组,对特定服务器执行测试的用户池,可以设置并发的用户数,加速时间(启动所有线程所需的时间),执行测试的次数,可以把线程组理解为用户组,每个线程为一个虚拟用户。
setUp Thread Group:
一种特殊类型的线程组,用来在执行普通的线程组之前执行的预处理,和普通的线程组元素完全相同,只是该线程组在每个普通线程组之前执行。
tearDown Thread Group:
一种特殊类型的线程组,用来在执行普通的线程组之后执行,和普通的线程组元素完全相同,只是该线程组在普通的线程组执行后执行。
说明:线程组中设置了循环次数和持续执行时间,则JMeter运行达到持续时间后结束;如果只是设置了循环次数,没有设置循环时间,则JMeter会一直循环运行。
3.Test Fragment(测试片段)
Test Fragment是一种特殊的线程组,在测试树中与线程组处于同一等级,Test Fragment不会执行,需要配合Including Controller和module Controller一起使用,Test Fragment的作用是模块化了,类似于程序语言的函数,可以方便重复调用。
1)使用Including Controller
新增加测试计划,然后新增加Test Fragment,在该线程组下新增加Http Request,模拟登陆百度。

然后新增加测试计划,新增加Thread Group,在该线程组下增加Including Controller,引入上一步新增加的代码片段,这样就可以很方便的引用了。

2)使用Module Controller
新增加测试计划,新增加一个Thread Group,然后在同级新增加一个Test Fragment,在Test Fragment中新增加Http Request,命名为登录百度,在Thread Group线程组中新增加Module Controller,在Module To Run中选择Test Fragment,选中会高亮显示,然后运行测试。


4.Sampler(采样器)
采样器完成Jmeter的实际工作,发送请求,接收响应,记录结果,可以在Listener(监听器)中查看结果,这里以Http Request为例介绍在实际使用JMeter进行测试的过程中的方法。
添加HTTP Request采样器,用来发送实际的请求。

Name:取样器的名称。
Protocol:发送请求使用的协议,默认使用http。
Server Name or IP:服务器的域名或者IP地址,如:www.baidu.com或者192.168.11.2这样,这个是必须维护的,除非在HTTP Request Defaults进行设置或者在Path中设置了完整的URL。
Post Number:访问请求使用的端口号。
Method:请求使用的方法,POST,PUT,GET,PATCH等。
Path:资源的路径,如果资源需要查询字符串参数,可以在Parameters中添加,如果资源路径是以http开头,则JMeter会当做完整的URL地址。
Content encoding:发送的内容的编码方式。
Redirect Automatically:自动重定向,只能针对GET和HEAD方法,在View Results Tree中只能看到重定向后的响应,不能看到重定向之前的响应,因此不能用来进行关联。
Follow Redirects:跟随重定向,跟随重定向可以自动重定向到目标页面,在View Results Tree中即可以看到重定向前的相应,也可以看到重定向后的响应,可以用来进行关联。
Use KeepAlive:JMeter和目标服务器之间使用KeepAlive进行通信。
Use multipart/form-data:上传文件时使用,用以模拟往服务器发送二进制数据。
Browser-compatible headers:浏览器兼容模式,如果勾选了Use multipart/form-data时建议勾选此项。
Parameters:当使用get或者post方法时,url带的参数,如xxx=xx&xxx=xxx。
Body Data:传递请求实体参数,如果需要传递json格式的参数,需要在HTTP Header Manager中添加Content-Type=application/json。
Files Upload:当勾选Use multipart/form-data进行文件上传时,可以在此处添加需要上传的文件。
Retrieve All Embedded Resources:获取所有内嵌资源,在实际的性能测试过程中,需要勾选此项,因为这样,更能模拟实际的场景。
Parallel downloads Number:设置并发获取数量。
URLs must match:使用正则表达式设置需要获取的URL。
Timeouts:用来指定超时时间,Connect,连接超时时间,Response:响应超时时间。
Implementation:使我们可以更高效的访问HTTP协议的资源,推荐使用HttpClient4,不选默认为HttpClient4。
5.Logic Controller(逻辑控制器)
逻辑控制器用来控制取样器的执行顺序,仅对其子节点取样器起作用,这里以If Controller控制器为例。
6.Listener(监听器)
监听器主要用来展示测试结果,常用的有查看结果树,聚合报告等。
7.Config Element(配置元件)
配置元件可以设置默认值和变量以供采样器使用。
说明:配置元件中以Manager结尾的元件,同一个作用域内只能使用一个,因为多个的话,JMeter会产生混乱,而以DEFAULT结尾的元件,同一个作用域内可以使用多个,JMeter会对多个元件进行叠加。
8.Time(定时器)
定时器在每个采样器之前执行,可以用来模拟实际中用户每个操作之前的间隔时间。
9.Assertion(断言)
断言用来对其作用域的采样器进行检查,当采样器执行完之后进行检查,为了实现每个断言只对一个采样器生效,可以把断言设置为采样器的子级。
10.Pre Processor(前置处理器)
前置处理器用来处理请求前的一些准备工作,如参数设置,环境变量设置等。
11.Post Processor(后置处理器)
后置处理器用来处理响应返回的数据,一般用来提取响应返回的特定数据,如果一个后置处理器为一个采样器的子节点,则该处理器只对该采样器作用,实际中使用最多的是正则表达式处理器。
二、JMeter的执行顺序
1.Config Elements
2.Pre Processor
3.Time
4.Sampler
5.Post Processor
6.Assertion
7.Listener
三、JMeter元件的作用域
Sampler不与其他元件交互,因此不存在作用域的问题,Controller只对其子节点的采样器和逻辑控制器其作用;除了Sampler和Controller,其他6类如果在Sampler子节点,则只对该Sampler和该Sampler子节点起作用;如果其他6类的父节点不是采样器,则他们的作用域是父节点下所有子节点包括子子节点。

如上:Simple Controller对Two,Three和Four起作用,Timer #1对Two,Three和Four起作用,Assertion #1只对Three起作用,Timer #2对所有的Sampler起作用。
执行顺序为Timer #2--One--Timer #2--Timer #1--Two--Timer #2--Timer #1--Three--Timer #2--Timer #1--Four--Timer #2--Five--Assertion #1。
说明:User Defined Variables的作用域为整个测试计划,所以无论它定义在何处,结果都是一样的。
Jmeter的主要元件及元件的执行顺序的更多相关文章
- 转 6 jmeter元件的作用域与执行顺序
6 jmeter元件的作用域与执行顺序 元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sa ...
- JMeter元件的作用域和执行顺序
元件的作用域 配置元件:会影响其作用范围内的所有元件,作用范围是最大的,只要创建就对所有元件起作用. 前置处理器:在其作用范围内的每一个Sample元件之前执行: 定时器:对其作用范围内的每一个Sam ...
- 6 jmeter元件的作用域与执行顺序
元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sampler元件之前执行.定时器(timers ...
- JMeter专题系列(三)元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- jmeter(六)元件的作用域与执行顺序
jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同. jmeter的test pla ...
- JMeter基础之--元件的作用域与执行顺序
前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...
- JMeter学习(三)元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- 【jmeter】元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- <转>jmeter(六)元件的作用域与执行顺序
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- JMeter学习(三)元件的作用域与执行顺序(转载)
转载自 http://www.cnblogs.com/yangxia-test 1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它 ...
随机推荐
- python学习(十六) 测试
测试驱动开发. 16.1 先测试,后编码 16.1.1 精确的需求说明 16.1.2 为改变而计划 16.1.3 测试的4个步骤 16.2 测试工具 16.2.1 doctest 16.2.2 uni ...
- jQuery笔记——事件
常用的事件有:click.dblclick. mousedown.mouseup.mousemove.mouseover.mouseout.change.select.submit.keydown. ...
- 高并发场景下System.currentTimeMillis()的性能问题的优化 以及SnowFlakeIdWorker高性能ID生成器
package xxx; import java.sql.Timestamp; import java.util.concurrent.*; import java.util.concurrent.a ...
- maven 安装 过程
maven 安装 过程 1 下载: apache-maven-3.0.3-bin.zip 压缩包 2 将压缩包解压到需要安装的目录文件中. 比如解压到: Z:\zr_anzhungwenjian\ap ...
- eclipse+minGW 调试ffmpeg错误:No symbol table is loaded. Use the "file" command.
转载地址:http://www.blogjava.net/fancydeepin/archive/2012/11/19/391520.html 数据结构第二篇: eclipse SDK 安装和配置 ...
- 实例解说Linux命令行uniq
Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行.在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的.该命令加工后的结果 ...
- java之飞机大战的记分标准
import java.awt.Image; import java.util.ArrayList; import java.util.Timer; import javax.swing.ImageI ...
- Game Develop Books
[Working On] [Pending] 3.<实时计算机图形学> 4.<游戏编程精粹1> 5.<游戏编程精粹2> 6.<3D游戏引擎设计:实时计算机图形 ...
- Leetcode:Two Sum分析和实现
问题表示提供一个整数数组nums,以及一个目标target,要找到两个下标i与j,使得nums[i] + nums[j] = target. 最简单的思路是两次循环: for a in nums fo ...
- git获取网上的项目
这里是从coding.net上下载项目至本地phpstorm并配置好相关环境. 这里url地址正是项目路径.获取的地方是: 下面那个url直接复制粘贴. 自己选择一个目录,然后clone. 下面便是前 ...