浅谈处理器插件之jp@gc - Inter-Thread Communication PreProcessor/PreProcessor

浅谈处理器插件之jp@gc - Inter-Thread Communication PreProcessor/PreProcessor

jp@gc - Inter-Thread Communication插件是一个特别有用的工具,它允许用户在不同的线程组之间传递数据,从而实现复杂的测试场景模拟。以下是关于此插件的详细文档。

插件概述

插件名称: jp@gc - Inter-Thread Communication PreProcessor / PostProcessor
适用版本: JMeter 3.x 及以上(具体版本兼容性请参考JMeter Plugins Manager)

功能介绍

jp@gc - Inter-Thread Communication插件分为两部分:前置处理器(PreProcessor)和后置处理器(PostProcessor)。这两个组件共同工作,实现了跨线程组的数据交换能力,这对于模拟现实世界中的复杂用户交互和数据依赖场景至关重要。

主要用途

● 跨线程数据共享:允许从一个线程组提取的数据被另一个线程组使用。
● 同步控制:可以用来同步不同线程组的操作顺序,比如在一组用户执行操作后,另一组用户才能开始。
● 模拟真实用户交互:在需要模拟多个用户之间或用户与系统之间交互的场景时非常有用。

使用场景

  1. 模拟登录会话共享:一个线程组执行登录操作并提取会话ID,然后通过此插件将会话ID传递给其他线程组,让这些线程组能够在一个已登录的会话上下文中执行操作。
  2. 并发与序列控制:在需要控制一组操作先于另一组操作执行的场景下,可以利用此插件来同步线程组之间的执行顺序。
  3. 数据驱动测试:当需要基于从一组请求中获取的数据来驱动另一组请求时,可以使用该插件来传递这些数据。

配置步骤

  1. 安装插件:
    使用JMeter Plugins Manager安装Custom Thread Groups和Extras Set插件包,以确保jp@gc - Inter-Thread Communication插件可用。
  2. 添加前置处理器:
    在数据生成的线程组中,添加jp@gc - Inter-Thread Communication PreProcessor。配置它以设置变量名和值(通常是通过正则表达式提取器或其他方式获取的数据)。
  3. 添加后置处理器:
    在需要使用这些数据的线程组中,添加jp@gc - Inter-Thread Communication PostProcessor。配置它以监听特定的变量名,并选择如何处理数据(如取最新值、所有值等)。

应用实例

我们编写如下脚本
在这里插入图片描述
线程组1:保持默认
BeanShell 取样器1:编写如下脚本

String s = "hello JMeter";
vars.put("info",s);

jp@gc - Inter-Thread Communication PostProcessor:设置如下
● FIFO Queue Name to Put Data Into:设置为testInfo
● Value to Put:设置为${info}
线程组2:保持默认
BeanShell 取样器2:编写如下脚本

log.info("${getTestInfoData}");

jp@gc - Inter-Thread Communication PreProcessor:设置如下
● FIFO Queue Name to Get Data From:设置为testInfo,这里一定要注意,这里设置的名称务必跟上述的Thread Communication PostProcessor中的FIFO Queue Name to Put Data Into设置的名称一致,不然获取不到数据,类似JDBC相关数据库池一样
● Variable Name to Store Data:getTestInfoData
● Timeout:设置为5,单位是秒
然后运行脚本,查看JMeter日志内容如下

2024-08-07 10:14:01,746 INFO o.a.j.t.JMeterThread: Thread started: 线程组2 2-1
2024-08-07 10:14:01,747 INFO o.a.j.u.BeanShellTestElement: hello JMeter
2024-08-07 10:14:01,748 INFO o.a.j.t.JMeterThread: Thread is done: 线程组2 2-1

获取到了线程组1中BeanShell 取样器1保存在变量中的数据。

注意事项

● 线程安全:确保传递的数据在多线程环境下是线程安全的,避免数据竞争问题。
● 资源消耗:大量线程间通信可能会增加测试的资源消耗和复杂度,请根据实际情况合理设计测试计划。
● 测试设计:虽然此插件提供了强大的功能,但过度依赖跨线程通信可能导致测试维护困难,尽量简化测试设计。

结论

jp@gc - Inter-Thread Communication插件为JMeter用户提供了强大的跨线程数据共享能力,使得创建更贴近实际应用场景的负载测试成为可能。正确使用这一工具,可以显著提升测试的准确性和效率,帮助测试人员更好地评估系统的性能和稳定性。

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔波儿灞爱霸波尔奔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值