电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

Jmeter高阶系列--Beanshell脚本

来源:金蝶云社区作者:金蝶2024-09-235

Jmeter高阶系列--Beanshell脚本

1 概述

1.1 导语

你是否遇到以下场景时,头疼该如何解决?

  • 测试场景复杂,测试入参需多样化;

  • 自动化测试灵活,参数需动态生成;

  • 操作的数据量大,数据不能直接罗列。


Jmeter的Beanshell脚本可以解决以上问题。

1.2 Beanshell简介 

Beanshell是一种完全符合Java语法规范松散类型脚本语言(这点和JS类似),并且又拥有自己的一些语法和方法。它用Java写成,是一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。解释器Jar文件大小为175k,非常精简。此外,它执行标准Java语句和表达式,也包括一些额外的脚本命令和语法。


Jmeter支持Beanshell脚本,即使用者可通过Beanshell脚本对Jmeter的基本功能进行扩充,实现更多更复杂的测试场景,满足多样化需求,比如自动化测试或者性能测试。

1.3 Beanshell类型

Jmeter中主要有六种Beanshell:

  • 定时器:Beanshell Timer

  • 前置处理器:Beanshell PreProcessor

  • 采样器:Beanshell Sampler

  • 后置处理器:Beanshell PostProcessor

  • 断言:Beanshell断言

  • 监听器:Beanshell Listener


Beanshell的常见使用方法


Jmeter中Beanshell常用的使用方法有四种:自定义函数、导入Jar包、导入class文件、Beanshell常用内置变量。

2.1 自定义函数

自定义函数,即直接在Beanshell中编写Java代码,Java代码可在IDE工具中调试通过后再复制进Jmeter的Beanshell中。

销售订单需要关联物料、客户、组织等基础资料,根据接口定义,可通过各基础数据的编码或者ID等进行关联,基础数据的编码通常由前缀加流水号加时间生成,可在Beanshell中编写生成流水号以及基础资料编码的Java方法,供脚本调用。

如下图,在Beanshell脚本中实现生成物料编码的功能。



代码如下:


Random itemRnd = new Random();
     //生成一个n位的随机数字字符串
     public static String getRandom(int len) {         
            String source = "0123456789";
                 Random r = new Random();
                 StringBuilder rs = new StringBuilder();
                 for (int j = 0; j < len; j++) {
                     rs.append(source.charAt(r.nextInt(10)));
                 }
                 return rs.toString();
             }

String  ItemNumbers="前缀"+getRandom(5);


除了随机生成基础资料编码,我们在测试过程中,常常需要对请求参数进行URl编码和URL解码,进行测试和分析。在Beanshell脚本中实现URL编码和URL解码功能的方法如下。



代码如下:


/**
          * @param  the String needing  decoder
          * @return  the result of decoder
          * @Description 进行url解码
          * @Example:getURLDecoderString("%5B%2240029%22%2C%2240153%22%5D"),result:["40029","40153"]
          */
            public static String URLDecoderString(String strInput) {          
                if (null == strInput) {
                    return "";
                }
                String urldecoder = "";
                try {
                    urldecoder = java.net.URLDecoder.decode(strInput, ENCODE);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                return urldecoder;
            }
            /**
              * @param  the String needing  encoder
              * @return  the result of encoder
              * @Description 进行url编码
              * @Example:getURLEncoderString("[\"40029\",\"40153\"]"),result:%5B%2240029%22%2C%2240153%22%5D
              */
            public static String URLEncoderString(String strInput) { 
                if (null == strInput) {
                    return "";
                }
                String urlencoder = "";
                try {       
                    urlencoder = java.net.URLEncoder.encode(strInput, ENCODE);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                return urlencoder;
            }

2.2 导入Jar包

编写代码内容较多时,推荐通过导入Java的Jar包来实现。

在Java的IDE工具中(比如eclipse)写好代码,然后把该类生成Jar包(在类上【点击右键】->【Export】->【Jar file】)。

导出的Jar包放到Jmeter

Jmeter高阶系列--Beanshell脚本

1 概述1.1 导语你是否遇到以下场景时,头疼该如何解决?测试场景复杂,测试入参需多样化;自动化测试灵活,参数需动态生成;操作的数据量...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信