通過前幾篇文章,jmeter+ant+jenkins自動化持續構建的測試平台基本成型。既然要自動化平台,最基本的肯定要實現不經過人工干預,平台會在特定的條件下自動運行測試腳本,並在腳本運行結束后,發送郵件通知用戶測試的結果。本文主要介紹如何實現以上兩項功能。
還是接着以上一篇筆記中的“test_token”項目為例:
1、構建觸發器
構建觸發器可以根據自己的需求選擇,由圖看到有四種類型:
(1)可使用腳本觸發遠程構建;
(2)其他job構建完成后觸發當前job執行構建;
(3)定時周期性構建;
(4)hookplugin檢測到源碼的push操作就觸發構建;
(5)定時檢查代碼分支是否有變化,如果有變化則執行一次構建。
我的目的是做接口測試自動化,每天定時跑任務並監控API功能是否正常,所以選擇Build periodically(定期構建)。日程表一共五個參數:
從左到右分別代表:分 時 天 月 星期
第一個參數代表的是分鍾minute,取值0~59;
第二個參數代表的是小時hour,取值0~23;
第三個參數代表的是天day,取值1~31;
第四個參數代表的是月month,取值1~12;
第五個參數代表的是星期week,取值0~7,0和7都代表星期天。
0 7 * * 1,3,5 表示每周一、周三、周五的7點00分執行一次,*代表所有。
2、郵件通知
(1)Jenkins Location配置
jenkins首頁->系統管理->系統配置頁面
其中Jenkins URL有默認值,最好修改,因為默認地址不安全。
系統管理員郵件地址一定要寫,因為這個地址是郵件通知的發信人郵箱,填寫方式有兩種:
a)直接填寫郵箱地址
b)可以加前綴來標識該郵件基本信息,例如:自動化測試郵件<郵箱地址>
(2)Extended E-mail Notification配置
jenkins首頁->系統管理->系統配置頁面
按照自己實際使用的郵箱進行配置,設置時,點擊“高級”展開,使用SMTP認證(Use SMTP Authentication):
根據郵箱服務提供商確定SMTP服務器,如:126的SMTP是smtp.126.com、163的SMTP是smtp.163.com
根據郵箱服務提供商確定是否使用SMTP認證、是否使用SSL協議以及SMTP端口
根據郵箱服務提供商確定“Password”是郵箱的登錄密碼還是專用於第三方工具發郵件的驗證碼,如:QQ和163為驗證碼,126為登錄密碼
OK,郵箱服務的基本配置已經完成。
接下來的配置相當於是郵件通知的全局配置,對具體job來說,還會進行具體的配置,如果在job中重新配置了這里相同的項目,就會覆蓋這里的全局配置。
1)Default Content Type:“text/plain”指郵件正文為純文本格式,“text/html”指郵件內容可以包含html標簽且能被郵箱客戶端正確解析、顯示。我這里選擇“text/html”。
2)Default Subject:郵件標題,可以使用系統中的全局郵件變量來設置。我這里設置的標題格式為:項目名稱-BUILD#構建次數-構建狀態。
3)勾選“Enable Debug Mode”,以開啟Extended E-mail Notification的調試功能,這樣可以在構建日志中增加更多與Extended E-mail Notification相關的日志。
(3)Job中的郵件配置
jenkins首頁->job"test_token”->配置->構建后操作
在job中配置頁面,選擇增加構建后操作,選中Editable Email Notification即可。
需要填寫的各配置項參數說明:
1)Project Recipient List:這是一個以逗號(或者空格)分隔的收件人郵件的郵箱地址列表。
2)Default Content:郵件內容,可以使用構建中的環境變量,使得郵件中展示你想要的信息。
完整內容如下:

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title> 6 </head> 7 8 <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" 9 offset="0"> 10 <table width="95%" cellpadding="0" cellspacing="0" 11 style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> 12 <tr> 13 <td>(本郵件是程序自動下發的,請勿回復!)</td> 14 </tr> 15 <tr> 16 <td><h2> 17 <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font> 18 </h2></td> 19 </tr> 20 <tr> 21 <td><br /> 22 <b><font color="#0B610B">構建信息</font></b> 23 <hr size="2" width="100%" align="center" /></td> 24 </tr> 25 <tr> 26 <td> 27 <ul> 28 <li>項目名稱 : ${PROJECT_NAME}</li> 29 <li>構建編號 : 第${BUILD_NUMBER}次構建</li> 30 <li>觸發原因 : ${CAUSE}</li> 31 <li>構建日志 : 請查看附件</li> 32 <li>測試報告 : 請查看附件</li> 33 <li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> 34 </ul> 35 </td> 36 </tr> 37 <tr> 38 <td><b><font color="#0B610B">Changes Since Last 39 Successful Build:</font></b> 40 <hr size="2" width="100%" align="center" /></td> 41 </tr> 42 <tr> 43 <td> 44 <ul> 45 <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> 46 </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"} 47 </td> 48 </tr> 49 50 </table> 51 </body> 52 53 </html>
3)Attachments:郵件的附件,我把執行測試腳本生成的html測試報告文件,作為附件隨郵件發出去。
注意:這里的寫法可以使用通配符來確定文件的路徑名稱等,但是文件一定要位於workspace目錄里面。
由於我之前的job把測試報告放置在/usr/jmeter/apache-jmeter-3.3/TestReport/testToken/html路徑下,所以現在要修改一下測試報告輸出的路徑:
首先確認workspace目錄的路徑:/var/lib/jenkins/workspace;
接着在workspace目錄下創建存放測試報告的新文件夾:
/var/lib/jenkins/workspace/test_token/html
/var/lib/jenkins/workspace/test_token/jtl
最后修改/usr/jmeter/apache-jmeter-3.3/TestScrip目錄中的test_token_build.xml文件,把其中測試報告的輸出路徑修改為新的路徑即可。
該參數文本框填寫內容為html/*.html,意為在該job的workspace路徑下搜索html文件夾中所有以.html為后綴的文件,並把這些文件添加到郵件附件中。
(4)觸發器配置
決定什么情況下發送郵件。我配置為Always總是觸發,接着send to選擇RecipientList,意思是每次構建無論成功與否都發送郵件到上面指定的收件人列表郵箱。
3、測試配置是否成功
構建觸發器的日程表填一個馬上臨近的時間,等待任務自動執行並發送郵件。
郵件結果為:
本章已經把定時任務和郵件通知功能實現了,下一章將會對該平台進行些優化。