7.2 JMeter内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下(JMeter文档并没有对该部分内容进行详细讲解,这里也会说明他们分别对应于JavaDoc中的哪个类):
vars:这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),因此可以通过put和get方法访问JMeter中的变量。这个变量是所有内置变量中有用的,它是测试用例与BeanShell交互的桥梁。对应于org.apache.jmeter.threads.JMeterVariables
props:该变量引用了JMeter的配置信息,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
ctx:该变量引用了当前线程的上下文,理论上通过这个东西我们几乎可以控制当前线程相关的一切,不过这要求使用者非常熟悉JMeter的源码。对应于org.apache.jmeter.threads.JMeterContext。
7.3 在BeanShell中使用Java类
有的时候我们希望发送数个请求,而这些请求的内容是通过一个Java类来实现的,这时需要让JMeter来调用这个Java类,而的途径是通过BeanShell。
为了能够加载Java类,我们首先需要在Test Plan中添加自定义Java类所在的Class Path,然后可以在BeanShell中import这个Java类,后再将获得的内容放入vars变量中,这样可以在其他地方通过${...}的方式获取该变量的信息了。
例如,创建了一个com.linhao.A类在/root/Java文件夹下,该类有一个方法hello()返回一个"Hello World"字符串,那么如果想在请求中使用这个方法返回的字符串,则进行如下操作:
首先在Test Plan下添加ClassPath为/root/Java
然后在请求前添加一个BeanShell Sampler并写入如下代码:
view plaincopy to clipboardprint?
import com.linhao.A;
vars.put("word", A.hello());
import com.linhao.A;
vars.put("word", A.hello());
后在需要使用该字符串的地方写${word},这样终这个域将被替换为Hello World
7.4 JMeter下BeanShell的调试
BeanShell也是代码,应此也可能会有错误,而JMeter又是一个图形界面的程序(也有命令行模式,但并不变于在设计用例阶段使用),因此很多时候用例的设计者并不能确定BeanShell中某些变量是否正确。一个简单的办法是使用BeanShell创建一个对话框,然后将需要检测的变量值显示在对话框中。代码如下:
view plaincopy to clipboardprint?
JFrame. frame. = new JFrame( a ); //a is a variable to be checked
frame.setVisible(true);
JFrame. frame. = new JFrame( a ); //a is a variable to be checked
frame.setVisible(true);
这样当测试执行到这里的时候可以知道变量a的值了。
虽然BeanShell很强大,但是它毕竟是一个脚本语言,因此如果测试参数的生成逻辑很复杂,则还是应该把主要逻辑放在Java类中,然后让BeanShell去调用,BeanShell只用来处理一些较为简单的操作
8、Jmeter使用之常用函数介绍
"_Random"函数
功能:这个函数是从某个数字段随机读取数据替换参数,可以利用在测试需要添加多条数据记录而且某些字段需要性的测试脚本中,随机生成的参数是数字
作用:可以用来实现参数化http请求发送的参数,使得在Jmeter运行时参数化了的参数在每个线程去不同的随机数。如果某个参数每次发送请求的时候不能重复才可以存储到数据库中,则用这个功能十分方便。
使用:
1.点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择“_Random”。
2.配置“_Random”函数,第一个参数是“一个范围内的小值”,即所要取的随机数的小值,我们设置成1;第二个参数是“一个范围内的大值”,即所要取的随机数的大值,我们设置成100;第三个参数是“函数名称”,即用于存储在测试计划中其他的方式使用的值,我们设置成Random。设置好上面的三个参数后,点击“生成”按钮,这样会在对话框的下面生成一个字符串“${__Random(1,100,Random)}”,在我们编写的脚本中,找到要替换的参数,把它的值换成前面生成的字符串可以了,然后每次运行的时候,这个参数会变成一个1到100之间的随机数。