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、参数输入框中也可以直接输入字符串参数值,如下

  • 相关阅读:
    遗传算法(Genetic Algorithm, GA)及MATLAB实现
    CCF CSP 201809-2 买菜
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
    PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
    PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
    PAT (Advanced Level) Practice 1001 A+B Format (20 分)
    BP神经网络(原理及MATLAB实现)
    问题 1676: 算法2-8~2-11:链表的基本操作
    问题 1744: 畅通工程 (并查集)
  • 原文地址:https://www.cnblogs.com/shouke/p/10157681.html
Copyright © 2011-2022 走看看