一、在測試過程中經常會遇到一些業務邏輯處理需要,單純的線程設置不能滿足,這時候就要使用BeanShell編寫一定的腳本
前置處理器:BeanShell PreProcessor,主要接口請求前做一些參數化及邏輯處理
后置處理器:BeanShell PostProcessor ,自己寫腳本提取參數,或者使用正則表達式
本人主要由於接口加密,從而需要使用BeanShell做一些接口參數化

二、接口加密需要開發提供的Jar包,放到/Users/wuxi/Documents/apache-jmeter-3.2/lib/ext里面
從而可以在BeanShell使用該加密方法進行邏輯處理
三、參數的使用,BeanShell里面參數變量引用來源
1、測試計划內變量,以后變量可以直接使用${url},${domain},可以在很多組件中直接使用

2、CSV Data Set Config中取值,一樣使用${mobile}去使用,多個參數可以使用,分開

3、正則表達提取的變量,也可以直接使用${token},${id}去使用
正則提取跟LR的關聯差不多,主要是左右邊界獲取中間所要提取的值

正則表達式:一般是用(.+?)全部獲取
模版:$1$ 獲取第一個匹配的,如果確認接口就返回一個該字段 $1$.匹配數字1,即可
如果返回很對該字段,則$-1$ ,匹配數字-1 來獲取,${XXXX_matchNr}來獲取整個獲取字段個數
變量提取最好使用Debug Sampler 來確認下變量名是否提取的是自己所要的

4、BeanShell 變量的使用,將需要引用的變量寫在parameters中

${id}可以直接寫入string內部,jmeter會優先識別該變量,"${id}"也能獲取到變量
也可以String token = vars.get("token");把jmeter參數轉化為 java 變量,再進行字符串拼接
vars.put("user",user); //Bean shell的變量存到jmeter中,勾選編碼

對於非法字符進行編碼:在chrome中可以調試,encodeURIComponent(),dencodeURIComponent()