每周读书与学习->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核心技术、性能测试与性能分析》一书

相关推荐
张永清7 天前
每周读书与学习->Jmeter中如何使用Bean Shell脚本(一)Bean Shell的简介与安装
性能测试·性能调优·jmeter性能测试·性能分析·性能诊断·每周读书与学习
se-tester12 天前
性能测试(Performance Testing)、压力测试(Stress Testing)和 负载测试(Load Testing)三者的区别
性能测试
Felven12 天前
国产沐创N20 100G网卡性能测试
linux·性能测试·国产100g网卡·沐创
七夜zippoe15 天前
性能测试实战:Locust负载测试框架深度指南
分布式·python·性能测试·locust·性能基准
七夜zippoe17 天前
属性测试革命:Hypothesis框架深度实战指南
python·性能测试·数据驱动·hypothesis·状态机测试
xcLeigh18 天前
基于 IoT-benchmark 的时序数据库性能测试实战:从安装到结果分析
数据库·物联网·性能测试·时序数据库·iotdb
冗量20 天前
《性能之巅》第七章:内存 读书笔记
服务器·性能优化·性能调优
冗量20 天前
《性能之巅》第八章:文件系统(File Systems)读书笔记
操作系统·性能调优
dawdo2221 个月前
自己动手从头开始编写LLM推理引擎(12)-xLLM的整体调优
llm·transformer·性能调优·推理引擎·xllm·模型执行器