測試驅動開發

維基百科,自由的百科全書
跳到: 導覽搜尋
軟件開發過程
核心行動
範式與模式
方法論與框架
支持行為
工具
標準與知識體系


測試驅動開發英語:Test-driven development,縮寫為TDD)是一種軟件開發過程中的應用方法,由極限編程中倡導,以其倡導先寫測試程序,然後編碼實現其功能得名。測試驅動開發始於20世紀90年代。測試驅動開發的目的是取得快速反饋並使用「illustrate the main line」方法來構建程序。

測試驅動開發是戴兩頂帽子思考的開發方式:先戴上實現功能的帽子,在測試的輔助下,快速實現其功能;再戴上重構的帽子,在測試的保護下,通過去除冗餘的代碼,提高代碼質量。測試驅動着整個開發過程:首先,驅動代碼的設計和功能的實現;其後,驅動代碼的再設計和重構。

測試驅動開發中測試的特徵[編輯]

測試驅動開發中需求分析和詳細設計的範疇,在代碼基本完畢以後,並且這些測試也成為單元測試的一個部分。

應用領域[編輯]

新軟件的開發,歷史系統的維護。

測試驅動開發相關討論[編輯]

正面評價[編輯]

  • 可以有效的避免過度設計帶來的浪費。但是也有人強調在開發前需要有完整的設計再實施可以有效的避免重構帶來的浪費。
  • 可以讓開發者在開發中擁有更全面的視角。

負面評價[編輯]

  • 開發者可能完成滿足了測試的代碼,而忽略了對實際需求的實現。有實踐者認為用結對編程的方式可以有效的避免這個問題。
  • 會放慢開發實際代碼的速度,特別對於要求開發速度的原型開發造成不利。這裏需要考慮開發速度需要包含功能和品質兩個方面,單純的代碼速度可能不能完全代表開發速度。
  • 對於GUI,資料庫和Web應用而言。構造單元測試比較困難,如果強行構造單元測試,反而給維護帶來額外的工作量。有開發者認為這個是由於設計方法,而不是開發方法造成的困難。
  • 使得開發更為關注用例和測試案例,而不是設計本身目前,對於這個觀點有較多的爭議。
  • 測試驅動開發會導致單元測試的覆蓋度不夠,比如可能缺乏邊界測試。在實際的操作中,和非測試驅動開發一樣,當代碼完成以後還是需要補充單元測試,提高測試的覆蓋度。

參見[編輯]

外部連結[編輯]