在Jmeter实际的使用中,根据业务往往需要构造一些数据源,比如虚拟用户的账号信息等,为了快速灵活,较好的方式往往是通过代码来辅助生产数据。

故在Jmeter支持的众多 sampler 或 前/后置处理器 中,一般借助 Beanshell(推荐) 或 JSR223 等来实现。(源码示例为随机生成中国地区的手机号)



对于 Beanshell,一般调用 Java 源码的方式有三种:

  • 通过 beanshell sampler or PreProcesser or PostProcesser 直接进行 Java 编码
  • 通过 beanshell sampler or PreProcesser or PostProcesser 引入本地 Java 源码文件
  • 通过导入的 jar 包,在beanshell sampler or PreProcesser or PostProcesser 中进行源码的调用(推荐)

方法一:通过 beanshell sampler 直接进行 Java 编码

方法二:通过 beanshell 引入本地 Java 源码文件

如图示,先将源代码存放在本地的目录,然后通过 beanshell 的关键字加载之。

#加载源码文件
source("/Users/hailongchen/Documents/workspace/hailongchen/src/main/java/utils/PhoneNoGenerateUtil.java");
#调用源码程序(略)
#使用 beanshell 存/取 变量
vars.put();
vars.get();

方法三:通过导入的 jar 包,在beanshell sampler中进行源码的调用

Demo如图示:

具体步骤参考:

  1. 先通过 jdk 的命令或者借助 IDE 编译器的功能,生成 jar 包(一般不需要生成可执行 jar 包)

  2. 将 jar 包放入 jmeter 的目录,并修改 jmeter.properties 文件(自行度娘)

  3. 启动 jmeter,在测试计划中,导入 jar 路径(该步骤可能不需要,可测试确认)

  4. 创建 beanshell 组件,按需引用源码(需要注意源码的 package 路径,图示为源码在 package 名称为 utils,类文件名称为 PhoneNoGenerateUtil)

  5. 在 Beanshell 中调用 所引用 jar包的代码(见 demo)

jmeter进阶之Beanshell引用Java代码的更多相关文章

  1. 性能测试八:jmeter进阶之beanshell

    * BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java ...

  2. 碎片记录——JMeter之 http post json对象与参数化调用,以及beanshell 引用Java源码

    参考文档 http://jmeter.apache.org/usermanual/component_reference.html#samplers https://blog.csdn.net/qq_ ...

  3. 性能测试九:jmeter进阶之beanshell的使用+断言

    一.使用 BeanShell使用方式一 BeanShell面板上写脚本 // 从vars中获取用户定义的参数,并转换为int类型 int p_skuId = Integer.parseInt(vars ...

  4. python2.7 (x64) 调用 java 代码实践

    背景:公司实施接口自动化测试,使用的框架python+unittest:因为开发使用的架构师SpringBoot,在测试过程中难免需要使用到python调用JAVA的一些接口,所以需要用到python ...

  5. jmeter中通过beanshell访问eclipse中导出jar中的java类的方法

    主要步骤 1.在eclipse中导出要引用的java代码为jar文件 2.将生成的jar文件放到jmeter的lib的ext目录下 3.在jmeter的jsr223处理器中导入要引用的java类型文件 ...

  6. JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。

    JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.

  7. 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。

    Eclipse中导入外部jar包 在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可. 工具/原料 Eclipse 需要 ...

  8. Jmeter自定义编写Java代码调用socket通信

    一.前言 最近需要测试一款手机游戏的性能,找不到啥录制脚本的工具,然后,另外想办法.性能测试实际上就是对服务器的承载能力的测试,和各种类型的手机客户端没有啥多大关系,手机再好,服务器负载不了,也不能够 ...

  9. Spring进阶—如何用Java代码实现邮件发送(一)

    相关文章: <Spring进阶—如何用Java代码实现邮件发送(二)> 在一些项目里面如进销存系统,对一些库存不足发出预警提示消息,招聘网站注册用户验证email地址等都需要用到邮件发送技 ...

随机推荐

  1. 【转】gl_NormalMatrix

    关于为什么对法线变换时要使用变换矩阵的转置的逆,而不能像变换顶点那样直接使用变换矩阵 https://www.cnblogs.com/bigdudu/articles/4191042.html 注意文 ...

  2. java创建对象方法列表

    引用 不用构造方法也能创建对象 前言 java中对象创建的方法主要包括,1,使用new关键字,2.使用clone方法,3.反射机制,4.反序列化.其中1,3都会明确的显式的调用构造函数.2是在内存上对 ...

  3. ORACLE Physical Standby DG 之fail over

    SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap;确认下是否存在日志间隙,发现gap现象,说明failo ...

  4. Catalan numbers

    w https://en.wikipedia.org/wiki/Catalan_number 路径规划

  5. python实现格式化输出9*9乘法表

    # python 9*9 乘法表 for i in range(1,10): for j in range(1,i+1): print("%s*%s=%s"%(i,j,i*j),e ...

  6. unique()函数

    unique()函数可输出列表,元组和series中的不同元素. 且只能输出dataframe的某一列series中的不同元素,不能同时输出. 返回的都是一个ndarry,但不能输出ndarry中的不 ...

  7. Vue中解决路由切换,页面不更新的实用方法

    前言:vue-router的切换不同于传统的页面的切换.路由之间的切换,其实就是组件之间的切换,不是真正的页面切换.这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新,也就是我们口中的页 ...

  8. python 正则表达式 re.match

    #coding:utf-8 import re #匹配内容:单词+空格+单词+任意字符 #\w 单词字符[A-Za-z0-9_] #(?P<name>...) 分组,除了原有的编号外在指定 ...

  9. C++边双缩点,Redundant Paths 分离的路径

    一道比较简单的 关于边双的题,个人感觉难度不大. 求出整个图的边双,根据边双的定义我们可以延伸出 边双的任两个点都有至少两种路径来互相抵达(因为其不存在割边) .不妨将每个边双缩成一个点,样例中的图便 ...

  10. 介绍一款代理端口管理工具--Proxfier

    官网下载地址: https://www.proxifier.com/download/ProxifierSetup.exe 用户名随意填注册码下边 5EZ8G-C3WL5-B56YG-SCXM9-6Q ...