iT邦幫忙

DAY 14
0

探索 Jenkins-CI 從認識到應用系列 第 14

14. 駭客任務 - 利用Jenkins進行相依性測試 (上)

  • 分享至 

  • xImage
  •  

利用Jenkins進行相依性測試 (上)

哇,最新的 JDK8u20 釋出了,不過我還在用OpenJDK6,我的專案可以直接昇級嗎?上周更新JDK後打包的版本,部份客戶反應出狀況了,但只是部份。為了不要影響全體客戶,決定先找出專案JDK版本的最低需求,為低於此版本的客戶更新JDK,但該怎麼做呢?

知道Matrix為什麼要翻成駭客任務了吧,因為太難了,似乎有個大家都能接受的答案就好
本篇同步發表於 __ http://www.gibar.co/2014/10/jenkins-matrix-project-plugin.html

說實話,需要相依性測試的機會真的很少,絕多的情況,知道一個確定能執行的環境就夠了。若真的碰上了,但或許可以參考看看本篇提供的方式。本篇介紹的外掛Matrix Project Plugin,是Jenkins預設安裝的,可見這玩意肯定不簡單!本篇的內容比較天龍(進階),請斟酌使用。

目標情境

利用Matrix Project建立多重測試專案,測試專案對JDK版本的相依性

Git: https://github.com/abola/co.gibar.example.git
Maven Goal: clean compile test

這兒建立了一支小程式,不過目前不知道他可以最少,或最高可以在那個Java版本下正常運行

https://github.com/abola/co.gibar.example/blob/master/src/main/java/co/gibar/examples/jenkins/matrix/JDK7OnlyScript.java

第一步:建立多重(Matrix)設定專案

平常我們作業大多都是使用Free-Style,而使用多重設定的使用情境,幾乎目的多是為了測試。而多重設定專案的內容與一般的差異,僅是多了『設定矩陣』的項目。『增加軸線』是主要的設定,可以指定你要為專案建立多少不同的測試內容,預設可將不同的JDK版本加入,分別測試不同的JDK運行的結果是否正確。其餘的便都與一般專案無異。



JDK的清單會與你在Jenkins管理中安裝的JDK相同

第二步:多重設定專案的第一次建置

可以參考前面的Git / Maven Goal設定,先建立測試的內容,不過我們在Maven Goal先只進行clean compile。然後進行建置,我們來看看這過程與結果。


先 clean + compile 就好


每一個變數,都被拆成了不同的作業


JDK8 正確 ? http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8021591

我們看到了多重設定專案,會幫我們將矩陣中的設定,拆成子作業,最後將結果呈現在專案的頁面上。但這個範例是有點問題的,一開始使用了Java7 始有的語法,所以 Java7以前的版本當然無法使用。但還有一段,是在Java8後被修正的內容,Java8顯示正確問題在那?

第三步:納入單元測試

大家應該知道問題了,單單使用compile去測試編程式碼,只會掃的出語法上是否正確,通常稱為Compile Time;但測不出Runtime時的問題。測試Runtime問題,簡易的就是使用單元測試囉。


https://github.com/abola/co.gibar.example/blob/master/src/test/java/co/gibar/examples/jenkins/matrix/JDK7OnlyScriptTest.java


在Maven加入test


Runtime Error 要使用單元測試才有效果!

所以重要之重要,想要真正知道專案的內容,是否可順利昇級或更換核心,足夠的單元測試與盡可能完整的測試覆蓋度,是較穩當的方式。同時也可以知道問題節點,及早反應,或許為了半年後的昇級,我們需要更換一些編碼上的習慣。Jenkins的多重設定專案,提供了很方便的模式幫助你測試。

(上),意思最少就是還有(下)。本篇我們使用了JDK做為測試的變數,如果我要測試的是套件的版本呢?如果我要交叉測試的項目不止一個呢?在增加軸線中,還有一個選項『使用者自訂軸』,下一篇將會介紹如何與Maven配合,進行複雜到不行的多相依性測試。我是真的希望寫的出來......

下一篇:Matrix [2][0] - 利用Jenkins進行相依性測試 (下)

本篇同步發表於 __ http://www.gibar.co/2014/10/jenkins-matrix-project-plugin.html


上一篇
13. 砍掉重練 - 我總是相信下一次就會好了
下一篇
15. Matrix [2][0] - 利用Jenkins進行相依性測試 (下)
系列文
探索 Jenkins-CI 從認識到應用16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言