前言

Beanshell 為一個輕量級 Java interpreter,可以完整 Java 語法動態執行、片段代碼執行。JMeter 功能已經相當齊全,但我們仍能透過 Beanshell 撰寫各種客製的前處理、取樣與後置處理,製作符合各種情境的腳本。如同撰寫 Java 應用程式,在JMeter內能匯入各種套件使用,我們也將介紹如何匯入 jar 檔,在Beanshell 撰寫進行簡易的 json 解析。本篇主要內容為:
1. BeanShell 取樣
2. JAR 匯入與使用
本篇文章若有錯誤或任何建議,請各位先進不吝指教,謝謝。



介紹

BeanShell 取樣

在 JMeter,我們能增加三種有關Beanshell 的操作,分別是 Beanshell 前置處理器、後置處理器與取樣。

在第三篇隨機資料的範例中,我們簡單介紹 Beanshell 內接收 variable 與 property,並且列印出結果。使用方式方別為:
Step 1. 於執行緒群組點選右鍵,新增 BeanShell 取樣



Step 2. 寫入程式如下
vars.put("UserName","Duran");
var userFromVars = vars.get("UserName");
print(userFromVars);

props.put("UserName","Ina");
var userFromProp = props.get("UserName");
print(userFromProp);

Step 3. 執行結果如下

Step 4.就像是撰寫 Java 應用程式,您可以撰寫if/else, for loop, 與簡單的運算。撰寫程式碼如下
for(int i = 0; i < 10; i++){
    if(i % 2 == 0){
       print("haha");
    }
}

Step 5. 執行結果如下






JAR 匯入與使用

雖然 JMeter 已經有 JSON 處理器,但我們也能透過匯入jar檔案,在 Beanshell 內進行JSON解析。
Step 1. 首先我們到網站先下載 minimal-json-0.9.4.jar 檔案到 jmeter\lib 資料夾下


Step 2. 開啟JMeter,撰寫下列範例程式,並執行。
import com.eclipsesource.json.JsonObject;

String jsonString = "{\"boolean\": true, \"name\": \"Duran\", \"age\": 123, \"string\": \"Hello World\", \"array\": [1,2,3]}";
JsonObject json = JsonObject.readFrom(jsonString);
print("JSON String:" + jsonString);
print("Name:" + json.get("name").asString());


Step 3. 通常我們會用於接收 response 並解析 (BeanShell後置處理器),如下範例:
import com.eclipsesource.json.JsonObject;

String jsonString = prev.getResponseDataAsString();
JsonObject json = JsonObject.readFrom(jsonString);
print("token:" + json.get("authtoken").asString());


我們透過prev.getResponseDataAsString()取得 Response 並作為字串,再透過 JsonObject.readFrom() 方法轉成 JsonObject,方便我們進行進階操作。




上一篇:JMeter Wait, Loop, and Random 等待、迴圈與隨機數
目錄:請點我
下一篇:JMeter Preprocessor and  Postprocessor 前置處理器與後製處理器