在自動化測試過程中,測試報告最能直觀的體現測試的價值,之前一直使用maven+junit來構建我的自動化測試,但這樣有幾個缺點,一是,不能定時構建自動化任務(也許是我沒有找到maven有沒有提供這樣的方法),二是,不能生成一個直觀的測試報告(maven+junit在surefire-reports文件目錄下提供兩種格式的測試結果集,一種是txt文本格式,第二種是junit的xml格式的,但給我總體感覺還是不夠直觀),三是,無法完成分布式執行測試,設想一下,如果我們有成千上百個testcase,我們將面臨一個非常嚴峻的問題,效率!!!
綜合以上三點考慮,我選擇了jenkins來解決現在面臨的困難,不管以上三種問題在maven+junit中有沒有更好的支持,但我可以確認jenkins可以非常簡單的完成以上3個目標,先介紹下如何生成直觀的測試報告。
1、下載jenkins.war,地址:http://jenkins-ci.org
2、安裝JDK,TOMCAT
3 、講下載的jenkins.war直接拋到tomcat的webapps目錄下,然后啟動tomcat
4、在瀏覽器中輸入:http://localhost:8080/jenkins,進入jenkins管理界面
5、在使用jenkins前,需要做些配置,jenkins默認工作目錄位於~/.jenkins下,配置下環境變量即可,如:JENKINS_HOME=E:\jenkins,
另外,tomcat默認不支持UTF-8的URI,解決辦法是修改server.xml的connector,如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />
重啟tomcat
進入jenkins 的homepage,進入系統設置頁面,這里是jenkins構建任務用的全局范圍設置的地方,下面我會一一介紹各個字段的使用,沒有介紹到的,不做任何修改,這里主要針對自動化測試使用
主目錄:即是以上配置環境變量JENKINS_HOME的值,修改環境變量后,會在此顯示
系統消息:根據自己需要隨便寫兩句即可,登陸后會顯示在主界面,這里支持html風格
執行者數量:jenkins可以同時構建的job個數,最好小於cpu個數,這里默認即可
生成錢等待時間:只上次構建結束后,本次構建的等待時間,默認即可
全局屬性,Environment variables環境變量,在這里可以添加名值對,提供給后續創建job使用,使用方法很簡單,${變量名}
maven 配置:兩項,前者是提供maven repository的settings.xml地址,后者是maven全局settings.xml文件地址
jdk配置,看圖就明白了
maven配置,如圖
maven項目配置:
1、全局maven_opts,這里可以配置maven的相關參數,如圖,我只配置了下maven啟動時jvm堆的大小
2、local maven repository:maven本地倉庫地址,默認即可,這里我有些疑問,我的電腦中已經將maven本地倉庫遷移到其他目錄,但這樣做jenkins在構建maven job時會自動找到我遷移后的倉庫,有知道的朋友麻煩給評論下,順便留下詳細的答案啊!!!!
jenkins url:將localhost改為真實ip
剩下部分算是無關緊要的了,全部默認即可,如有特殊需要再進行配置,如源碼使用svn管理等等
到此,jenkins系統環境就配置完畢!接下來就是為jenkins創建一個job,創建job也很簡單,不要害怕里面有很多配置,大部分對於自動化測試默認就足夠了,這也證明了jenkins足夠強大!
1、返回jenkins首頁,單擊 new job 鏈接,進入如下頁面
jenkins支持多種構建平台,其中常用的就是前兩個,我們這里選擇針對maven項目構建,選擇第二項,很多情況第一種更為方便,擴展性較強,在這里我說如果構建一個maven2/3項目,首先,給maven起一個有意義的名稱,選擇第二項(構建一個maven2/3項目),單擊ok,進入構建主頁,如圖
maven
以下 我會對緊要的相關字段介紹一下,其他的默認即可
選擇【丟棄舊的構建】,這里主要是為節省磁盤空間而考慮的,因為每次構建后,jenkins都會在jobs目錄下為每個job下載,和創建相關數據,如打包后的jar等
1、保持構建的天數,這里我設置5,表示每個每次構建后的記錄只有5天有效期
2、保持構建的最大個數,每個job只會保留最新的5次構建記錄,這里需要提醒的是,如果之前有一次構建成功,那么jenkins會永遠保留,當然也可以手動刪除
如圖:
1、高級項目選項:顧名思義,這里只有在有特殊需求的情況下才會使用,對於本次測試,默認即可
這里說下前兩個字段,安靜期主要是對於cvs這樣的項目管理工具,它不支持原子性提交,所以為了避免每次cvs版本發生變化就觸發構建,這里設置一個時間,指定cvs版本發生變化后,等待指定時間后再觸發構建;重試次數是以防cvs等遇到其他異常
2、源碼管理:這里可以輔助我們做分布式自動化,我們可以把每個slave要執行的腳本放到svn上,每個slave在構建時依據這里的配置自動check out 對應的腳本,如果源碼放在svn上,在此做配置,
repository url:即為源碼的url,我使用的是svn協議,我的腳本放在了yanxiuLAN這個項目下
local module directory:這里是相對路徑,相對於jenkins的 workspace\jobname,項目的源碼會下載到這個目錄下.
構建觸發器(定時任務),這里既解決開篇我提到的如何定時執行測試任務,如圖:
這里着重介紹下build periodically,其他選項對於開發流程較為常用
選中build periodically,如圖: ,我配置的是每周一 至 周五 早上8點構建任務
對於所有的任務日程表,jenkins采用cron-style語法,包含5個字段,字段之間使用空格隔開,格式如下
MINUTE HOUR DOM MANTH DOW
MINUTE:0-59 HOUR:0-23 DOM:1-31 MONTH:1-12 DOW:0-7 ,其中0,7都是表示周日 ,以下有幾個簡化字符
1、“*” 表示在該字段所有可能出現的值
2、也可以使用連字符“-”定義范圍,如在DOW字段上定義1-5,表示周一至周五
3、使用正斜杠符號定義一個跳過一個范圍,如在MINUTE字段上定義 */5 表示每五分鍾的意思
4、使用逗號分隔一個字段表示一系列有效值,如HOUR 字段定義 12,18 表示12點與18點
接下來介紹一下對於測試比較重要的一個配置,如圖:
1、Root POM 是你指定構建maven任務的項目根目錄,指定pom.xml所在目錄,這里可以是相對目錄或絕對路徑,相對路徑即為jenkinsHome\workspace\jobName
2、Goals and options:是你要執行的maven命令,我這里的意思是構建前先清除上次構建產生的target目錄(該目錄中包含編譯后的class文件,生成的項目站點以及打好的包,junit的報告等),然后執行site會重新構建項目生成站點,詳見maven
保存。
OK!!!有了以上的配置后,就能成功解決開篇提到的3個問題,so easy,大家多試一下,相信大家會喜歡jenkins的