一:元件的作用域
在JMeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是:
取样器(sampler)元件不和其它元件相互作用,因此不存在作用域的问题。
逻辑控制器(Logic Controller)元件只对其子节点中的取样器 和 逻辑控制器作用。
除取样器和逻辑控制器元件外,其他6类元件,如果是某个sampler的子节点,则该元件会对其父子节点起作用。
除取样器和逻辑控制器元件外,其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。
示例:
根据作用域原则,这些元件的作用域分别为:
HTTP请求 、FTP请求 、TCP取样器、 JDBC Request 元件没有作用域名概念。
循环控制器 的作用域为 FTP请求 、TCP取样器和 随机控制器。
固定定时器 作用于 HTTP请求 、 Uniform Random Timer 作用于所有取样器。
响应断言 作用于JDBC Request 、 XML断言作用于FTP请求 、TCP取样和JDBC Request。
图形结果 作用于FTP请求 、TCP取样和JDBC Request 、聚合报告作用于所有取样器。
二:执行顺序
(1)配置元件(config elements )
常用:CSV Data Set config,HTTP信息头,HTTP Cookies管理等
(2)前置处理程序(Per-processors)
常用:用户参数
(3)定时器(timers )
常用:固定定时器,高斯随机定时器
(4)取样器(Sampler)
(5)后置处理程序(Post-processors)(除非Sampler 得到的返回结果为空)
常用:正则表达式提取器
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)
常用:响应断言
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)
常用:查看结果树,聚合报告
关于执行顺序,有两点需要注意:
前置处理器、后置处理器和断言等元件只能对 取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。