zoukankan      html  css  js  c++  java
  • JMeter Sampler之BeanShellSampler的使用

     

     

    SamplerBeanShellSampler的使用

    by:授客 QQ1033553122

    欢迎加入软件性能测试交流群:7156436

    1.  Bean Shell简介

    ·         BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;

    ·         BeanShell是一种松散类型的脚本语言(这点和JS类似);

    ·         BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器。

    ·         BeanShell可执行标准Java语句和表达式,另外包括一些脚本命令和语法。

     

    2.  Bean Shell常用内置变量

    JMeter在其BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

    ·         log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

     

    ·         ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext

     

    ·         vars:即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:

    a) vars.get(String key):从jmeter中获得变量值

    b) vars.put(String keyString value):数据存到jmeter变量中,其作用可简单理解为赋值操作:key=value,更多方法可参考:org.apache.jmeter.threads.JMeterVariables

     

    ·         props:即JMeterProperties - class java.util.Properties,操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是put函数,value数据类型只能为String,不能是一个对象。对应于java.util.Properties 

    a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 

    b) props.put("PROP1","1234"); 

     

    ·         Parameters:从参数输入框中获取的参数值的集合

     

    ·         bsh.args:从参数输入框中获取的参数值的数组

     

    3.  启动Jmeter ,添加测试计划,线程组等

     

    4.  添加BeanShell Sampler

    右键线程组->添加->Sampler->BeanShell Sampler

     

    5.  应用举例

    4.1 自定义脚本、函数

    注:UUID含义是通用唯一识别码 (Universally Unique Identifier),java中可调用randomUUID直接生成。

     

    代码如下:

     

    使用保存的unique_id变量值

    4.2 引用外部java文件

     

     

    说明:运行结果,在d盘根目录下生成shouke.txt文件

    附:eclipse中代码组织结构如下(下同,不再赘述):


     

    其中:

    CreateFile.java代码文件内容:

    4.3 引用外部class文件

     

    运行后,在d盘根目录下生成destfile.txt文件

     

    注意:

    addClassPath(String class_path);

    1 这里的class_path可以不是绝对上级路径,只需要包含.class文件即可,比如可以是

    addClassPath("D:\workspace\StudyProject\");

    addClassPath("D:\ ");

     

    2class_path不能包含包名对应的目录路径

    如上,如果改成addClassPath("D:\workspace\StudyProject\bin\ mypackage");

    运行会报类似如下错误

    2016/10/17 17:55:50 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   CreateFile (wrong name: mypackage/CreateFile)

    2016/10/17 17:55:50 WARN  - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval    CreateFile (wrong name: mypackage/CreateFile)

     

    4.4 引用外部jar文件

    如下,

    1、在eclipse中单独把CreateFile.java文件打包成jar文件,比如create-file.jar

    2、把create-file.jar文件放到JMeter安装目录->lib目录下

    3、然后在JMeter的【测试计划】面板中添加打包的jar文件


     

    4.5 JMeter内置变量演示

    添加【配置原件】-【用户定义的变量】,并在面板中添加var1,var2两个变量

      

    运行结果:

     

    注:

    1log.info等方法会把日志写入到JMeter安装目录->bin目录下的jmeter.log文件中(形如:D:Program Files (x86)Jmeterapache-jmeter-2.13in jmeter.log

    2、参数输入框中也可以直接输入字符串参数值,如下

  • 相关阅读:
    .net Framework 4.5 MVC4 + RabbitMQ
    阿里云飞天系统的技术架构(转)
    ORA12899错误解决记录
    网络通讯函数测试记录
    .应该用CreateThread还是_beginthreadex(), 为什么?( 转载)
    发挥v$SQL视图的作用(oracle)
    ClickHouse笔记
    MySQL字段是JsonArray格式怎么查询数据
    Base64编码保存为图片,java工具类
    java两个线程交替打印数字
  • 原文地址:https://www.cnblogs.com/shouke/p/10157681.html
Copyright © 2011-2022 走看看