Jmeter是進行介面測試的一款非常主流的工具,但絕大部分測試工程師,對於Jmeter介面測試指令碼整理都是一知半解的。今天這篇文章,就以一個金融專案中介面為例,透過簡單5步,教大家如何0程式碼編寫Jmeter介面自動化指令碼!
0、金融專案介面
1、登入介面資訊
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic3.zhimg.com/v2-63a984035025623ca3319bb2c5eb8e86_r.jpg)
2、新增投資專案介面資訊
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-9f0a43b5f6af045d1b578e345a3fc995_r.jpg)
介面說明:
請求頭中Authorization傳值Bearer Token,Token是登入成功後響應結果中獲取。
請求引數中member_id,是指登入賬號的id,也是從登入成功後響應結果中獲取。
1、資料驅動ddt
一個介面,需要覆蓋正常、異常多種情況的用例資料進行測試,從而得到不同的輸出結果。你是怎麼測試呢?是不是每測試一種情況就修改一次傳參的資料呢?如果不想每次都修改請求,但是又要覆蓋到多組測試資料的測試執行。Jmeter有提供很好的解決方案:透過CSV檔案資料配置 + 迴圈控制器這2個元件實現。
1) 以登入介面為例,先把需測試的各種正常/異常測試資料,整理到CSV檔案中,如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic4.zhimg.com/v2-1bb7bb52c336942dc2414d3ceafbd1c7_r.jpg)
2)開啟Jmeter, 新建執行緒組,新增HTTP請求頭管理器並設定好請求頭資訊。右鍵邏輯控制器-迴圈控制器,迴圈次數設定為CSV檔案中的需執行的用例條數。
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-e3b56222c0de0ed2e3db029ae69a02e5_r.jpg)
3)在迴圈控制器下,新增配置元件-CSV資料檔案配置,用於讀取CSV檔案中的每條測試用例資料,配置如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-3eeecb2441e4584efe5dbfd3e68b34d1_r.jpg)
4)在迴圈控制器下,新增HTTP請求,修改名稱,登入請求設定如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic1.zhimg.com/v2-b1c593dcdc09f83b00d3fb682d11eff0_r.jpg)
5)點選執行,可以看到依次執行CSV用例中的每條用例,並輸出對應結果
![動圖封面](https://pic4.zhimg.com/v2-f727e85a9887c62bc56bda773f86e8ff_b.jpg)
2、測試結果校驗
以上登入的每條用例執行完後,需要去確認執行結果的正確性!你是人工點開每一條用例的介面返回結果,憑肉眼判斷嗎?那樣就太費時間了,Jmeter有提供很多種自動判斷用例執行是否符合預期的機制— 斷言機制。Jmeter可透過: 響應斷言 + CSV資料驅動 實現。
1)右鍵迴圈控制器-斷言-新增響應斷言,並設定斷言內容如下
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic4.zhimg.com/v2-01f1af27dc8190c401261ab929f3be47_r.jpg)
2) 點選執行,可以看到執行結果。請求顯示綠色--表示斷言成功;請求顯示紅色-表示斷言失敗,用例執行失敗。點開可以看到斷言失敗的原因。
![動圖封面](https://pic3.zhimg.com/v2-5a9e84ca867423dd59d89866a0c65302_b.jpg)
3、介面依賴處理
如果我們要再去測試“新增投資專案”這個介面,跟登入一樣,測試資料準備到CSV檔案中,然後也是自動迴圈去讀取CSV檔案中測試用例,去執行!
但會存在問題: 新增投資專案這個介面要想執行成功,必須依賴到登入狀態,需要從登入成功的響應結果中提取需要的token、使用者id值。
如何解決? 將登入介面作為前置操作,登入只執行1次,然後透過後置處理器-json提取器獲取到token、id的值;再傳遞給新增投資專案的這個介面使用。
1)指令碼結構如下,新建登入請求作為前置,在登入請求下新增json提取器,頁面設定如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-aba71aa40414aa5126e7ef7674011dc9_r.jpg)
2)將提取到的token值,傳遞到下個介面的請求頭使用,在新增投資專案介面下方新增HTTP資訊頭管理器,引用user_token變數的值
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-c3089583639c123369e316d6a4007cc1_r.jpg)
3)將提取到的使用者id,傳遞到下個介面的請求引數中,這裡分2步處理,首先在CSV檔案中的請求列資料,設定${user_id},如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic4.zhimg.com/v2-1fdbdc1015089e802f6f5b6a33254d2b_r.jpg)
然後在新增投資專案介面的http請求頁面,引用從CSV檔案中讀取的req_data變數值時,因為該值中巢狀了${user_id}變數值,因此這裡要用Jmeter自帶的__eval函式處理下。
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic1.zhimg.com/v2-bb08653fd73c922e19b6b939ee3b8db8_r.jpg)
4)點選執行,可以看到CSV中3條用例都執行成功。
![動圖封面](https://pic3.zhimg.com/v2-11bdcd8040fa5580eff9e5b1751d9ed6_b.jpg)
4、公共資料管理
很多介面請求中,會存在部分相同的請求資訊,例如環境地址。測試環境/預釋出環境/釋出環境,伺服器地址是不一樣的。對於測試來說,如果需要在不同環境下,執行同一套介面指令碼時,得一個個介面去修改伺服器地址,這是很麻煩的。那麼在Jmeter中,可以透過:自定義變數 實現高效處理。
1)新建配置元件-使用者定義的變數,設定host、port2個變數,用來儲存當前測試環境地址資訊
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic3.zhimg.com/v2-abc997c674bd167340cc691d8b2d171a_r.jpg)
2)然後在自動化指令碼的請求位置,將這2個變數進行引用,例如登入介面設定如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic1.zhimg.com/v2-dbc850ad430fa694a19de5267ec95740_r.jpg)
這樣,如果下次需要切換到預釋出環境進行測試,只需要修改使用者定義變數中的環境地址資訊即可。
5、多介面批次執行
在實際工作中,如果一個專案比較大,指令碼編寫工作是需要協同完成的。比如說你負責ABC模組介面、他負責DEF模組介面,最後如果要整合所有的介面進行批次執行怎麼處理呢?可以透過Jmeter的測試片段,分模組管理介面指令碼。一般可以一個介面一個測試片段。測試片段本身是不能直接執行的,需要透過模組控制器或include控制器才能執行。
1)右鍵新建測試片段,將登入介面的多用例執行指令碼,儲存在測試片段下;同理新增投資專案介面的多用例執行指令碼。如下:
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic2.zhimg.com/v2-1d3a16009830501adc1bdd16f9a2f631_r.jpg)
2)新建執行緒組,線上程組下新增模組控制器,選擇需要執行的測試片段;
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic4.zhimg.com/v2-9789f827df5ead42ecce5c62e66e48eb_r.jpg)
![5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!](https://pic1.zhimg.com/v2-19d5714cc7bbbefea2a6b3b09bf5c18c_r.jpg)
3)點選執行,可以看到多介面批次執行結果
![動圖封面](https://pic1.zhimg.com/v2-d112ed7b8a733f8d7a4c263bdb8bd278_b.jpg)
行動吧,在路上總比一直觀望的要好,未來的你肯定會感 謝現在拼搏的自己!如果想學習提升找不到資料,沒人答疑解惑時,請及時加入扣群:731789136,裡面有各種軟體測試+開發資料和技術可以一起交流學習哦。
最後感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,這些資料,對於【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,雖然不是什麼很值錢的東西,如果你用得到的話可以直接拿走: