JMeter学习之元件的作用域与执行顺序
1.元件的作用域
JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要与取样器(sampler)等元件交互。
1)采样器
采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
每一种采样器都有多种参数可供设置。测试人员还可以通过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。
如果测试人员打算向同一个服务器发送同一类请求,可以考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。一定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。
如果测试人员想检查服务器响应的内容,可以为对应采样器添加断言。例如,当对Web应用做压力测试时,服务器虽然成功返回了"HTTP Response"代码,但是页面上可能会有错误,或者丢失了部分页面片段。针对这种情况,测试人员可以添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter允许在断言中使用正则表达式。
2)逻辑控制器
逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。
3)监听器
监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还能以HTML和XML格式展示系统响应的基础部分。其他监听器通过总结或者聚合方式展示信息。
另外,监听器可以将测试数据导入到文件之中,以供后续分析。所有监听器都会提供一个输入域,以便于用户指定存储测试数据的文件。监听器还会提供一个 配置按钮,用来配置存储测试数据的哪些字段,以及选用的存储格式(CSV或者XML)。读者朋友需要注意的是,所有监听器都保存同样的数据,唯一的区别是 它们如何展示数据。
监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。
4)定时器
默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
5)断言
用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。
需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项。
如果要查看断言结果,可以为线程组添加"断言结果"监听器。失败的断言,也会在"查看结果树"和"用表格查看结果"两种监听器中显示。另外,在"Summary Report"和"聚合报告"中还会以错误百分率的形式统计。
6)配置元件
配置元件与采样器紧密关联。虽然配置元件并不发送请求(除了HTTP代理服务器例外),但它可以添加或者修改请求。
配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效
7)前置处理器
前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。
8)后置处理器
后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。
2.元件的执行顺序
了解了元件有作用域之后,来看看元件的执行顺序,元件执行顺序的规则很简单,在同一作用域名范围内,测试计划中的元件按照如下顺序执行。
(1)配置元件(config elements )
(2)前置处理程序(Per-processors)
(3)定时器(timers )
(4)取样器(Sampler)
(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)。
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)。
咳咳~敲黑板,看重点啦~
关于执行顺序,有三点需要注意:
* 前置处理器、后置处理器和断言等元件只能对 取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
* 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。
* 一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求
JMeter学习之元件的作用域与执行顺序的更多相关文章
- JMeter基础之--元件的作用域与执行顺序
前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...
- 转 JMeter基础之--元件的作用域与执行顺序
前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...
- Jmeter学习笔记03-元件作用域及执行顺序
Jmeter可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的层级关系,随着元件所在域的不同,在执行时候,会有不同效果 层级关系和元件类型决定了在测试计划中各元件的执行顺序. 1)元件的作用域: jm ...
- 转 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学习(三)元件的作用域与执行顺序(转载)
转载自 http://www.cnblogs.com/yangxia-test 1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它 ...
- Jmeter学习笔记(十)——元件的作用域和执行顺序
jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同. jmeter的test pla ...
随机推荐
- Python豆瓣源镜像
pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- C++:链表(有头链表)
介绍 把链表分为无头链表和有头链表. 无头链表:所有的节点都包含了有效数据,上一篇文章中演示代码使用的就是无头链表. 有头链表:用一个固定的头节点来指代整个链表,所有的对象都挂在这个头节点下面,而头节 ...
- wordpress 后台添加 快速编辑 栏目
前两篇其实是同一篇,都是讲在后台添加菜单类型的http://www.ashuwp.com/courses/highgrade/664.htmlhttps://shibashake.com/wordpr ...
- python面向对象基础-01
面向对象(OOP)基本概念 前言 话说三国时期曹军于官渡大败袁绍,酒席之间,曹操诗兴大发,吟道:喝酒唱歌,人生真爽! 众将直呼:"丞相好诗",于是命印刷工匠刻板印刷以流传天下; 待 ...
- WUST 设计模式 实验九 观察者模式的应用
实验九 观察者模式的应用 一.实验目的 掌握外观模式(Observer)的特点: 分析具体问题,使用外观模式进行设计. 二.实验内容和要求 网上商店中如果商品(product)在名称(name). ...
- 硬件实现IIC协议读取EEPROM
我TMD也是服了,反正我板子搞了半天也不成功我也不知道为什么,野火STM32-MINI,一直卡EV5,不管了 先代码沾上 工程目录(板子为野火STM32 MINI) 串口相关代码: bsp_usart ...
- go slice切片注意跟数组的区别
一个 slice 会指向一个序列的值,并且包含了长度信息. []T 是一个元素类型为 T 的 slice. [2]string 这样定义久是字符数组 []string 这样定义就是切片 表面上看切片就 ...
- (转)js-分享功能(qq,微信,微博)
//1 分享QQ好友 function qq(title,url,pic) { var p = { url: 'http://test.qicheyit ...
- spring整合quartz框架
spring整合quartz: 网上也有很多教程,好多都是基于配置方式,我们使用当然怎么简单就怎么用,所以这里介绍基于注解方式整合quartz.前提:你需要有一个能运行的web项目. 1.引依赖: & ...
- Java Web 深入分析(9) Session 和 Cookie
前言: session 和cookie都是为了保持服务器和客户端之间交互状态.如果一天的PV有几亿,而一个cookie占200个字节但是也会占用很多带宽?所以大访问量就引用session,但是几百台服 ...