JMeter基础 |
您所在的位置:网站首页 › jmeter运行http请求没反应 › JMeter基础 |
JMeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是说,逻辑控制器可以控制采样器(Samplers)的执行顺序。 由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有采样器,都会当做一个整体,执行时也会一起被执行。 JMeter提供了多种逻辑控制器,它们各个功能都不相同,大概可以分为两种使用类型: 控制测试计划执行过程中,节点的逻辑执行顺序,如:ForEach Controller(ForEach控制器),Loop Controller(循环控制器)、If Controller(如果if控制器)等;对测试计划中的脚本进行分组,方便JMeter统计执行结果,以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等。 2、ForEach控制器介绍ForEach控制器一般和用户自定义变量一起使用,从用户自定义变量中读取一系列相关的变量。 ForEach控制器遍历读取不同的变量值,来控制其下的采样器或控制器执行一次或多次。 说明: 从上文中看到了一组数据,就说明这样的数据,通常为一个数组。可以使用ForEach控制器遍历循环,说明这组数据有一定的规范和顺序标识。看到用户自定义变量,就说明也可以用到参数化,从数据文件中读取数据。同理也可以从之前的请求接口中提取到需要的数据,进行遍历循环。添加ForEach控制器组件操作:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> ForEach控制器。 界面如下图所示: ForEach控制器组件界面说明: 名称:ForEach控制器组件的自定义名称,见名知意最好。注释:即添加一些备注信息,对该ForEach控制器组件的简短说明,以便后期回顾时查看。输入变量前缀:输入需要遍历的这一组数据的前缀,例如:appid_1、appid_2,则appid就是前缀。提示:包括用户自定义变量,或者是参数化文件中的数据都要这样命名才能遍历。开始循环字段(不包含):循环的起始位置,如填0,实际是从第一个开始。默认为空也可。(亲测可以)结束循环字段(含):循环结束的位置,如填4,实际第4个不会被使用,只会到第3个。默认为空也可以,程序会循环执行到最后一个变量,再停止。(亲测可以)Add "" before number ?: 是否在上面输入的变量后增长下划线“”。例如不勾选此项,变量为appid1, appid2…以此类推。勾选此项后,变量名变为appid_1, appid_2…以此类推。默认为勾选,默认的最好不要动,按照上面的变量名整理数据就好。在日常工作中,看准备数据的情况,来决定是否取消勾选。 3、ForEach控制器的使用我们以一个学院系统为例,完成以下步骤: 先查询出所有学院的列表。把列表中的学院ID都提取出来,也就是得到我们需要一组数据。然后使用ForEach控制器,循环遍历这些数据。从而根据每个学院ID,单独查看学院的信息。(1)测试计划内包含的元件 添加元件操作步骤: 创建测试计划。创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。在线程组中,添加取样器”HTTP请求“组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求。在取样器中,添加后置处理器“JSON提取器”组件:选中“取样器”右键 —> 添加 —> 后置处理器 —> JSON提取器。在线程组中,添加逻辑控制器“ForEach控制器”组件:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> ForEach控制器。在逻辑控制器中,添加取样器“HTTP请求”组件:选中“逻辑控制器”右键 —> 添加 —> 取样器 —> HTTP请求。在线程组中,添加监听器“察看结果树”组件:选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。最终测试计划中的元件如下: 点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。 (2)获取学院列表请求内容 标准的Get请求,填写请求的基本要素即可。 如下图所示: 返回的数据为JSON格式的数据,如下图: (3)JSON提取器内容 JSON提取器需要做的就是把每个学院的ID提取出来,存放到线程变量中,然后提供给后边的请求使用。 编辑内容如下: 我们把变量的名字定义为depid,这样提取出来的变量名就会变为depid_1,depid_2,以此类推。 然后使用 JSON PATH 表达式来,提取我们需要的数据。 最后填写-1,表示保存所有提取到的值,0表示随机保存一个提取到的值。 如下图所示: 当然我们也可以使用正则表达式提取器组件来提取我们需要的数据,结果是一样的。 如下图所示: 最后我们可以使用Debug Sampler组件,来查看我们提取的值,是否保存在线程变量中了。 如下图所示: (4)ForEach控制器内容 ForEach控制器中所编写的内容: 输入变量前缀:就是我们上图中,存在线程变量中数据名称的统一前缀,为depid。在哪个变量开始遍历循环:0表示从第一个变量开始,因为不包含开头,也就是从depid_1变量开始。也可以默认不填写(亲测可以,但最好还是写上)。在哪个变量停止遍历循环:一共有6个变量,因为包含结尾,所以填写6。也可以默认不填写(亲测可以,但最好还是写上)。输出变量名称:也就是在其他的请求中,可引用这个变量的名字,我就定义为dep_id。如下图所示: (5)查看学院请求内容 也是一个标准的Get请求,只需要填写请求的基本信息即可。 然后我们再需要引入数据的地方,进行参数化变量的引用。 因为该请求在ForEach控制器的控制下,所以ForEach控制器每次遍历循环得到的学院ID,都传送到请求里的dep_id变量中,这样就能查看对应的学院信息了。 如下图所示: (6)查看结果 运行脚本,查看结果,如下图所示: 从上图中我们可以看到,通过每个学院的ID,单独查看了自己学院的信息。 这样我们就完成了,介绍ForEach控制器是如何使用的。 提示:关于其他的控制器,我们以后用到,在详解的进行说明。 看完这篇内容后,相信以下两件事,也会对你的个人提升有所帮助: 1、 点赞,让更多人能看到这篇文章,同时你的认可也会鼓励我创作更多优质内容。 2、 让自己变得更强:想一想,如果你想在测试这个行业一直做下去,你的经验和测试技术是远远不够的,你需要进阶,你需要丰富你的技术栈!还等什么! 最后:【绵薄之力】这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。 关注我的微信公众号:【伤心的辣条】免费获取~ 我的学习交流群:902061117 群里有技术大牛一起交流分享~ 如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦! 好文推荐:35岁之后软件测试工程师靠什么养家?我能继续做测试! App公共测试用例梳理 Python简单?先来40道基础面试题测试下 阿里二黑叹息:越来越多的年轻人从职场撤退了? 从一名开发人员转做测试的一些感悟 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |