Jmeter使用笔记之组件的作用域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter使用笔记之组件的作用域相关的知识,希望对你有一定的参考价值。
以前一直使用loadrunner,最近入职新公司后需要使用jmeter,这里把使用过程中出现的一些问题进行总结,同时会和自己使用loadrunner的情况相比较,以后也会不断总结,GO!
一、组件的作用域
元件收集其作用范围的每一个sampler元件的信息并呈现,在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是:
- 采样器(sampler):元件不和其它元件相互作用,因此不存在作用域的问题。
- 逻辑控制器(Logic Controller):元件只对其子节点中的取样器 和 逻辑控制器作用。
- 除采样器 和 逻辑控制器 元件外,其他6类元件,如果是某个sampler的子节点,则该元件只对其父子节点起作用。
- 除采样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。
以上是在网上经常会出现的组件的作用域的范畴,但是这里我个人在用的时候却遇到了一点不一样的地方,见如下的分解。
二、组件的作用域之用户定义变量
最近做性能测试的时候用到了多个配置原件,这里说些细节,逻辑上还是和一中的描述匹配的,但是没有说在多个线程组,在子元素中又是如何工作的呢?有如下的场景。
1、有2个线程租,在其中一个线程租定义了用户定义变量,在另一个线程租会不会生效?
2、如果在子元素中定义了用户定义变量,那么在父元素中能否使用呢?
3、除了用户定义变量外其他的配置远见又是如何的呢?
因为在测试中脚本总是出错,不按照自己的理解来执行,单独测试后发现有如下的规律
1、用户定义的变量是跨越多个线程组的,也就是说无论定义了多少变量的容器,只要变量的名字是一样的,也就是说作用域是测试计划。(所以如果定义了多个容器而变量的名字一样,那么肯定会出现预想不到的结果)
2、因为作用域都是整个测试计划,所以无论定义到哪里,效果都是一样的
3、其他的配置原件都是和一中描述的一致的,比如cookie如果定义到一个线程组中那么作用域就是当前的线程组,或许还有特殊的是暂时没有发现的。
因此个人习惯上把用户定义变量都定义到setup中,其他地方都不存在变量。
PS:以下是测试的过程,在setup中定义用户变量,在另一个线程组中使用
其他的没有全部测试,测试了cookie和CSV都是在当前的线程组。
以上是关于Jmeter使用笔记之组件的作用域的主要内容,如果未能解决你的问题,请参考以下文章