2008年4月23日 星期三

O03 測試先行──保證設計能有正確的結果

設計與撰寫的目的,最基本的目的是為了保證功能需求可以被正確的執行。無論系統內部設計得再爛,只要把執行功能需要的動作都依正確順序放入並通過測試,在使用者的角度來看都可以被稱為及格的系統。

由於系統有這個最基本的要求,因此“功能必須正常執行”成為首要的目標。在元件設計完後,我通常都會對它的initial、dispose與幾個重要的執行方法進行測試,不過我的目的在於檢查Method內執行的動作是否正確且沒有缺漏。設計時比較像紙上談兵,聽起來似乎都很有道理,但是實現起來就會發現有所缺漏或是邏輯相互抵觸,這些都必須依賴測試來發現。

外在測試單位是API與Component Interface Method,內部測試則是以Flow Method內部為主要,在執行時驗證Flow內使用的Action與結果是否符合完成功能的需要。從第一個實作的元件開始(應該是從底層開始實作),就應該在實作結束時實行Unit Test來保證功能正確而且不會被修改。順利的話,通過Unit Test後都可以預期使用是完全正確且沒有問題的;這會讓設計更上層元件的人專心在其內部而毌須擔心底層元件的問題。

如果有餘力的話,在設計與實作時應該要經常檢驗Component Interface的定義是否具有高內聚與低耦合的特性。雖然“功能必須正常執行”是最基本的要求,但是我們應該把眼光放遠,將目標放在“每一個元件都能被單獨重用”,這樣才能更加速自己系統與其他系統的開發速度。

沒有留言:

張貼留言