Mar. 03 11:06~12:40
這幾天剛好都在談測試的問題,讓Teddy想起了兩年前寫的幾篇轟動武林,驚動萬教的文章:《土炮跨平台自動化功能測試環境》、《土炮跨平台自動化功能測試環境:補充篇》、《開下去就對了》以及《用Robot寫自動化功能測試到底有沒有用》。這幾篇主要在談如何建置跨平台功能測試環境,以便在上班時間當開發人員提交程式碼到版控系統之後,持續整合系統可以將測試案例自動發派到不同的平台中執行測試工作。這個環境也可以拿來做為「每夜建構」之用,下班之後在各個平台中完整的執行一次建構與跑所有的測試案例,隔天上班之後可藉由昨夜的建構結果得知軟體的健康程度。
同樣的環境,經過稍微設定之後,也可以當成開發人員的「手動遠端測試環境」。假設鄉民們開發一個跨平台的應用系統,你所使用的開發機執行的是Window XP作業系統。在你寫完程式之後,也在自己的電腦上的Window XP環境中執行過測試案例。此時應該可以把程式碼送交到版控系統之中,交給持續整合系統建構了吧?等一下,你開發的是「跨平台系統」,可是剛剛只在自己的Windows XP作業系統中測試過,同樣的程式在Ubuntu上會不會有問題哩?是不是應該先將這段程式在Ubuntu上測試一下會比較放心一點,之後再送交到版控系統。
***
以上這個需求,市面上應該有許多「高檔貨」已經具備這樣的功能。但別忘了鄉民們屬於「窮苦人家的小孩」,爸爸不買給你只好自己拼裝了。
用Push模式更新測試程式
做法其實很簡單,只要找出一個辦法,讓鄉民們可以把本地端修改後的程式碼部屬到遠端測試機器就可以了。接下來以Eclipse開發環境上搭配Ant script為範例,寫一個簡單的Ant script來幫鄉民們部屬測試程式。首先在build file(Ant script)中加上一個target作為發佈測試碼之用,下面定義一台準備要更新測試碼的Ubuntu測試機。
deploy-P8QQF-Ubuntu10.10的內容會刪除舊的測試程式以及部屬新的測試程式,請參考下圖的<sshexec>以及<scp>兩區塊。至於以ssh連線需要用到的IP、 帳號及密碼,就請先在build file的<property>中定義好。
定義好了之後,便可執行Ant並選擇deploy-jars這個target來更新測試程式。看到這邊鄉民們可能會想:「上面這段build file透過ssh來部屬測試程式,Linux作業系統安裝ssh服務當然沒問題,但Windows作業系統呢?」
Windows作業系統也是可以透過ssh來部屬測試程式,不過要先動一下手腳,在測試機上安裝 Cygwin。這套軟體可以在Windows上模擬Linux的環境,安裝時記得加選sshd即可。詳細安裝與設定方式請鄉民們自行google,網路上有很多詳細的資料。
接下來,為deploy-jars多定義一台Windows 7測試機。
deploy-T3QQF-Win7的內容一樣是刪除舊的測試碼以及複製測試碼,分別就是下圖看到的<sshexec>以及<scp>兩區塊,跟Linux機器主要就是路徑的差別。
以後改完測試碼執行deploy-jars這個target,就能依序的更新Ubuntu與Win7機器上的測試碼。至於更新之後要如何執行測試程式,鄉民們可以選擇ssh遠端登入手動執行,或是再寫一個script,待測試案例部屬完畢之後,呼叫這個script自動執行測試。
***
還有其他方法嗎
鄉民們若是使用git這種分散式版控系統,在寫完程式之後,程式碼會先送交到本地端的git。如果鄉民們在本地端也裝了一套支援分散式建構的持續整合系統(例如Jenkins),便可透過持續整合系統自動將測試程式部屬到遠端電腦,並可自動執行與收集測試結果。有興趣的鄉民可自行嘗試。
***
友藏內心獨白:土炮系列居然重出江湖了。
沒有留言:
張貼留言