從命令列執行Jmeter
為什麼要命令列執行指令碼,主要有以下三點:
1) 圖形化介面消耗更多資源,CPU和記憶體
2) 圖形化介面不支援大型的負載測試和效能測試
3) 命令列測試支援持續整合,例如放到Jenkins這樣的CI工具上。
具體步驟如下。
1. 通過雙擊jmeter.bat開啟JMeter圖形介面
2.在預設的Test Plan上建立一個Thread Group
3.在Thread Group上面新增一個Sampler,選擇HTTP Request
4.在Thread Group上面新增一個View Results Tree
5.點選Run,在彈出對話方塊詢問是否儲存,點選Yes,儲存指令碼到桌面,CommondLineTest.jmx
6.檢查View Results Tree裡面的response code 是不是200,
7.通過檢查測試通過,說明測試指令碼沒問題,我們這裡選擇刪除View Results Tree
8.關閉當前JMeter對話方塊
9. 開啟cmd,通過cd命令先切換到JMeter安裝路徑
例如: cd C:\apache-jmeter-3.2\bin
10. 輸入一下命令開始執行測試
執行命令格式:
jmeter -n -t [jmx指令碼路徑] -l [測試輸出檔案路徑] 如:./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl
引數解釋:
-n: 表示 non gui mode,就是非圖形化模式
-t: 表示jmeter指令碼的路徑
-l:表示輸出結果路徑,如果沒有該檔案就自動建立,可以生成csv或者jtl檔案。
測試結果:
會在桌面生成一個demo.cvs檔案,內容如下:
如果想要生成HTML報告,有兩種方式:
1.可以在測試過程中將jtl轉成測試報告(在jmeter的bin目錄下執行): ./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport
引數說明:
-n : 非GUI 模式執行JMeter -t : 執行測試檔案所在的位置及檔名 -r : 遠端將所有agent啟動用在分散式測試場景下,不是分散式測試只是單點就不需要-r -l : 指定生成測試結果的儲存檔案, jtl 檔案格式 -e : 測試結束後,生成測試報告 -o : 指定測試報告的存放位置 -o 指定的檔案及資料夾,必須不存在 ,否則執行會失敗,對應上面的命令就是resultReport資料夾必須不存在否則報錯 如上命令執行,可以看到控制檯開始列印資料了2.使用之前的測試結果,生成測試報告
./jmeter -g baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport
-g : 指定已存在的測試結果檔案 -e :測試結果後,生成測試報告 -o : 指定測試報告的存放位置 -o 指定的檔案及資料夾,必須 不存在 ,否則執行會失敗第一種和第二種其實最終都依賴生成的jtl檔案,將jtl檔案生成測試報告。雙擊測試報告中的index.html檔案即可檢視報告內容