Jenkins + JMeter 監控系統預防Performance低落風險
2019/08/10 22:27:50
0
1869
Jenkins + JMeter 監控系統預防Performance低落風險
簡介 |
將Performance測試與Jenkins進行整合,若在新增新功能或修復產品錯誤時候,可以預防Performance下降的風險,讓我們提早發現問題立即修正。 例如:Jenkins定期每天執行Performance測試,若今天修復一個bug,卻不經意間導致response times超過可接受範圍時,當天Jenkins就會出現黃色圖示並發mail給開發人員,開發人員就可以馬上警覺到可能是上述修復的bug有問題而造成response times過久。 若沒有進行Performance測試,可能需要等到一段時間之後,等到用戶抱怨系統太慢,開發人員又要花費很多時間查出是甚麼原因造成的。 |
作者 |
姜志民 |
一、撰寫Jmeter測試response time腳本
a.到https://jmeter.apache.org下載Apache JMeter 4.0。
b.「執行緒數量」為100是表示模擬100人登入網頁。「啟動延遲」為25是表示100人會在25秒內隨機執行。
c.會以Thinkpower昕力資訊官網與昕力大學為測試對象。下圖是Thinkpower昕力資訊官網的測試設定。
d.下圖是昕力大學的測試設定。
c. 下圖是測試response time腳本,當response time超過800ms就會UNSTABLE,然後並存成thinkpower.jmx檔案腳本。
二、Jenkins安裝plugin
Jmeter執行完成後,會產生jtl檔案。Jenkins必須安裝plugin來解析jtl檔案並產生報表,安裝套件如下。
三、Pipeline腳本
node {
stage("run"){
//刪除之前測試結果
deleteDir()
//apache-jmeter目錄
env.JMETER_HOME="C:\\Program Files\\apache-jmeter-4.0"
//使用Jmeter並讀取thinkpower.jmx腳本進行Performance測試
bat " \"C:\\Program Files\\apache-jmeter-4.0\\bin\\jmeter.bat\" -Jjmeter.save.saveservice.output_format=xml -n -t D:\\thinkpower.jmx -l thinkpower.jtl "
//產生Jmeter報表,如果average response time超過JMeter中BeanShell Listener的設定,就編譯失敗或是不穩定的圖示。
perfReport errorFailedThreshold: 100, errorUnstableThreshold: 49, percentiles: '0,50,90,100', sourceDataFiles:'thinkpower.jtl'
//若response time超過指定的數值,就會發mail通知管理者
if (currentBuild.currentResult=='UNSTABLE') {
def mailList="jhihmin.jiang@thinkpower.com.tw";
def subject='系統警告-Performance低落風險';
def body="<font size='23'>Performance低落風險</font>";
emailext body: "${body}", subject: "${subject}", to: "${mailList}",mimeType: 'text/html';
}
}
}
四、建立Pipeline專案
a.專案類型如下。
b.將「Pipeline腳本」貼到Script內,在按下儲存。
c. 然後在按下「馬上建置」。
五、Performance報表
a. 建置完成後,進入「Performance Trend」連結。
b. 進入「Last Report」連結。
c.可以看到Thinkpower昕力資訊官網與昕力大學相關測試數據。進入「載入 Thinkpower 昕力資訊 官網」連結。
d.可以看到「載入 Thinkpower 昕力資訊 官網」更詳細的測試資訊。
六、response time超過800ms系統圖示警告
Performance的response time在800ms之內就會是藍色圖示,若超過800ms就會是黃色圖示。
七、Jenkins寄送Performance低落風險mail
若超過設定的response time就會寄送mail,如下圖。