Posted on 2005-11-26 10:37
canonical 閱讀(544)
評論(0) 編輯 收藏 所屬分類:
設計理論
軟件開發是從設計開始的,
而設計的產物是一堆描述性的文檔. 我們總是希望這些描述能夠盡量完備, 例如在一個用例描述中我們總是希望加入盡量多的異常流描述,
盡量把所有的相關情況都同時呈現出來. 當我們對系統進行了大量的分解和分析工作之后, 往往會遇到一種理解上和驗證上的困難,
即我們如何才能確保某個use case的運行結果恰好能夠滿足另外一個use case的輸入需求, 整個系統能否精密的配合在一起.
此時我們可以依賴一些整體架構設計的文檔描述, 或者補充更多的系統連接上的說明, 但是無論如何,
要在思維中同時把握那么多條執行路徑是一件艱難的事情.
設計文檔可以說是對系統行為的一種抽象性的規約,
為了驗證這種抽象描述的正確性, 在缺乏理論保證的情況下, 我們唯一的選擇就是抽樣檢驗, 即我們需要構造一些測試用例,
特別是那些描述了一個完整業務流程的全局性的測試用例(用戶故事). 在測試用例中, 我們并不需要構造出所有完整的執行路徑,
只需要對一些關鍵性的業務路徑進行檢驗就可以了, 局部的異常流處理很多時候都可以通過局部的單元測試來檢驗.
測試用例最好以測試代碼的方式提供,而不是一組文本描述. 我們應該盡量在開發的早期使得全局測試用例就能夠運行起來,
使它成為系統演化的驅動力之一, 并根據系統開發的進展同步的進行調整. 測試驅動開發(Test Driven
Development)所指的絕不僅僅是對單個類所進行的單元測試(Unit Test).
Test的一個重要作用在于實例化所有必要的抽象約束條件, 通過sample來驅動系統的發展.