jmete 学习 --常用脚本开发
1.BeanShell Sample
BeanShell 比较方便用来测试Java接口程序的,如果你不想对Java 接口测试程序进行扩展的话,BeanShell 是一个不错的选择.(实际工作中的较少)
举例说明:
1)两个简单的java类
package com.seling.test; public interface BeanUtil { public String getUserName(); public String getAddress(); public int mul(int i); } //实现上面接口的类 package com.seling.test; public class BeanShellEg implements BeanUtil { private String userName; private String address; public BeanShellEg(String name) { this.userName = name; } public BeanShellEg(String name,String address){ this.userName = name; this.address = address; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
2) jmeter 引用该jar包
java 到处jar包,放入 %JMETER_HOME%\lib\ext 文件夹下面,然后在测试计划中添加,如下图所示。
3)BeanShell Sampler 中调用
注意:1.入参使用,多个入参用 空格 隔开,调用用 bsh.args[i]
2.调用 jar 包 用 import package 包名。
2.Debug Sampler
Debug Sampler 与 察看结果树组合 可以帮助我们知道参数化的变量值取值是否正确,正则表达式提取值是否正确,JMETER 属性,调试服务器是返回什么内容等等等等......
3.FTP请求
FTP请求用于Internet上文件的双向传输
关键字段解释:
Remote File:远程FTP服务器文件路劲。
Local File:本地文件路径
Local File Contens:本地文件内容(这个是用来干嘛的?)
Save File in Response:文件内容是否保存到响应中区,如果选择,且运行FTP请求后我们在察看结果树的响应数据中可以看到内容。
4.Java 请求
测试的类必须继承 AbstractJavaSamplerClinet 类 或实现 JavaSamplerClient 接口。
且要重写如下方法:
getDefaultParameters() 设置入参
setupTest(JavaSamplerContext context) 初始化话方法
runTest(JavaSamplerContext arg0) 性能测试的线程运行体 是重点
teardownTest(JavaSamplerContext arg0) 测试结束时调用
其中 runTest 是必须实现的。
例子明天补上。
5.JDBC 请求
对数据库进行测试,可以对SQL 进行参数化,唯一遗憾的额是 一个JDBC Request 请求只能执行一条语句。
在JMETER中简历一个JDBC Request 请求主要分两步:
1:设置JDBC 连接池(在JDBC Connection Configuration 元件中进行设置)
2.添加JDBC Request 请求,进行参数化设置,断言,监听。
关键名词解释:
Variable Name Bound to Pool - Variable Name:连接池名称,JDBC Request 通过此名称来获取连接池中的链链接。最好具有业务意义,呵呵。
Max Number of Connections:连接池的最大链接数。
Pool TimeOut:连接超时设置。
Idel Cleanup Interval(ms):空闲连接清理书记兼间隔。
Keep - Alive:是否保持与数据库的链接。
Max Connection age: 连接生存时间。超过这个时间的链接将又连接池自动断开丢弃,当然正在使用的连接不会马上断开,而是等待它CLOSE 再断开。
连接 ORACLE 的例子下面奉上。
JDBC Request
关键名词解释:
Variable Name: 即在JDBC Connection Configuration中设置的 Variable Name。
Query Type:
Select Statement: 执行查询 ,不可用占位符来做参数化,但可以用 ${} 来引入变量
Updata Statement: 执行更新 ,不可用占位符来做参数化,但可以用 ${} 来引入变量
Callable Statement:可以调用存储过程,可以有入参,也可以有占位符。可用占位符来做参数化,但可以用 ${} 来引入变量。
Prepared Select Statement:预编译查询语句,在Oracle中为了减少数据库在SQL 上的硬编译资源消耗,提倡用绑定变量,这样相同的SQL 只会被编译一次。支持占位符,且长时间执行效率比 Select Statement 好。
Prepared Updata Statement:同上。
Commit:提交
Rollback:回滚
Parameter values:参数值,用来参数化 sql query 中的sql和语句。
Parameter types:参数类型
Varivable names: SQl 执行后得到的结果往往是一个数据集,可以保存的变量中来,供后面的元件调用。(以逗号隔开)
Result variable name:上面的Varivable names 是与列数相对应的,而这个则是把整个结果都存放在一个数组中,类似于 json字符串。