每周读书与学习->Jmeter中如何使用Bean Shell脚本(二)Bean Shell的基础语法之变量与数据类型

每周读书与学习是由清华大学出版社出版的《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核心技术、性能测试与性能分析》一书

相关推荐
安畅检测齐鲁物联网测试中心16 小时前
国产化项目验收测评,如何才算真正过关?
性能测试·兼容性测试·安全测试·国产化项目·验收测评
云边有个稻草人20 小时前
金仓数据库标量子查询消除:解决复杂SQL性能瓶颈
数据库·sql·性能调优·金仓数据库·kes·标量子查询·数据库内核
数据与后端架构提升之路7 天前
深度学习性能调优全景指南:数据、计算、显存、通信四大瓶颈的破局之道
深度学习·gpu·性能调优
测试19987 天前
性能测试方案设计的方法和思路
自动化测试·软件测试·测试工具·jmeter·测试用例·压力测试·性能测试
安畅检测齐鲁物联网测试中心8 天前
信创产品性能测试怎么做才能通过验收
性能测试·信创产品·验收标准·业务负载·混合测试
twc82911 天前
从架构视角梳理全链路压测的核心业务链路
java·大数据·软件测试·架构·性能测试·全链路压测
twc82914 天前
全链路压测的环境复杂性:网络架构、应用架构与性能影响因素全解析
网络·软件测试·架构·性能测试·全链路压测
twc82914 天前
全链路压测铺底数据:从表链路追踪到数据脱敏的完整方法论
软件测试·性能测试·全链路压测