Jmeter介面測試-MD5加密-請求驗籤(完整流程)
第一部分:先準備好Jmeter
1.在開始編寫指令碼之前,先要確保你的Jmeter能夠正常執行。若你還沒有安裝Jmeter,可參考以下方法:
A.Jmeter需要java執行環境,所以需要下載JDK,JDK下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
(最好使用 JDK 8 以上的版本,上述連結下可以下載最新的 JDK 版本)
B.安裝JDK,請參考百度教程:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
(注意java環境變數一定要配置正確)
C.下載安裝Jmeter
Jmeter下載地址:http://jmeter.apache.org/download_jmeter.cgi
Jmeter安裝流程(參考百度教程):https://jingyan.baidu.com/article/acf728fd68e7bef8e510a3cb.html
(注意Jmeter5.0版本的需要要配置環境變數,且要JDK 8 及以上才行)
D.引入MD5加密所需要的jar包。該jar包的名字是:commons-codec-1.9.jar,
Jmeter本身就有MD5加密的功能,但是需要該jar包,可以檢視Jmeter安裝路徑下的lib資料夾在有沒有這個jar包:D:\apache-jmeter-5.0\apache-jmeter-5.0\lib
如果沒有的話,網上下載一個放到lib資料夾下就OK了。
E.永久漢化Jmeter。
找到Jmeter安裝路徑下的jmeter.properties:D:\apache-jmeter-5.0\apache-jmeter-5.0\bin\jmeter.properties
用編輯器開啟(右鍵用記事本開啟也可以):找到 #language=en ,在下面新增:language=zh_CN 儲存並重啟Jmeter
第二部分:編寫MD5加密-請求驗籤的指令碼
1.編寫該指令碼需要新建的東西如下:
A.新增一個執行緒組:測試計劃——新增——執行緒(使用者)——執行緒組
B.執行緒組下新增一個 前置處理器 BeanShell PreProcessor:執行緒組——新增——前置處理器——BeanShell PreProcessor
(BeanShell PreProcessor 主要是用來完成加密字串的拼接和MD5 加密)
C.執行緒組下面新增一個 HTTP資訊頭管理器 :執行緒組——新增——配置元件——HTTP資訊頭管理器。
用於設定請求資訊頭裡面的引數。
D.執行緒組下新增一個 HTTP請求:執行緒組——新增——取樣器——HTTP請求。
E.最後新增 察看結果樹 和 聚合報告 :執行緒組——新增——監聽器—— 察看結果樹 / 聚合報告
察看結果樹的目的是用於:檢視我們的請求是否訪問成功,已經請求內容和返回內容是否正確
聚合報告:主要是用於統計總的請求數,平均請求時間,響應時長,Err 數,Err率等資料。
2.新建指令碼的模型成功後,開始填充指令碼的內容,完成指令碼MD5加密功能。
A.在前置處理器 BeanShell PreProcessor新增如下內容:
(Jmeter 5 自帶 org.apache.commons.codec.digest jar,所以只需要匯入就可以了)
// 匯入MD5加密需要用到的jar包。
import org.apache.commons.codec.digest.DigestUtils;
// 宣告你需要拼接的字串
String requestTime = "${__time(,)}"; //生成時間戳
String appVersion ="XXX";
String clientType ="XXX";
String productId ="XXX";
String source ="XXX";
//拼接需要加密的字串
String str = "appVersion="+appVersion+"&clientType="+clientType+"&productId="+productId +"&requestTime="+requestTime+"&source="+source+"istarkid2018";
// 加密已拼接的字串
String sign = DigestUtils.md5Hex(str);
vars.put("signStr",sign.toString()); //把生成的signStr提供給beanshell外部元件引用
vars.put("requestTime",requestTime.toString()); //把生成的時間戳提供給beanshell外部元件引用
vars.put("appVersion",appVersion.toString()); //把生成的版本號提供給beanshell外部元件引用
vars.put("clientType",clientType.toString()); //把生成的clientType提供給beanshell外部元件引用
生成時間戳,方法較多,不同公司所用的時間戳生成方法不同,這點需要詢問開發具體的生成規則,以下提供幾種生成規則:
生成十三位時間戳:${__time(,)}
生成十位時間戳:${__time(/1000,)}
生成當前日期,精確到天時間戳:${__time(yyyy-MM-dd,)}
生成當前日期,精確到秒時間戳:${__time(YMDHMS,)}
B.HTTP資訊頭輸入介面驗籤需要驗證的所有引數:例如:token,singa等。根據具體情況傳入
C.在HTTP請求裡面,新增:伺服器IP,請求方法,介面路徑,介面引數等值。
第三部分:執行指令碼
1.點選:選單欄上的綠色按鈕執行,第一次新建的測試計劃會提示你先儲存,把已經建好的測試計劃儲存到任意位置就可以了
2.設定併發數量,進行壓測;
3.設定好後,點選執行,進行壓測,壓測完成後,可以在報告裡面檢視壓測結果。