1.简介

之前分享的所有文章都是只有一个线程组,而且参数的传递也只在一个线程组中,那么如果需要在两个线程组中传递参数,我们怎么做呢?宏哥今天就给小伙伴或者童鞋们讲解一下,如何实现在线程组之间传递参数。

2.什么是jmeter之跨线程组传递参数

顾名思义就是:使用jmeter工具在两个或者两个以上的线程组之间传递参数。

3.为什么在线程组之间传递参数?

首先往往我们接到一个性能测试任务需要对某一个接口进行压测时不需要每一次请求都取登录(如果每次都登录这样就会影响测试结果),那么遇到这种情况我们就要通过登录接口获取token(session、cookie)了,然后用另一个线程组进行压测。
其次大家可以想象一个场景,假设我们在测试一个购物车程序,而加东西进购物车之前,我们需要先登录(这样的逻辑设计就是不正确的,每选择一个商品添加到购物车,就需要重新登录一下,那这样的设计谁还会用你家的APP。)。在正常的场景下,我们的登录状态可以保持一段时间,不用每次添加购物车之前都登陆一下,在这种情况下,我们测试的时候就需要把登录和添加购物车写到两个线程组里,然后问题就来了,两个线程组直接无法直接共享参数。

以上两种情况是工作中经常面临的实际问题,所以需要在线程组之间传递参数。

4.如何在线程组之间传递参数?

JMeter变量作用域局限于所属线程。这样设计是经过深思熟虑的,目的是让测试线程能够独立运转。有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量。在Jmeter中,除了基本变量之外,还有一种,是它本身的属性,property,我们可以借助属性来完成线程组间的变量传递。属性为所有 JMeter 线程所共享,因此当某个线程设置一个属性后,其他线程就可以读取更新后的值。

5.实战

闲话少说,宏哥还是快速实践一下,具体步骤如下:

1、创建测试计划,并重新命名为“ jmeter之跨线程组传递参数”,然后添加线程组,并重新命名为“登录”。如下图所示:

2、选中线程组,右键添加取样器“HTTP请求”,并重新命名为“获取token”,然后配置取样器。如下图所示:

3、选中线程组,右键添加监听器“察看结果树”,保存脚本,运行jmeter,察看结果树(测试一下是否可以成功的获取到token,宏哥这里已经获取到了,然后留着等在其他线程组备用)。如下图所示:

从第三步可以看到宏哥已经成功获取到token了,紧接着就是要将token提取出来,然后再将token设置到属性中,这样其他线程组就可以调用了。

4、将token提取出来,宏哥这里使用的是正则提取器,你可以使用其他的提取器,只要提取出来就可以。首先在结果树中选择“正则测试器”,然后输入正则表达式,提取token。如下图所示:

5、从上边可以看出来,宏哥填写的正则表达式可以成功提取到token,那么宏哥选中获取token,右键添加正则表达式提取器然后将这里测试的正则表达式复制到正则提取器中进行相关的配置。如下图所示:

6、根据上边思路,提取出来就要加入到属性中,加入属性中,宏哥这里使用后置处理器-BeanShell后置处理器,选中获取token,右键添加BeanShell后置处理器,然后进行配置,添加脚本。如下图所示:

参考脚本:

String token = bsh.args[0];
${__setProperty(newtoken,${token},)};
log.info("token:" + token);

7、将上边BeanShell后置处理器的脚本中,加入“log.info("token:" + token);” 这段代码然后在日志中查看是否获取到token的值,宏哥运行测试计划脚本后,查看日志(点击右上角黄色都有感叹号的图标),如下图所示:

8、从上边的日志中我们清楚的发现没有提取到token的值,宏哥查看正则表达式提取器发现匹配数字是-1,这里有问题,将其修改成1,运行测试计划,再次查看日志,如下图所示:

9、从上图发现,宏哥已经提取到token的值到属性中了,那么就可以传递到其他线程组中调用这个token。然后继续创建一个线程组,右键添加配置元件“HTTP Cookie管理器”,进行配置,如下图所示:

10、右键添加取样器“HTTP请求”,并重新命名为“查看角色”进行配置,如下图所示:

11、添加监听器“察看结果树”,如下图所示:

12、保存测试计划脚本,运行jmeter后,查看结果树(可以看到获取到角色列表),如下图所示:

好了,到此 jmeter之跨线程组传递参数,就已经完全实现了。

6.小结

宏哥这里就讲解了一下,跨线程传递token,像cookie、session以及其他参数都是类似的,照猫画虎即可。

Jmeter(五十二) - 从入门到精通高级篇 - jmeter之跨线程组传递参数(详解教程)的更多相关文章

  1. Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1.简介 在性能测试中,有时需要模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一 ...

  2. Jmeter(四十八) - 从入门到精通高级篇 - Jmeter监控服务器性能(详解教程)

    1.简介 JMeter是一款压力.接口等等的测试工具,Jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,用来监控服务器资源使用情况,不过需要安装一些插件.JMeter正常自 ...

  3. Jmeter(四十二) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 -番外篇(详解教程)

    1.简介 为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的.更有甚者觉得那是禁地神圣不可轻 ...

  4. Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)

    1.简介 上一篇宏哥已经介绍了如何在Linux系统中安装Jmeter,想必各位小伙伴都已经在Linux服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在Linux系统下运 ...

  5. Jmeter(四十六) - 从入门到精通高级篇 - Jmeter之网页图片爬虫-下篇(详解教程)

    1.简介 上一篇介绍了爬取文章,这一篇宏哥就简单的介绍一下,如何爬取图片然后保存到本地电脑中.网上很多漂亮的壁纸或者是美女.妹子,想自己收藏一些,挨个保存太费时间,那你可以利用爬虫然后批量下载. 2. ...

  6. Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)

    1.简介 上一篇宏哥讲解了利用jmeter的插件来监控服务器资源,这一篇讲解分享如何使用jmeter的监视器结果监控tomcat性能. 2.准备工作 文章标题中提到jmeter和tomcat,那么只需 ...

  7. Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)

    1.简介 这篇文章其实很简单,就是为下一篇文章做一个铺垫,所以宏哥给小伙伴或童鞋们提前热身一下. 2.什么是远程运行? 远程执行,就是脚本放在本地,执行却在另一台电脑上执行,当然,可以是远程多台电脑一 ...

  8. Jmeter(三十七) - 从入门到精通进阶篇 - 输出HTML格式的性能测试报告(详解教程)

    1.简介 相对于Loadrunner,Jmeter其实也是可以有测试报告产出的,虽然一般都不用(没有Loadrunner的报告那么强大是一方面),但是有小伙伴们私下问,那宏哥还是顺手写一下吧,今天我们 ...

  9. Jmeter 跨线程组传递参数 之两种方法

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

随机推荐

  1. POJ2391 Floyd+离散化+二分+DINIC

    题意:       有n个猪圈,每个猪圈里面都有一定数量的猪(可能大于当前猪圈的数量),每个猪圈都有自己的容量,猪圈与猪圈之间给出了距离,然后突然下雨了,问多久之后所有的猪都能进圈. 思路:     ...

  2. Python学习笔记-StatsModels 统计回归(3)模型数据的准备

    1.读取数据文件 回归分析问题所用的数据都是保存在数据文件中的,首先就要从数据文件读取数据. 数据文件的格式很多,最常用的是 .csv,.xls 和 .txt 文件,以及 sql 数据库文件的读取 . ...

  3. 迪杰斯特拉(Dijkstra) 最短路算法

    直接看B站视频吧: https://www.bilibili.com/video/BV1QK411V7V4/

  4. pr恢复工作区

    当工作区操作的位置很乱时 平时如果关闭的窗口,可以在窗口中查看 也可以选择新建工作区,保存成一个自己所需工作区

  5. 获取InputStream对象的方法

    获取InputStream对象的方法 getResourceAsStream(String path) 默认path路径位于Class所在Module的src目录下 . InputStream is ...

  6. Mac下配置Git 的全局忽略文件

    $ git config --global core.excludesfile ~/.gitignore_global $ vim ~/.gitignore_global #配置文件参考如下 # fo ...

  7. mysql用户创建触发器权限不足跟参数log_bin_trust_function_creators

    问题描述 有业务反馈当前用户无法创建触发器和存储过程,让用户自己测试,该用户进行对表的增删改查等其他权限没有问题,这边用root用户查证,该用户拥有对当前库的所有权限,但是为什么就是创建不了触发器呢? ...

  8. TLS是如何保障数据传输安全(中间人攻击)

    前言 前段时间和同事讨论HTTPS的工作原理,当时对这块知识原理掌握还是靠以前看了一些博客介绍,深度不够,正好我这位同事是密码学专业毕业的,结合他密码学角度对tls加解密这阐述,让我对这块原理有了更进 ...

  9. Iterable 和 Iterator

    可以被for循环输出的为iterable (可迭代对象) 可以被next()调用并不断返回下一个数据的对象为iterator迭代器(python一切皆对象) 数据流,无法知晓其终点,只能推过next不 ...

  10. [DB] Spark Core (2)

    RDD WordCount处理流程 sc.textFile("/root/temp/data.txt").flatMap(_.split(" ")).map(( ...