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类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它 ...
随机推荐
- MFC学习(七) 单文档程序
1 MFC单文档程序的主要类 (1)文档类(Document) 即应用程序处理的数据对象,文档一般从 MFC 中 CDocument 中派生.CDocument 类用于相应数据文件的读取以及存储 Cv ...
- div+css 左右两列自适应高度 ,以及父级div也跟着自适应子级的高度(兼容各大浏览器)
<style type="text/css" media="screen"> <!-- #main {width:500px;_height: ...
- C#带百分比的进度条
功能需求: 如果程序中会执行一个耗时的计算过程,我想在用户点击按钮后,弹出一个进度条窗口,显示正在执行的进度(最好能带有百分比),执行完成后,进度条窗口关闭,回到主程序窗口. 在关闭子窗口之前父窗体不 ...
- 微信小程序中在页面中实现下拉刷新显示提醒语后在消失
最近在做小程序的时候遇见一个问题,就是页面要下拉刷新给客户一个提醒语,查看了小程序的官方文档 这里有个注意点:如果你是一页进行下拉刷新就在那个文件夹的json里面加上"enablePullD ...
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类
- collections、time和datetime模块
主要内容: 一.collections模块 二.time模块 三.datetime模块 1️⃣ collection模块 1.什么是collections模块.干什么用? collections模块 ...
- duck typing
在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决 ...
- java基础之多线程五:实现Runnable的原理
实现Runnable接口的原理. 背景: 多线程的第一种实现方式是::继承Thread类, 因为我们自定义的类(MyThread)是Thread类的子类, 所以MyThread类的对象调用start( ...
- solr4.3+tomcat入门部署
solr4.3的入门配置 目前阿帕奇官方仅推荐2个比较稳定的版本一个是4.3的版本,一个3.6的版本 3.6的版本没有用过,所以在此无涉及,下面就来说说solr4.3的入门配置 s ...
- 2014蓝桥杯B组初赛试题《六角填数》
题目描述: 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交 ...