常用的Sampler:
- Http请求
- Debug Sampler
- BeanShell Sampler
- JDBC请求
1、Http请求
http这里不多做解释
2、Debug Sampler
主要是用来调试的,里面的参数默认不用修改。
3、BeanShell Sampler
Jmeter有哪些Bean Shell
- 定时器: BeanShell Timer
- 前置处理器:BeanShell PreProcessor
- 采样器: BeanShell Sampler
- 后置处理器:BeanShell PostProcessor
- 断言: BeanShell断言
- 监听器: BeanShell Listener
主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求。本节内容如下:
- 操作变量
- 操作属性
- 自定义函数
- 引用外部java文件
- 引用外部class文件
-
操作变量:通过使用Bean shell内置对象vars可以对变量进行存取操作(这两个方法也是BeanShell中常用的)
(1) vars.get(“name”); 从jmeter中获得变量值
(2) vars.put(“key”,“value”); 数据存到jmeter变量中 -
操作属性:通过使用Bean shell内置对象props 可以对属性进行存取操作
(1) props.get(“START.HMS”); 注:START.HMS为属性名,在文件jmeter.properties中定义
(2) props.put(“PROP1”,“1234”); -
自定义函数:
在BeanShell中,我们可以使用java语言自定义函数来处理特定的逻辑,结合BeanShell的内置对象进行变量的存取,方便我们进行测试提高脚本的灵活性。
示例:
(1) 在Test Plan中添加一个变量:hello = 111。
(2) Debug sampler-1和Debug sampler-2什么都不处理,用来查询对比beahshell处理前后的结果。
(3) BeanShell Sampler中的脚本如下:
(4) 运行结果:
Debug sampler-1中显示:hello=111
BeanShell sampler中 返回结果为:success
Debug sampler-1中显示:hello=333,jmeter=222
4. 引用外部java文件:已有的java源文件或者class文件,在jmeter中引用。
(1) 假如我有一个java 源文件,名为:test.java,代码如下:
(2) Bean Shell使用代码如下:
在bean shel中通过source(“代码路径”)方法引入java,然后调用方法和java一样,new一个class,再调用里面的add 方法。
(3) 运行结果:
5. 引用外部class文件:
现在知道如何引用外部文件,有时候如果我们只有class文件怎么办呢?其实在jmeter中也可以直接引用class文件,示例如下:
(1) 直接把上例中的java文件编译成class文件;编译方法:进入存放test.java文件的路径下,cmd进入命令窗口,输入javac test.java,然后文件夹中会出现test.class文件。
(2) Bean Shell使用代码如下:
用addClassPath(“D:\”)方法引入 class文件,再用import导入包+类,然后就可以像java一样调用了。
需要注意的是:路径我是取在eclipse中找到的Location中的路径。路径不对运行会报错(Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Myclazz (wrong name: jmeter/Myclazz))
(3) 运行结果如下:
4、JDBC请求
JDBC连接oracle数据库
- jar包设置:
- JDBC Connection Configuration的配置:
- JDBC Repuest 的配置:
- 参数解释如下:
Variable Name的名称必须要对应一致。
Query :此处写sql语句,后面一定不加分号
Parameter types:varchar (参数的类型)
Variable names:name,class (变量名称,填写数据库字段即可)
Result variable name:result (存放结果的变量名称)
Query timeout(s):10 (sql语句超时等待)
JDBC 连接Mysql数据库
- jar包设置:
我是在计算机中搜索mysql-connector-java-5.1.7-bin.jar,添加到测试计划中,一般安装mysql或者有开发环境,workspace中也有此jar包,而且版本要对应上,否则不会生效。我的mysql是5.5版本。 - JDBC Connection Configuration的配置:
- JDBC Repuest 的配置:
JDBC测试过程中可能会遇到的几个问题:
-
执行sql(sql中有汉字)后,察看结果树中只显示字段,不显示值
如果遇到这个问题,基本上就是字符集的问题,需要在Database URL后加一些东西:
-
sql语句中的汉字不会显示出来
打开jmeter的properties配置文件修改#jsyntaxtextarea.font.family=Hack,把#去掉。重启jmeter就可以看见汉字明文显示啦!
-
如果想执行多个sql语句,需要在数据库后加参数?allowMultiQueries=true,可同时执行多条mysql语句,否则报错。
-
Navicat连接mysql时,报1045 access denied using password :yes错误
可能是因为不存在用户user引起的,需要创建用户。 -
JDBC请求报错,显示结果是Cannot create PoolableConnectionFactory(ORA-00923:一堆乱码 FROM 一堆乱码):
图中红框部分改成:Select 1 FROM DUAL
参考博客:https://www.cnblogs.com/puresoul/p/4915350.html
https://www.cnblogs.com/puresoul/p/4949889.html