l

2011年7月21日 星期四

多準備幾包吧

April 21 20:03~23:01

這個『包』,不是紅包,不是名牌包,更不是蒙古包,而是『軟體開發包』。

『軟體開發包』 是什麼包?話說 Teddy 自從開發了跨平台軟體之後,才發現原本開發跨平台(跨作業系統)的軟體已經是不簡單了,如果還和底層的硬體扯上關係,那就更是麻煩。例如,你的程式要讀電腦晶片組中的資料,而這個電腦上跑的可能是各種不同版本的 Windows 或是 Linux 作業系統,所以當程式開發完成之後,在這些不同的作業系統中測試你的程式是絕對需要的工作。有時候萬一發生問題,免不了可能需要在發生問題的環境中(例如,在 CentOS 6.0 x64 上程式有問題)安裝你的開發環境(例如 Eclipse)『就地觀察』發生問題的原因,如果能夠順便將 bugs 給『就地正法』那就更好了。

如果你的程式只要在某個型號的電腦上執行也就算了,萬一你的程式需要支援,例如說,30 款具有不同晶片組的電腦,那頭就大了。光是開發,測試與 debug 的『環境設定』工作就做不完了,怎麼辦?請老闆增加人手幫忙,想太多,不可能。加班,不但做不完而且品質與效率變得差,行不通。

***

之前 Teddy  讀了幾本 Lean 的書,其中提到 Toyota 之所以會成功的原因之一,是因為它的組裝線具備有『少量多樣』的組裝能力,並且可以達到接單生產與零庫存的目標(傳統的汽車組裝線都是『單一(或是少樣)產品,大量生產』以達到經濟規模為目的)。要做到『少量多樣』其實是很不容易的,因為工廠需要因應不同的產品而調整組裝線(調整機台,改變使用的工具,校對儀器等等)。學過作業系統(OS)的人都知道,這種 context switch 是一種浪費,過於頻繁的 context switch 甚至會造成『CPU 花在 context switch 的時間大於執行工作的時間』這種現象。所以,Toyota 想盡辦法改善組裝線,並採用自動化的方式將『調整組裝線』的時間降到最低,克服了這個問題。

有一天 Teddy 就在想,每次測試軟體功能,都要先安裝作業系統(準備一個乾淨的環境),然後安裝待測軟體(一直按下一步,下一步),然後手動測試想要測試的功能。後來用 Robot Framework 寫了許多自動化的功能測試,但是在一個全新的環境中要執行這些 Robot test cases,還是每次都要先把相關的工具都裝好(例如裝 Robot 本身,還有 Python 等等),也是挺不方便且花時間。Teddy 在『落實的能力 』裡面有提可以寫一些簡單的 scripts 製作『自動化功能測試包』,以綠色軟體的方式隨時佈署到待測平台上面執行自動化功能測試。長久下來所節省的手動安裝測試工具的時間是很可觀的。

最近 Teddy 又在想,有時候需要把整個開發環境從平常使用的開發機上面複製一份到有問題的電腦中進行 debug(當然也可以用遠端更新的方式來 debug,但是有時候直接在出問題的電腦中 trace 問題會比較容易)。問題來了,遇到這種情況,要把『整個開發環境複製一份到有問題的電腦中』有時候還挺花時間的,而且很容易出錯,丟三落四的,什麼該 copy 的檔案忘了 copy,該設定的環境變數也沒改到。所以,如果除了『自動化功能測試包』以外,如果能夠有『自動化開發環境安裝包』,自動安裝(自動解壓縮並執行一個設定的 script)之後就可以立刻開發軟體,那就更方便了。

除了上面 Teddy 提到的這『兩包』,還有什麼『包』可以讓開發軟體變得比較『順』一點呢?

***

友藏內心獨白:『自動化分散式 CI 包』好像也挺不錯的。

1 則留言:

  1. Thinkpad T420s 安裝 4 套 OS (Windows7 32bit/Windows7 64bit/Windows XP/Ubuntu Linux)

    「因為是測試機, 所以必需要裝很多 OS. 而這些 OS 要是可以復原的.
    以現在測試 Wifi performance 而言, 大多都要求用 Intel Ultimate 6300N 3×3 wifi 測試, 以求公平. 而這樣的環境用 VM 是沒有人承認這個數據的, 所以… 在一台電腦內要安裝多套 OS 就是必需的, 不同的狀況客戶會要求不同的 OS. 例如 NAS Performance 就要 Windows 7.

    所以接下來就是要在 T420s 安裝以下 OS…」

    回覆刪除