Jmeter之Beanshell使⽤(⼀)
⼀、什么是Bean Shell
BeanShell是⼀种完全符合Java语法规范的脚本语⾔,并且⼜拥有⾃⼰的⼀些语法和⽅法;
BeanShell是⼀种松散类型的脚本语⾔(这点和JS类似);
BeanShell是⽤Java写成的,⼀个⼩型的、免费的、可以下载的、嵌⼊式的Java源代码解释器,具有对象脚本语⾔特性,⾮常精简的解释器jar⽂件⼤⼩为175k。
BeanShell执⾏标准Java语句和表达式,另外包括⼀些脚本命令和语法。
⼆、Jmeter有哪些Bean Shell
定时器: BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器: BeanShell Sampler
后置处理器:BeanShell PostProcessor
断⾔: BeanShell断⾔
: BeanShell Listener
三、BeanShell的⽤法
在此介绍下BeanShell PreProcessor的⽤法,其它的beahshell可以类推。在此我们使⽤beahshell调⽤⾃⼰写的⼯具类,⼯具类实现了密码的加、解密功能:
1、在eclipse写好代码,然后把该类打成jar包(在类上点击右键->Export->jar file)
2、把jar包放到jmeter⽬录\apache-jmeter-2.13\lib\ext下
3、打开jmeter,添加⼀个http sampler(调⽤登录接⼝),在sampler下添加⼀个BeanShell PreProcessor
4、在beanshell PreProcessor中导⼊我们的jar包,调⽤⾥⾯的加、解密码⽅法,把结果保存在jmeter变量中,下⾯两个⽅法是
beanshell中我们最常⽤到的:
<(String paramStr):获得变量值
vars.put(String key,String value):,将数据存到jmeter变量中
import com.pingan.ff.account.user.utils.*;
//加密
System.out.println("*****加密*****");
String password = "123123";
String encode = Key(password);//调⽤⼯具类中的⽅法进⾏加密
System.out.println("Set my encode");
vars.put("encode",encode);//把值保存到jmeter变量encode中
java源代码加密String ("encode");
System.out.println("Get my encode: " + getEncode);
5、把加密后的密码存到jmeter变量中,然后在http sampler中就可以通过${encode}进⾏使⽤了:
6、执⾏脚本:
四、Bean Shell常⽤内置变量
JMeter在它的BeanShell中内置了变量,⽤户可以通过这些变量与JMeter进⾏交互,其中主要的变量及其使⽤⽅法如下: log:写⼊信息到jmeber.log⽂件,使⽤⽅法:log.info(“This is log info!”);
ctx:该变量引⽤了当前线程的上下⽂,使⽤⽅法可参考:。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引⽤了JMeter线程中的局部变量容器(本质
上是Map),它是测试⽤例与BeanShell交互的桥梁,常⽤⽅法:
a) (String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
更多⽅法可参考:
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引⽤了JMeter的配置信息,可以获取Jmeter的属性,它的使⽤⽅法与vars类似,但是只能put进去String类型的值,⽽不能是⼀个对象。对应于java.util.Properties。
a) ("START.HMS"); 注:START.HMS为属性名,在⽂件jmeter.properties中定义
b) props.put("PROP1","1234");
prev - (SampleResult):获取前⾯的sample返回的信息,常⽤⽅法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
更多⽅法可参考:
sampler - (Sampler):gives access to the current sampler
官⽹:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论