1.元件的做用域正则表达式
JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互做用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)须要与取样器(sampler)等元件交互。服务器
1)采样器post
采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还能够用逻辑控制器来改变采样器运行的重复次数。测试
每一种采样器都有多种参数可供设置。测试人员还能够经过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。线程
若是测试人员打算向同一个服务器发送同一类请求,能够考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。必定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。代理
若是测试人员想检查服务器响应的内容,能够为对应采样器添加断言。例如,当对Web应用作压力测试时,服务器虽然成功返回了"HTTP Response"代码,可是页面上可能会有错误,或者丢失了部分页面片断。针对这种状况,测试人员能够添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter容许在断言中使用正则表达式。blog
2)逻辑控制器图片
逻辑控制器能够帮助用户控制JMeter的测试逻辑,特别是什么时候发送请求。逻辑控制器能够改变其子测试元件的请求执行顺序。element
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 获得的返回结果为空)。
咳咳~敲黑板,看重点啦~
关于执行顺序,有三点须要注意:
* 前置处理器、后置处理器和断言等元件只能对 取样器做用,所以,若是在它们的做用域内没有任何取样器,则不会被执行。
* 若是在同一做用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。
* 一个断言在测试树中是分等级的。若是它的父元件是请求,它就被应用于那个请求。若是它的父元件是控制器,它就影响全部那个控制器下的全部请求