由於要幫公司網站作壓力測試,透過顧問推薦,認識JMeter這個免費的壓力測試軟體~(我用的是5.3版)
因為網站連線不太穩,只要太多人連線就會掛點,
所以只能挑深夜離峰時間來作測試
但我又不想熬夜等到離峰時間來啟動軟體
(而且為收集完整數據,Boss說要連測兩個禮拜,QQ)
找了網路上的文章,大多都是介紹計時器Timer(thread和thread之間的間隔)功能
但我需要的是時間到了就自動啟動,比較偏向定時器或排程的功能
可能定時器功能太簡單而沒人寫吧... 筆記一下這次的摸索經驗,提供未來參考。
主要方法有兩種,一種是用JMeter內建的定時器(Specify Thread lifetime),讓程式延遲一段時間再執行,這種比較初階。
一種是搭配Windows的工作排程器,設定排程時間(例如每天晚上11點),自動啟動程式。
其他功能可參考使用手冊:https://jmeter.apache.org/usermanual/index.html
1.至JMeter官網下載 JMeter軟體(需要Java 8以上版本環境才能執行) https://jmeter.apache.org/download_jmeter.cgi
2.解壓縮後,點選apache-jmeter-5.3\bin 資料夾中的 jmeter.bat 檔案,可開啟JMeter程式
3.新增測試計畫(Test plan)
4.於測試計畫(Test plan)按右鍵,新增一個執行序群組
[ 第一種,JMeter內建的定時器(Specify Thread lifetime)]
1.在執行序群組(Thread group)標題點一下左鍵,右邊視窗會出現群組資訊
勾選最下方的「Specify Thread lifetime」,有「期間(Duration)」&「延遲(Startup delay)」兩個值可設定,皆是以秒為單位,
(有的JMeter版本有開始&結束時間欄位可填,但5.3版只有「期間」一個欄位...所以一開始摸索很久,加上中譯版文字跟英文有差異,省略「秒數」字樣,後來切換回英文版才看懂)
例如,要設定半小時後啟動,則可於「延遲(Startup delay)」欄位輸入 1800(秒)
由於「期間(Duration)」欄位為必填,為了避免執行到一半被中斷,我通常會將值設大一些。
* 測試發現,若「期間(Duration)」設定的秒數時間到時,即使thread還沒跑完,也會自動停止。
* 若有兩個以上的執行序群組(Thread group),則只要在第一個執行序群組(Thread group)設定即可,後面的會依序執行
* 承上,經測試,若「期間(Duration)」欄位設的值很大,第一個執行序群組(Thread group)只要執行完,仍會自動執行第二個群組,不會等到「期間(Duration)」的秒數到了、才執行下一個群組。
如果覺得第一種方法,每天都要按一下,好麻煩,那麼可以參考第二種:
[ 第二種,搭配Windows內建的工作排程器 ]
1.開啟工作排程器後,點選建立基本工作
2.設定觸發程序時間
3.執行動作,選擇「啟動程式」
4.「程式或指令碼」欄位,填寫jmeter.bat的所在的路徑,
「新增引數」欄位,填寫呼叫啟動 JMeter test plan的命令,
jmx file 取代為 測試計畫的jmx檔名,後面的results file 和 path to web report folder 好像要不存在才不會出現執行錯誤。
如果
例如:我的測試計畫檔名為 test1120.jmx,希望將測試結果資料存成 test1120.csv 檔,測試結果圖表放在report資料夾
新增引數欄位就填寫: -n -t test1120.jmx -l test1120.csv -e -o report
「開始位置」則填測試計畫的jmx (test1120.jmx)所在路徑。例如: D:\
接著下一步,按完成,即可。
實測結果會像這樣,出現csv檔& report資料夾(裡面是html格式的圖表資料)
csv檔裡是彙整報告 ↓