资讯专栏INFORMATION COLUMN

jmeter web性能测试之用beanshell转换全局变量

IT那活儿 / 2294人阅读
jmeter web性能测试之用beanshell转换全局变量

点击上方“IT那活儿”,关注后了解更多精彩内容!!!

背景


jmeter进行web性能测试,线程组内的变量只能在本线程组内被引用,但在遇到复杂的业务场景时,有时需要创建多个线程组,线程组之间需要共用变量,如登录操作生成的token,这样就需要将局部变量转换为全局变量,在不同线程组中共用。

jmeter将局部变量转换为全局变量,有两种方式,一种利用Beanshell PostProcessor(Beanshell后置处理器),一种利用Beanshell Sampler(Beanshell取样器)。


本例将登陆中获取的动态token,转换为全局变量,在其他线程组内使用。




    方式一


    利用BeanshellPostProcessor转换全局变量

    step1 添加Boundary Extractor (边界值提取器),获取动态token:

    边界值提取器和loadrunner中获取关联的左右边界值类似,在获取动态token值的请求上添加Boundary Extractor,填写左右边界值,提取动态token值。用正则表达式提取器也一样,这里用边界值提取器。
    • 添加Boundary Extractor:

    • 设置Boundary Extractor,获取动态token:

    step2 添加Beanshell PostProcessor,将局部变量token转换为全局变量。
    在token所在的线程组上添加Beanshell PostProcessor,在获取token的请求下添加也可以,本例在线程组上添加。
    • 添加Beanshell PostProcessor:

    • 利用__setProperty()函数转换:

    ${__setProperty(tokenG,${token},)}
    其中tokenG是转换成全局变量后的新的变量名称,将${token}的值赋给tokenG。
    step3 添加一个debug Sampler,验证一下是否能成功获取到token值。
    • 运行一下脚本,查看debug Sampler结果:

    step4 在其他线程组中引用该变量
    利用函数__P(),在其他线程组中就可以引用token值了。
    ${__P(tokenG,)}
    • 成功获取动态token值:



    方式二


    利用Beanshell Sampler转换全局变量
    step1 提取token值同上,添加Beanshell Sampler、转换函数同Beanshell PostProcessor类似。
    • 添加Beanshell Sampler:
    • 利用__setProperty()函数转换:

    step2 添加debug sampler验证
    step3 在其他线程组中引用
    Beanshell Sampler引用全局变量的函数和BeanshellPostProcesser不一样,利用函数__property()。
    ${__property(tokenG1)}
    • 成功获取动态token值:


    新手注意

    • __setProperty()、__P()、__property()前面的下划线是两个下划线,注意不要输入一个下划线,一个下划线函数引用是不成功的。
    • 善于利用打印的日志来排查问题,就是右上角的黄色三角号,运行时会实时打印日志,在排查问题时很有用。
    • 用函数助手生成Beanshell转换脚本时注意,jmeter5.3版本只有__property()函数,生成的转换函数是${__property(newname,${oldname})},直接复制到Beanshell脚本里是报错的。



    END



    更多精彩干货分享

    点击下方名片关注

    IT那活儿

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/129743.html

    相关文章

    • Jmeter跨线程组之间如何共有变量

      摘要:跨线程组之间变量不共享,即使在线程组最外层设置也不支持,解决方案通过后置处理器后置处理程序,将变量设置属性变为全局的来解决通过后置处理器获取正则表达式提取的变量值,处理器获取提取的变量值有以下两种写法写法一脚本内容写如下代码打印日志写 1、跨线程组之间变量不共享,即使在线程组最外层设置也不支...

      不知名网友 评论0 收藏0
    • 如何使用 JMeter 实现 API 接口自动化测试

      摘要:将响应断言放入请求下,会对该请求调用的响应结果进行断言。异步调用,等待一定时间后获取调用结果数据某支持客户进行异步调用,先发送一个异步请求提交数据获取一个,然后隔一断时间后再使用获取到的请求上一个请求的返回结果需要用到定时器组件。 由于segmentfault编辑器上传图片错误,小编试过多种方式试图拯救,还是未能成功,所以如要看完整文章请至http://t.cn/R8njjaT mia...

      joyvw 评论0 收藏0
    • Jmeter 使用实践 - 接口 diff 测试

      摘要:大多数人都使用做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求。此外,如有其他小伙伴发现了更好的一些针对测试的工具或方法,请多多指教。 大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求。 相比其他工具,Jmeter 入门门槛较低,安装也比较方便,根据...

      spademan 评论0 收藏0
    • 云智慧压测实战分享之JMeter工具使用初探

      摘要:有了测试脚本,通过线程组来模拟真实用户对服务器的访问压力。不同的是,这些类型的线程执行测试结束后执行定期的线程组。线程组中包含的线程数量在测试执行过程中是不会发生改变的。逻辑控制器元件只对其子节点中的取样器和逻辑控制器作用。 工欲善其事必先利其器,要保证移动应用产品在上线之后能稳定运行于各种复杂环境,仅仅进行功能测试是远远不够的,压力测试越来越被应用开发商所重视。而压力测试从传统的内部...

      venmos 评论0 收藏0
    • 不用写代码,也能做好接口测试

      摘要:接口测试形式单个接口测试包含性能测试和通过接口调用进行场景测试。充分来说就是接口测试相对容易实现自动化持续集成。 本文你将了解到 1、接口测试基本概念,包含什么是接口,什么是接口测试,为什么要做接口测试2、接口测试用例设计3、怎样不用写代码,也能快速的根据开发的API文档完成接口自动化测试脚本 注:如果你对接口基本概念和接口测试用例已熟悉,可以直接跳过,其实看一遍也无防,就当作 温故知...

      idisfkj 评论0 收藏0

    发表评论

    0条评论

    IT那活儿

    |高级讲师

    TA的文章

    阅读更多
    最新活动
    阅读需要支付1元查看
    <