每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。
在Jmeter中,很多元件中都有涉及到BeanShell,比如BeanShell监听器、BeanShell定时器、BeanShell预处理程序、BeanShell后置处理程序、BeanShell 取样器、BeanShell断言等,由于BeanShell在Jmeter中经常会被使用到,本章将主要介绍如何使用BeanShell,BeanShell是一个小型、免费、可嵌入的Java源代码解释器,也是一门使用Java来完成编写的脚本语言,BeanShell可以支持标准的Java语句和表达式等,还扩展支持了常见的脚本语言的语法等,使用时甚至比Java语言更加通俗简单和易懂。
在前一章节中,介绍了如何去安装Bean Shell,从这一章节起开始介绍Bean Shell语言的基础语法,本次主要学习变量与数据类型
1、变量与数据类型
在BeanShell中,变量的声明定义和赋值与Java语言非常的类似,可以使用数据类型关键字int、double、String等来声明和定义变量,并对其进行赋值操作。与Java语言不同的是,beanshell中变量的类型是动态的,可以根据赋予的具体数值,BeanShell可以自动推断确定类型,比如下图所示,定义了一个变量a,并且将该变量赋值为Hello Jmeter,然后通过print方法输出变量a的值,在这个示例中,我们并没有指定变量a的具体类型,但是BeanShell可以根据给变量a的具体值Hello Jmeter来推断出a为String类型。
当然如果我们在定义变量时,指定了变量a的数值类型为String,也不会存在任何的问题,如下图所示。
在BeanShell中,声明和定义一个可变的变量时,通常建议通过var关键字来进行声明,比如var b=100表示声明了变量b,同时给变量b赋值为100,如下图所示。
BeanShell中包含的常见基础数据类型如下:
- boolean:布尔型,通常可以赋值为true或者false,比如boolean flag = true表示定义了变量flag的值为true。
- char:字符型,用于表示单个字符,用单引号来表示,比如char a = 'A'表示定义了变量a的值为A。
- int:整数型,用于表示没有小数部分的数值,可以是正数、负数或零,比如int num = 10表示定义了变量num的值为10;
- long:长整型,long和int的区别在于整数的取值范围不一样大,long的取值范围通常更大,比如long num = 900000000L表示定义了变量num的值为900000000。
- double:浮点数类型,Beanshell 支持的浮点数类型有 float 和 double,比如可以通过double d = 1.65432来定义变量d为double类型,并且同时赋值为1.65432。
- float:浮点数类型,比如可以通过float f = 5.14f来定义变量f为float类型,并且同时赋值为5.14。
BeanShell中包含的常见引用数据类型如下,引用数据类型通常是指会存储引用地址的变量,而这些变量又引用Java虚拟机内存中的对象。在 Beanshell 中,引用数据类型包括字符串类型、对象类型、数组类型。
-
String:即字符串型,通常用来存储文本类型的字符串数据,和Java语言中的字符串类型非常类似,比如通过String s = "Jmeter"来定义了变量s为String类型,并且通过赋值为Jmeter。
-
数组类型:数组是一种最常见的数据类型,可以存储多个相同类型的元素,比如通过String[] strings = {"aa","bb","cc"}来定义了一个数组变量为strings,并且定义时,声明了该数组包含"aa"、"bb"、"cc"三个元素,如下图所示。
-
对象类型:我们知道,Java 语言是面向对象的开发语言,BeanShell 和Java一样,也支持面向对象的开发,可以是我们自定义的类对象,也可以是BeanShell内置的类对象,比如可以先定义一个类对象,然后即可以对该类对象声明创建变量以及对其进行初始化,如下所示,自定义了一个Teacher类,并且通过Teacher teacherA = new Teacher();来创建了一个名为teacherA 的Teacher对象类型的变量,并且对该变量进行了初始化赋值操作。
class Teacher {
String name; // 定义了一个name变量,用来存储名字。
int age; // 定义了一个age变量,用来存储年龄。
};
Teacher teacherA = new Teacher();
teacherA.name="zhang yongqing"; //对teacherA 对象下的变量name 赋值
teacherA.age=40; //对teacherA 对象下的变量age赋值
print(teacherA); // 打印出teacherA对象变量
print(teacherA.name);// 打印出teacherA对象变量下的name变量的值
print(teacherA.age); // 打印出teacherA对象变量下的age变量的值
在BeanShell中执行上述的代码后,运行的结果如下:
在BeanShell中,可以和Java 语言一样,通过class关键字来声明定义一个类对象,比如上面示例中的Teacher类对象就是通过class关键字来声明的,声明一个类对象的语法如下。
class className {
//可以在class结构体中定义变量和方法以及函数等。
};
在BeanShell,根据变量的生命周期和作用域,通常又可以将变量分为局部变量、静态变量、常量等。
- 局部变量:通常是指在特定代码块中定义的变量,其作用域通常会限定在该代码块中,其生命周期从其声明的地方开始,直到代码块执行完毕。
- 静态变量:是通过使用 static 关键字在class类对象中定义的变量,静态变量是属于类本身的,但是不属于类的任何对象实例,因为静态变量在类加载时就会进行初始化,并且只有一份副本存在于内存中,对于所有的该类的对象实例来说是共享的,比如如下所示示例中定义了一个名为Counter的类,并且在该类中,通过static int count = 0定义了一个静态变量count。
class Counter {
static int count = 0; // 静态变量 count
}
- 常量:常量指其数值在BeanShell程序运行期间都不能被修改的变量,在 Beanshell 中和Java类似,可以通过同时结合 final 关键字和static关键字来定义常量,比如通过final String JMETER_MESSAGE = "Welcome to JMeter" 可以定义一个String类型的常量JMETER_MESSAGE,并且给该常量赋值为Welcome to Jmeter。
2、本次学习总结
本次主要是介绍Bean Shell 脚本语言的基础语法中的变量与数据类型,基础语法是学习任何一门开发语言的基础,在每一门开发语言中,都会有变量与数据类型,通过本小节的学习,需要掌握这些开发语言内部的变量与数据类型。
出处 :本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书