《BeanShell 在 JMeter 中的应用》总结

通过案例进行讲解

一、BeanShell 介绍

官网: http://www.BeanShell.org

BeanShell 是一种完全符合 Java 语法规范的脚本语言,具有以下特点:

  • 是一种松散类型的脚本语言,类似 JS。
  • 是用 Java 写成的小型、免费、可下载的嵌入式 Java 源代码解释器。
  • 执行标准 Java 语句和表达式,包含一些脚本命令和语法。

在 JMeter 中,BeanShell 可以对功能进行扩展,对变量进行操作,其主要作用包括:

  • 作为定时器(BeanShell Timer)。
  • 作为前置处理器(BeanShell PreProcessor)。
  • 作为取样器(BeanShell 取样器)。
  • 作为后置处理器(BeanShell PostProcessor)。
  • 作为断言(BeanShell 断言)。
  • 作为监听器(BeanShell Listener)。

二、BeanShell 常用内置变量

  1. Log:用于打印日志,最常用且简单,打印在 jmeter.log 中(JMeter安装目录/bin/jmeter.log)

    • 使用方法:
      • 打印 info 形式的普通字符串日志,如 log.info("hello world"); 
      • 拼接字符串和变量,如 log.info("hello world" + "${token}"); 
      • 打印自定义变量,先定义变量再打印,如 str = "hello world"; log.info(str); 
      • 打印 error 形式的普通字符串日志,如 log.error("ERROR - ERROR"); 
    • 查看
  2. vars:用于存取 JMeter 局部变量,可存取字符串内容或对象。

    • 使用方法:
      • 获取变量:vars.get() 。
      • 保存变量:vars.put("key", "value") 。
      • 对象保存 JMeter 变量中:vars.putObject("key", object) 。
      • 变量删除:vars.remove("key") 。
      • Parameters 保存参数集合,可通过 log.info(Parameters); 打印。
  3. props:设置 JMeter 全局的静态变量,实现跨线程组共享变量。

    • 使用方法:
      • 获取属性变量:props.get("key") 。
      • 存入全局属性:props.put("key", "value") 。
  4. ctx/prev

    • ctx:获取当前线程的上下文信息。
    • prev:等同于 ctx.getPreviousResult,可获取前一个取样器返回的信息。
    • 使用方法:
      • prev.getResponseDataAsString():获取响应信息。
      • prev.getResponseCode():获取响应 code。
  5. 其他

    • ResponseCode:响应码。
    • ResponseMessage:响应结果。
    • SampleResult.setResponseData("Hello world"):设置响应数据。
    • Label:表示取样器的名称。
    • IsSuccess:设置是否成功。

三、BeanShell 实际场景应用

  1. 登录密码加密(BeanShell 前置处理器)

    • 在java开发工具中编写代码 Eclipse打jar包(选中该类点击右键->Export->jar file) IDEA打jar包(File–>Project Structure-> Artifacts ->“+”JAR->From Module with dependency,导出,最后Build->Build Artifacts
    • 把打好的jar包放到jmeter目录下的apache-jmeter目录的lib下
    • 添加前置处理器-BeanShell PreProcessor
    • 编写代码,把加密好的结果存在变量中
    • 执行测试
  2. BeanShell 断言

    • BeanShell 断言可使用脚本执行更复杂的个性化断言检查,通过 Failure 和 FailureMessage 设置断言结果。
    • 案例:与数据库结果进行验证,添加 BeanShell 断言并编写相应代码。
  3. 线程之间共享变量(BeanShell 后置处理器)

        

实现步骤:

1. 创建线程组1-登录接口,在接口下添加BeanShell后置处理器, 实现CASTGC=${token},

2. 编写代码: 获取响应,把响应结果转为json对象 获取响应结果放在全局变量中,实现关联

3. 创建线程组2-用例1,header中引用线程组1的变量名称

4.执行线程组2-用例1

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值