前言
上篇已經給大家介紹了一款自動化測試工具--locust。從介紹中可以我們知道locust是基於python語言進行自動化測試,所以需要有python基礎。而今天要給大家介紹的是Java開發常用並且可以說是官方標配的工具--Jmeter。
安裝配置
因為Jmeter是使用JAVA寫的,所以使用Jmeter之前,需要安裝JAVA環境。(本人目前使用的是Jmeter 5.4.1 官方推薦搭配jdk1.8+使用)
在這里給大家貼上Jmeter和Java下載地址:Jmeter 、 Java
Java下載完后還需要配置環境變量,這里也簡單的介紹一下
1、命令行運行'vi .bash_profile',在最下面添加JAVA_HOME和PATH.
2、很多同學不知道Java安裝路徑,這里教大家一個簡單的命令 ‘which java’
3、執行'source .bash_profile' 或者在 .zshrz內加上‘source ~/.bash_profile’
4、執行 ‘java -version’查看java環境是否配置成功
5、 將下載的Jmeter解壓,得到以下目錄結構,這里就簡單介紹lib和bin這兩個包。
5.1、jmeter目錄下的lib和java里的lib是一樣的概念,主要存放的是各種依賴(官方提供了一些通用的jar,也可以往里面添加第三方/自定義jar)
bin目錄主要存放核心的運行文件、配置文件、日志等
6、Jemter其他配置
6.1、永久漢化--修改jmeter.properties文件,全文搜索language,並修改此處為‘language=zh_CN’.(注意將前面的“#”去掉)
6.2、Jmeter快捷開啟--對運行文件進行alias。編輯‘vi .bash_profile’,輸入`alias jmeter="/Users/Jackpot/Downloads/apache-jmeter-5.4.1/bin/jmeter ; exit;"`
6.3 只需在命令行輸入alias別稱就可以快速開啟jmeter.(我這里寫的別稱是“jmeter”)
6.4 如果不進行6.2 6.3這兩步設置,那么每次啟動jmeter就必須輸入全路徑/進入jmeter的bin目錄執行`sh jmeter`
注意:dos控制台是不能關閉的呦。一旦關閉,啟動的Jmeter工具也會自動退出。
測試請求配置
一、新增線程組。
線程組用來模擬用戶。一個線程組模塊可以包含多個線程,每個線程代表一個用戶,這樣可以模擬高並發下的請求,並根據網站的響應信息來判斷網站的相關性能。
1.1 線程組的基本配置
1.2 、`在取樣器錯誤后要執行的動作`解釋
繼續:某一個請求遇到錯誤后,其他請求繼續執行。我們在大量用戶並發的時候,某個請求失敗屬正常現象。
啟動下一進程循環:如遇到錯誤后面的請求將不再執行,等下一輪再開始執行。例如線程組中包含登錄和退出兩個請求,若登錄請求失敗,退出請求將不再執行,等下一次重新迭代,從登錄開始執行。
停止線程:遇到錯誤就停止線程再也不執行了。例如線程組中有50個線程,其中某一個線程的某個請求遇到錯誤即停止線程不再執行,剩下49個線程繼續執行。若線程錯誤的比較多,剩余的線程就較少,此時負載數量就不足了,測試結果不滿足測試要求,因此一般不會勾選此項。
停止測試:某個線程某個請求遇到錯誤,停止所有線程,也就是停止整個測試,但是線程中的余下的請求還是會執行完再停止。例如線程組中包含登錄和退出兩個請求,其他線程遇到錯誤,現在要全部停下來,線程組退出請求還是會執行,然后再停止測試。
立即停止測試:遇到錯誤立即停止所有線程,即整個測試。
二、 構建HTTP請求
下面的配置對於Java開發已經很熟悉吧。和Postman風格還是有那么幾分相像的。
注:我這里都是使用的json格式的請求參數上,如果是文件上傳,可以勾選上面的`對post使用multipart/form-data`
三、封裝請求頭
請求頭的封裝是最簡單的,只需要從WEB頁面上講請求頭全部復制,然后粘貼就行
四、添加斷言
這里我推薦使用BeanShell斷言--BeanShell是基於Java語法的腳本語言,通過BeanShell可以對請求數據、響應數據或環境變量進行更加靈活的處理和判斷。
關於BeanShell語法,可以參考JMeter使用BeanShell斷言
BeanShell斷言中可以通過ResponseCode、ResponseHeaders及pre.getResponseDataAsString()來分別獲得String格式的響應狀態碼、響應頭、響應體數據,結合if判斷通過變量Failure=false或Failure=true來設置斷言是否通過,當設置Failure=true時,還可以設置FailureMessage來設置失敗原因。
從上面的腳本可以清晰明了的看出來,完全就是java的語法,甚至還支持導包。說到導包我還得在提醒一句--導入的包必須是在Jmeter/lib內有的jar包,如果不存在可以手動添加到lib內
五 察看結果樹
頁面上需要進行配置的地方也很少,有用的就兩個地方--請求/響應格式、顯示的日志內容
六 執行啟動
這個頁面給大家說一下紅色框里面的內容,這兩塊內容都是第一步創建`線程組`時創建的持續時間和周期,具體的含義就是“4個線程循環一次,持續時間為10s”
當⚠️標示旁邊出現紅色數字時,表示程序運行過程中出錯了,紅色的數字就是錯誤的個數。點擊⚠️,下面就會出現具體的錯誤日志。如上的日志就是說BeanShell斷言錯誤,我的錯誤原因是因為未在jmeter/lib內添加json.jar 直接導入org.json.*。在網上下載相應的jar文件並放到lib目錄下,再次運行就可以了。