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類
有的時候我們希望發(fā)送數個請求,而這些請求的內容是通過一個Java類來實現的,這時需要讓JMeter來調用這個Java類,而的途徑是通過BeanShell。
為了能夠加載Java類,我們首先需要在Test Plan中添加自定義Java類所在的Class Path,然后可以在BeanShell中import這個Java類,后再將獲得的內容放入vars變量中,這樣可以在其他地方通過${...}的方式獲取該變量的信息了。
例如,創(chuàng)建了一個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創(chuàng)建一個對話框,然后將需要檢測的變量值顯示在對話框中。代碼如下:
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);
這樣當測試執(zhí)行到這里的時候可以知道變量a的值了。
雖然BeanShell很強大,但是它畢竟是一個腳本語言,因此如果測試參數的生成邏輯很復雜,則還是應該把主要邏輯放在Java類中,然后讓BeanShell去調用,BeanShell只用來處理一些較為簡單的操作
8、Jmeter使用之常用函數介紹
"_Random"函數
功能:這個函數是從某個數字段隨機讀取數據替換參數,可以利用在測試需要添加多條數據記錄而且某些字段需要性的測試腳本中,隨機生成的參數是數字
作用:可以用來實現參數化http請求發(fā)送的參數,使得在Jmeter運行時參數化了的參數在每個線程去不同的隨機數。如果某個參數每次發(fā)送請求的時候不能重復才可以存儲到數據庫中,則用這個功能十分方便。
使用:
1.點擊Jmeter的“選項”,選擇“函數助手對話框”(或者使用快捷鍵“Ctrl+F”),在“選擇一個功能”的下拉框中選擇“_Random”。
2.配置“_Random”函數,第一個參數是“一個范圍內的小值”,即所要取的隨機數的小值,我們設置成1;第二個參數是“一個范圍內的大值”,即所要取的隨機數的大值,我們設置成100;第三個參數是“函數名稱”,即用于存儲在測試計劃中其他的方式使用的值,我們設置成Random。設置好上面的三個參數后,點擊“生成”按鈕,這樣會在對話框的下面生成一個字符串“${__Random(1,100,Random)}”,在我們編寫的腳本中,找到要替換的參數,把它的值換成前面生成的字符串可以了,然后每次運行的時候,這個參數會變成一個1到100之間的隨機數。