一、什么是BeanShell?
BeanShell是用Java寫成的,一個小型的、免費的、可以下載的、嵌入式的Java源代碼解釋器,JMeter性能測驗工具也充分接納了BeanShell解釋器,封裝成了可配置的BeanShell前置和后置處理器,分別是
BeanShell Preprocessor(BeanShell預處理程式)和BeanShell Postprocessor(BeanShell后置處理程式),能通過撰寫代碼的方式更好的處理介面性能測驗中的請求前置入參和后置資料的獲取等等,BeanShell配置原件在JMeter的位置如下圖:
BeanShell Preprocessor(BeanShell預處理程式)

BeanShell Postprocessor(BeanShell后置處理程式)

二、BeanShell Preprocessor(BeanShell預處理程式)的基本應用
在進行介面性能測驗時,往往經常用到的場景就是每次api請求的入參都是變化的,比如有些介面請求引數有時間戳、或者很多時候后臺為了保證介面請求的安全性,需要請求攜帶sign入參甚至這個sign是通過加密演算法得到的,也就是說,這樣的介面基本都是每次請求前需要構建不同的入參資料,因此在對這樣的介面做并發測驗時就需要引數化請求入參,BeanShell Preprocessor(BeanShell預處理程式)這樣的前置處理器就可以很方便構建引數化入參,看看如下實體:可以引數化時間戳、引數化sign簽名,
添加BeanShell Preprocessor前置處理器,在腳本編輯框中編輯如下代碼:
// 匯入MD5加密需要用到的jar包,
import org.apache.commons.codec.digest.DigestUtils;
// 宣告你需要拼接的字串
//String requestTime = "1680089472000"; //生成時間戳
String requestTime = "${__time(,)}"; //生成時間戳
log.info("=====請求時間戳:=====>>"+requestTime);
String yan = "N[8HXx!57Ivy%)#R";
//拼接需要加密的字串
String str = yan + requestTime;
// 加密已拼接的字串
String sign = DigestUtils.md5Hex(str);
log.info("=====sign簽名:=====>>"+sign);
vars.put("sign",sign); //設定變數,將md5加密后的值傳遞給變數sign
vars.put("requestTime", requestTime); //將時間傳遞給變數requestTime
如上的BeanShell腳本中,定義了兩個字串:requestTime 和sign,設定了它們的取值,其中requestTime的值是${__time(,)},該函式可以按當前時間生成時間戳,sign的值是進行了md5加密后生成了一個32位小寫的字串,并將值傳給變數requestTime 和sign用于后續介面請求引數化,然后腳本中也加入了日志列印,介面請求后可以在日志查看中輸出引數日志資訊
效果如下圖:

這樣就完成了BeanShell預處理腳本的撰寫,然后我們將腳本中的requestTime 和sign引數引入介面請求中,如下圖:

最后,BeanShell預處理腳本以及請求引數化配置好后,我們運行JMeter看看請求效果和日志列印,請求2次介面:

可以看到每次請求的時間戳和sign值都不一樣,請求回應結果都是回傳正確的,這樣就完成了jmeter并發請求每次都是不一樣的請求入參,
三、BeanShell Postprocessor(BeanShell后置處理程式)的基本應用
BeanShell Postprocessor(BeanShell后置處理程式)其實就是通過腳本來獲取回應相關的資料,用于做一些和其他介面有互動的場景,如介面A的回應結果的某個欄位用于介面B的入參的時候,就可以通過BeanShell Postprocessor(BeanShell后置處理程式)來提取到介面A的回應結果的資料,然后引數化傳遞給介面B或者將提取的資料寫入檔案等,當然JMeter也提供了類似正則運算式提取器、json提取器等后置處理元件來提取回應或者請求資料,BeanShell Postprocessor(BeanShell后置處理程式)可能更方便通過腳本來自定義獲取想要的資料,
添加BeanShell Postprocessor后置處理器,比如我們想要獲取請求后的回應狀態碼、回應頭回應體等資料都是可以的,在腳本編輯框中編輯腳本,如下圖:

這樣我們就可以得到回應狀態碼、回應體、回應頭等資料,用于后續介面回應斷言等測驗驗證,運行結果如下:

如上就是BeanShell Postprocessor后置處理器的基本應用了,當然還可以撰寫更加適用于測驗場景的腳本和邏輯滿足測驗需要,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/549891.html
標籤:其他
