詳解Jmeter中的BeanShell指令碼

2022-09-24 12:45:10 字數 1707 閱讀 1693

在利用jmeter進行介面測試或者效能測試的時候,我們需要處理一些複雜的請求,此時就需要利用beanshell指令碼了,beanshell是一種完全符合j**a語法規範的指令碼語言,並且又擁有自己的一些語法和方法,所以它和j**a是可以無縫銜接的。beanshell由於內建了一些特有的變數,沒法在一些整合**工具上去除錯。

學了j**a的一些基本語法後,就可以來在jmeter中寫程式設計客棧寫beanshell指令碼了。

直接**程組下建立乙個beanshell取樣器,然後在指令碼區寫j**a**:

寫了個迴圈,執行後在這裡看不到,要在jmeter.bat的windows批處理裡看到:

jmeter在它的beanshell中內建了變數,使用者可以通過這些變數與jmeter進行互動:

1、log:寫入資訊到jmeter.log檔案,使用方法:log.info(「hahahahuxwgimwuaahahah」);

2、vars:操作jmeter變數,這個變數實際引用了jmeter執行緒中的區域性變數容器(本質上是map),它是測試用例與beanshell互動的橋梁,常用方法:

a) vars.get(string key):從jmeter中獲得變數值

b) vars.put(string key,string value):資料存到jmeter變數中

新增日誌檢視:

使用vars:

**程組2裡面去訪問vars變數,輸出null,可見vars確實是個區域性變數:

3、props:操作jmeter屬性,該變數引用了jmeter的配置資訊,可以獲取jmeter的屬性,它的使用方法與vars類似,但是只能put進去string型別的值,而不能是乙個物件。對應於j**a.util.properties。

props的全域性性:

4、prev:獲取前面的sample返回的資訊,常用方法:

a)getresponsedataasstring(): 獲取響應資訊;

b) ge程式設計客棧tresponsecode(): 獲取響應**;

先發個介面請求,然後prev獲取返回資訊:

自定義函式:使用j**a自定義函式來處理特定的邏輯,結合beanshell的內建物件進行變數的訪問,提高指令碼的靈活性。

寫了個自定義的靜態函式,實現的是整數的累加:

發現報錯,原來是函式的返回值是int型別的,而log.info()裡面要的是string。這裡把int型別的result轉換為string有三種方法:

1、string.valueof(result)

2、integer.tostring(result)

3、result+""

任選乙個即可。

引用外部j**a檔案:在beanshell中通過source("**路徑")方法引入j**a檔案,然後呼叫方法和j**a一樣,new乙個物件,通過

物件呼叫裡面的方法。

寫個靜態方法,儲存為test.j**a檔案,放在d盤下:

然後在beanshell裡引用test.j**a,呼叫函式,傳參100,日誌輸出:

首先打包:

1、把當前的test作為執行檔案,先執行一遍。

2、右鍵專案名--export--runnable jar file.

3、在launch找到執行檔案,放到www.cppcns.comjmeter安裝目錄下lib/ext下。

4、在jmeter的beanshell裡導包,呼叫方法。

這裡我執行報錯了,說方法找不到,摸索良久後嘗試在測試計畫裡新增一下jar包,結果成功了。

Spring中Beans的自動裝配概述

以下內容引用自 在之前的做法上會參照這樣的順序 1 使用元素宣告bean,2 並使用xml配置檔案中的和元素注入。但現在可以將以往的做法公升級,比如spring容器可以在不使用和元素的情況下在協作bean之間實現自動關聯,這有助於減少為大型基於spring的應用程式編寫的xml配置數量。自動裝配模式...

Spring中Beans的自動裝配概述

以下內容引用自 在之前的做法上會參照這樣的順序 1 使用元素宣告bean,2 並使用xml配置檔案中的和元素注入。但現在可以將以往的做法公升級,比如spring容器可以在不使用和元素的情況下在協作bean之間實現自動關聯,這有助於減少為大型基於spring的應用程式編寫的xml配置數量。自動裝配模式...

JMeter 元件詳解

if控制器內部使用j ascript 來評估條件,可惜jmeter中的j ascript解釋非常慢 官方建議使用函式jexl3 或者 groovy 函式以動態改善if控制器效能,於是jmeter 3.4起預設勾選 interpret condition as variable expression ...