每周读书与学习是由清华大学出版社出版的《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语言非常的类似。
访问修饰符 返回值类型 方法名(参数列表){
// 方法体,通常包括可执行的代码块
return 返回值;
}
在方法的语法规则中,通常需要包括:
- 访问修饰符:用于定义该方法的访问权限,通常可以是public、private、protected或者不指定也可以,其中
- public:表示该方法是公共的,在任何地方都可以被调用。
- private:表示该方法是私有的,只能在本类内部使用。
- protected:表示该方法是受保护的,只能在同一个package(通俗说就是目录)或者子类中使用。
- 返回值类型:指定方法返回值的数据类型,可以是基本数据类型、对象类型或者定义为void(表示该方法不会有返回值)。
- 方法名:每个方法都需要定义一个名称,用于标识方法的唯一性。
- 参数列表:方法的参数,可以是多个参数,参数之间用逗号分隔,每个参数中需要包括参数的类型和参数名称。
- 方法体:方法的具体实现代码块。
- 返回值:方法执行完毕后返回的结果,如果方法的返回值类型为void,则无需提供任何返回值,返回值通过return关键字进行返回。
如下示例定义了一个简单的两个整数相加的方法add,该方法接收参数a和b,并且a和b都必须为整型,方法返回a和b相加之后的值。
public int add(int a,int b){
return a + b;
}
该示例在BeanShell中的运行结果如下图所示,从图中可以看到,该方法被定义后,调用该方法可以将两个整数相加,并且返回相加的结果值。
2、异常处理
在编程语言中,异常是在程序执行过程中可能发生的不正常情况。当异常发生时,程序的正常流程会被打断,而异常处理就是为了应对这种异常的情况而采取的行动。异常处理能够帮助我们识别和处理错误,保证程序的健壮性和可靠性,在BeanShell脚本语言中,同样也支持异常处理。
通常来说异常处理是任何编程语言中都非常重要的一部分,异常处理能够帮助我们在程序执行过程中捕获和处理可能发生的错误,Beanshell是一门基于Java的脚本语言,因此它继承了Java的异常处理机制,在该脚本语言中,可以使用Java 一样的try-catch语法来处理异常,如下所示示例。
try {
// 执行时可能会抛出异常的代码块
int result = 100 / 0;
} catch (Exception e) { // 对异常进行捕获
//对异常进行处理,比如直接打印出该异常
print("cause Exception:" + e);
}
在上述代码块中,try语句块中的代码进行了一个简单的除法运算,但是由于被除数为0,在执行时,肯定会出现异常,所以在catch语句块中,使用了print方法来输出了异常的信息,上述代码执行结果如下,从中可以看到,抛出了java.lang.ArithmeticException,而catch语句块中精准的捕获了该异常,通过输出异常信息的方式,对该异常进行了处理。
由于在异常处理时,会涉及到代码块中的代码执行会因为异常被打断,导致抛出异常之后的代码语句可能不会被执行到,因此在try-catch语法中,还可以加上finally 关键字来保障不管是否发生了异常,都会最终执行必须要执行的代码语句,如下所示。
try {
// 执行时可能会抛出异常的代码块
int result = 100 / 0;
print(result); //由于上面的代码会产生异常,所以这行代码将不会执行。
} catch (Exception e) { // 对异常进行捕获
//对异常进行处理,比如直接打印出该异常
print("cause Exception:" + e);
} finally {
print("exec end");
};
执行结果如下图所示,从图中可以看到,由于执行过程中抛出了异常,导致print(result);这行代码不会被执行,但是使用finally关键字处理的代码语句print("exec end"); 在发生异常后,还是会被执行。
3、本次学习总结
本次主要是介绍Bean Shell 脚本语言的基础语法中的函数和方法以及异常处理,基础语法是学习任何一门开发语言的基础,在每一门开发语言中,都会有函数和方法以及异常处理,通过本小节的学习,需要掌握这些开发语言内部的函数和方法以及异常处理。
出处 :本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书