Jmeter是進行接口測試的一款非常主流的工具,但絕大部分測試工程師,對於Jmeter接口測試腳本整理都是一知半解的。今天這篇文章,就以一個金融項目中接口為例,通過簡單5步,教大傢如何0代碼編寫Jmeter接口自動化腳本!
0、金融項目接口
1、登錄接口信息
2、新增投資項目接口信息
接口說明:
請求頭中Authorization傳值Bearer Token,Token是登錄成功後響應結果中獲取。
請求參數中member_id,是指登錄賬號的id,也是從登錄成功後響應結果中獲取。
1、數據驅動ddt
一個接口,需要覆蓋正常、異常多種情況的用例數據進行測試,從而得到不同的輸出結果。你是怎麼測試呢?是不是每測試一種情況就修改一次傳參的數據呢?如果不想每次都修改請求,但是又要覆蓋到多組測試數據的測試執行。Jmeter有提供很好的解決方案:通過CSV文件數據配置 循環控制器這2個元件實現。
1) 以登錄接口為例,先把需測試的各種正常/異常測試數據,整理到CSV文件中,如下:
2)打開Jmeter, 新建線程組,添加HTTP請求頭管理器並設置好請求頭信息。右鍵邏輯控制器-循環控制器,循環次數設置為CSV文件中的需執行的用例條數。
![](https://news.xinpengboligang.com/upload/keji/e42b91ee1aa0cfbe13d628c812bb14f0.jpeg)
3)在循環控制器下,添加配置元件-CSV數據文件配置,用於讀取CSV文件中的每條測試用例數據,配置如下:
![](https://news.xinpengboligang.com/upload/keji/efe48e70862a5b0618907e100b8fef7b.jpeg)
4)在循環控制器下,添加HTTP請求,修改名稱,登錄請求設置如下:
![](https://news.xinpengboligang.com/upload/keji/15aeef3b80af78e7e885cd7ab60dd652.jpeg)
5)點擊運行,可以看到依次執行CSV用例中的每條用例,並輸出對應結果
![](https://news.xinpengboligang.com/upload/keji/fca7c7834945a1423b27e39698f52cdd.jpeg)
2、測試結果校驗
以上登錄的每條用例執行完後,需要去確認執行結果的正確性!你是人工點開每一條用例的接口返回結果,憑肉眼判斷嗎?那樣就太費時間了,Jmeter有提供很多種自動判斷用例執行是否符合預期的機制— 斷言機制。Jmeter可通過: 響應斷言 CSV數據驅動 實現。
1)右鍵循環控制器-斷言-添加響應斷言,並設置斷言內容如下
![](https://news.xinpengboligang.com/upload/keji/59641f920544b8a0991360ed794182f0.jpeg)
2) 點擊運行,可以看到執行結果。請求顯示綠色--表示斷言成功;請求顯示紅色-表示斷言失敗,用例執行失敗。點開可以看到斷言失敗的原因。
![](https://news.xinpengboligang.com/upload/keji/031d09e1eeb3f19b06c4d4611af03b5f.jpeg)
3、接口依賴處理
如果我們要再去測試“添加投資項目”這個接口,跟登錄一樣,測試數據準備到CSV文件中,然後也是自動循環去讀取CSV文件中測試用例,去執行!
但會存在問題: 添加投資項目這個接口要想執行成功,必須依賴到登錄狀態,需要從登錄成功的響應結果中提取需要的token、用戶id值。
如何解決? 將登錄接口作為前置操作,登錄隻執行1次,然後通過後置處理器-json提取器獲取到token、id的值;再傳遞給添加投資項目的這個接口使用。
1)腳本結構如下,新建登錄請求作為前置,在登錄請求下添加json提取器,頁面設置如下:
![](https://news.xinpengboligang.com/upload/keji/acfe38ed25c881bf203d96852b045dbb.jpeg)
2)將提取到的token值,傳遞到下個接口的請求頭使用,在添加投資項目接口下方添加HTTP信息頭管理器,引用user_token變量的值
![](https://news.xinpengboligang.com/upload/keji/e0afe943c3b524f52a2872e13e1e9d21.jpeg)
3)將提取到的用戶id,傳遞到下個接口的請求參數中,這裡分2步處理,首先在CSV文件中的請求列數據,設置${user_id},如下:
然後在添加投資項目接口的http請求頁面,引用從CSV文件中讀取的req_data變量值時,因為該值中嵌套了${user_id}變量值,因此這裡要用Jmeter自帶的__eval函數處理下。
![](https://news.xinpengboligang.com/upload/keji/c3f2bf9cc9def62907d74ea62596e6a9.jpeg)
4)點擊運行,可以看到CSV中3條用例都執行成功。
![](https://news.xinpengboligang.com/upload/keji/358f5d71ad696d9dd8b638877bd7d064.jpeg)
4、公共數據管理
很多接口請求中,會存在部分相同的請求信息,例如環境地址。測試環境/預發佈環境/發佈環境,服務器地址是不一樣的。對於測試來說,如果需要在不同環境下,執行同一套接口腳本時,得一個個接口去修改服務器地址,這是很麻煩的。那麼在Jmeter中,可以通過:自定義變量 實現高效處理。
1)新建配置元件-用戶定義的變量,設置host、port2個變量,用來保存當前測試環境地址信息
![](https://news.xinpengboligang.com/upload/keji/ef8b320074977c3475ebfc7092b673d1.jpeg)
2)然後在自動化腳本的請求位置,將這2個變量進行引用,例如登錄接口設置如下:
![](https://news.xinpengboligang.com/upload/keji/437de5f879bea182335e790e4e7a9891.jpeg)
這樣,如果下次需要切換到預發佈環境進行測試,隻需要修改用戶定義變量中的環境地址信息即可。
5、多接口批量執行
在實際工作中,如果一個項目比較大,腳本編寫工作是需要協同完成的。比如說你負責ABC模塊接口、他負責DEF模塊接口,最後如果要整合所有的接口進行批量執行怎麼處理呢?可以通過Jmeter的測試片段,分模塊管理接口腳本。一般可以一個接口一個測試片段。測試片段本身是不能直接運行的,需要通過模塊控制器或include控制器才能執行。
1)右鍵新建測試片段,將登錄接口的多用例執行腳本,保存在測試片段下;同理添加投資項目接口的多用例執行腳本。如下:
![](https://news.xinpengboligang.com/upload/keji/1e5e474b8f8bc978a2027b2567bfe01d.jpeg)
2)新建線程組,在線程組下添加模塊控制器,選擇需要執行的測試片段;
![](https://news.xinpengboligang.com/upload/keji/5d8c093a3c79ea5f86d9d6a2353464f7.jpeg)
![](https://news.xinpengboligang.com/upload/keji/1b8287024f73ca1a5b01b6bc42e72f29.jpeg)
3)點擊運行,可以看到多接口批量執行結果
![](https://news.xinpengboligang.com/upload/keji/fc797843942bdf8e6eaa73cd222b883b.jpeg)
總結
通過以上5步,就可以0代碼實現Jmeter自動化腳本的基礎開發。當然實際工作中的項目會存在很多需處理的業務場景,比如文件上傳處理、關聯到數據庫的接口處理、接口加密傳參處理、數據庫斷言處理等等,那麼就需要大傢具備更高階技術、甚至是自己寫代碼去解決。
學無止境,行以致遠。