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. hdu1353 小暴力

    题意:       题意是给你一个数,然后你有0.25,0.1,0.05,0.01的四种面额若干,让你求出最小的钱币纸张. 思路:       对于这种题目要自己观察两样东西,一个是四种面额之间的关系 ...

  2. Python中的optparse模块的使用

    optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 实例化一个 OptionParser 对象(可以带参,也可以不带参数),带参的话会把参数变量的内容作为帮助信息输 ...

  3. 深入浅出带你玩转sqlilabs(二)

    MYSQL高权限注入 mysql跨库注入 详情请看上一篇:深入浅出带你玩转sqlilabs(一) mysql文件操作注入-sqlilabs less7 可能用到的函数: into outfile()函 ...

  4. 将HTML字符串编译为虚拟DOM对象的基础实现

    本文所有代码均保存在HouyunCheng / mini-2vdom 虚拟DOM只是实现MVVM的一种方案,或者说是视图更新的一种策略,是实现最小化更新的diff算法的操作对象. 创建扫描器 所有编译 ...

  5. opencv——感兴趣区域(ROI)的分析和选取[详细总结]

    引言 在利用OpenCV对图像进行处理时,通常会遇到一个情况,就是只需要对部分感兴趣区域进行处理.因此,如何选取感兴趣区域呢?(其实就是"抠图"). 在学习opencv的掩码运算后 ...

  6. unbuntu下清理磁盘空间

    把很多大文件删除,并清空回收站后,发现可用存储空间并没增大,如图: 用find /home -size +500k 过滤出大于500k bytes的文件,发现原来删除的yuv文件都被置于.cache目 ...

  7. ALPHA任务拆解

    项目 内容 这个作业属于哪个课程 BUAA2020软件工程 这个作业的要求在哪里 作业要求 我们在这个课程的目标是 学会团队合作,共同开发一个完整的项目 这个作业在哪个具体方面帮助我们实现目标 团队任 ...

  8. Spring Cloud Gateway 之获取请求体(Request Body)的几种方式

    Spring Cloud Gateway 获取请求体 一.直接在全局拦截器中获取,伪代码如下 private String resolveBodyFromRequest(ServerHttpReque ...

  9. CF1487 Cat Cycle

    一个规律题目要多做多积累 , 脑子不太灵活 CF1487 Cat Cycle 题目大意: 两只猫A,B, A猫从n -> n-1 -> n-2 ... -> 1 -> 2 .. ...

  10. 使用CSS样式的三种方法

    一.内联样式 内联样式通过style属性来设置,属性值可以任意的CSS样式. 1 <!DOCTYPE html> 2 <html lang="en"> 3 ...