每周读书与学习->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的基础语法之变量与数据类型

1、运算符

Beanshell脚本语言支持所有Java语言以及其他编程语言中都支持的的运算符。

以下是beanshell支持的运算符:

  • 算术运算符:+、-、*、/、%(取模运算)
  • 比较运算符:==、!=、>、>=、<、<=
  • 逻辑运算符:&&、||、!
  • 赋值运算符:=、+=、-=、*=、/=、%=

比如数学运算符通常包括加法、减法、乘法、除法、取模运算等。如下示例中,展示了BeanShell中常用的数学运算符的操作。

a =15;

b = 5;

sum = a + b; // 相加

difference = a- b; // 相减

product = a * b; // 相乘

quotient = a / b; // 相除

执行结果如下图所示,从图中可以看到,BeanShell中可以完成常用的数学运算符的操作。

2、控制流语句

控制流语句通常用于控制代码的运行逻辑,比如满足什么条件才能执行对应的代码, 在 BeanShell 中的控制流语句的语法与Java语言非常的类似,BeanShell中常见的控制流语句包含如下:

  • 条件语句:通常包含if和switch等,用于根据不同的条件执行不同的代码块。
    • If语句:if语句的基本语法如下所示,和Java语法非常类似。

if (condition1) {

// 当满足condition1条件时执行该代码块

} else if (condition2) {

// 当满足condition2条件时执行该代码块

} else {

// 当以上条件都不成立时执行该代码块

}

例如如下示例,首先定义了a和b两个变量,然后通过if语句来判断变量满足不同的值来输出不同的结果。

int a=1; //定义了变量a

int b=2; //定义了变量b

if (a==1){

print("when a=1,exec...");

} else if (b==2) {

print("when b=2,exec...");

} else {

print("exec others...");

}

执行结果如下图所示,从图中可以看到输出和结果和代码预期中的if语句判断是可以相匹配的。

在if语句中,如果只有一个条件需要判断,可以省略else if和else部分。

    • Switch语句: switch语句的基本语法如下所示,同样也是和Java语法非常类似。

switch (expression) {

case valueA:

// 当expression的值等于valueA时执行该代码块

break;

case valueB:

// 当expression的值等于valueB时执行该代码块

break;

......

default:

// 当expression的值都不匹配时执行该代码块

break;

}

例如如下示例,首先定义了expression变量,然后通过switch语句来判断变量满足不同的值来输出不同的结果。

String expression = "A";

switch (expression) {

case "A":

print("exec A");

break;

case "B":

print("exec B");

break;

default:

print("exec default");

break;

};

执行结果如下图所示,从图中可以看到输出和结果和代码预期中的switch语句判断是可以相匹配的。

在switch语句中,每个case后面需要跟上break语句,否则会继续执行后面的case语句代码块。

  • 循环语句:循环语句的基本语法如下所示,同样也是和Java语法非常类似,循环语句通常包括for循环、while循环、foreach循环、do-while循环等。
    • for循环:如下示例为for循环的语法规则,在该for循环中,定义了一个变量i来控制循环总共循环10次,每次循环时,输出变量i的值。

for(int i = 0; i < 10; i++) {

print("this is the " + i + " cycle");

}

该示例在BeanShell中的运行结果如下图所示,从图中可以看到运行的结果和预期的结果一致,每次循环时,都正确的输出了变量i的值。

    • while循环:如下示例为while循环的语法规则,该while循环可以实现上面for循环代码块同样的效果,首先定义了一个变量i,通过while中的条件来控制,该while循环在满足条件时,一直循环执行,当不满足条件时,循环就执行结束。

int i = 0;

while (i < 10) {

print("this is the " + i + " cycle");

i++;

}

该示例在BeanShell中的运行结果如下图所示,从图中可以看到运行的结果和预期的结果一致。

    • do-while循环:如下示例为do-while循环的语法规则,do-while循环的语法规则和while循环的语法规则非常的类似,仅仅是将while中的条件判断放到的代码块的最后面,如下do-while循环示例实现了上面while循环中同样的效果。

int i = 0;

do{

print("this is the " + i + " cycle");

i++;

} while (i < 10);

该示例在BeanShell中的运行结果如下图所示,从图中可以看到运行的结果和预期的结果一致。

    • foreach循环:如下示例为foreach循环的语法规则,在该示例中,定义了一个整型的数组变量numbers,在该数组中,总共有5个元素,通过foreach循环的方式,分别输出数组5个元素的值。

int[] numbers = {1, 2, 3, 4, 5};

for(int number : numbers) {

print("number is: " + number);

};

该示例在BeanShell中的运行结果如下图所示,从图中可以看到运行的结果和预期的结果一致,分别输出了数组中5个元素的值。

  • 跳转语句:如下示例为跳转语句的语法规则,跳转语句通常需要通过continue关键字来控制语句的跳转,比如如下示例中的for循环中,定义了一个变量i,当i的值为偶数时,通过continue关键字来跳转,当为偶数时,直接进行下一次循环,只有当为奇数时,才会输出i的值。

for(int i = 0; i < 10; i++) {

if(i % 2 == 0) {

continue;

}

print(i + " is an odd number");

}

该示例在BeanShell中的运行结果如下图所示,从图中可以看到运行的结果和预期的结果一致,只有i为奇数时,才会被输出。

3、本次学习总结

本次主要是介绍Bean Shell 脚本语言的基础语法中的运算符和控制流语句,基础语法是学习任何一门开发语言的基础,在每一门开发语言中,都会有变量与数据类型,通过本小节的学习,需要掌握这些开发语言内部的变量与数据类型。

出处 :本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书

相关推荐
安畅检测齐鲁物联网测试中心13 小时前
国产化项目验收测评,如何才算真正过关?
性能测试·兼容性测试·安全测试·国产化项目·验收测评
云边有个稻草人17 小时前
金仓数据库标量子查询消除:解决复杂SQL性能瓶颈
数据库·sql·性能调优·金仓数据库·kes·标量子查询·数据库内核
qq_452396231 天前
第十四篇:《JMeter插件扩展:自定义函数与第三方插件》
开发语言·python·jmeter
qq_452396232 天前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
qq_452396233 天前
第十一篇:《性能压测基础:JMeter线程模型与压测策略设计》
java·开发语言·jmeter
沫沫-小白3 天前
JMeter 上传固定文件时,如何修改 Content-Disposition 的 filename
jmeter
qq_452396233 天前
第六篇:《JMeter逻辑控制器:循环、条件和交替执行》
android·java·jmeter
qq_452396236 天前
第四篇:《JMeter参数化:CSV数据文件与用户变量》
jmeter
qq_452396236 天前
第五篇:《JMeter关联:提取动态数据并传递给后续请求》
jmeter
数据与后端架构提升之路7 天前
深度学习性能调优全景指南:数据、计算、显存、通信四大瓶颈的破局之道
深度学习·gpu·性能调优