測試驅動開發——我們要的不僅僅是「質量」
測試驅動開發是極限程式設計裡很重要的乙個實踐,很多其他實踐都是以這個實踐為基礎的。
測試驅動開發核心就是所有的實現都是測試「逼」出來的,所有的實現**都是為了讓測試通過而編寫的,如果測試都通過了我們就可以拒絕再新增新的功能了或新的**了,要讓我寫更多的**,好,新增乙個測試吧。
測試驅動開發的道理很簡單:要知道好壞,用用才知道。比如,你想要買個東西,你肯定最想知道的是使用過這個東西人的評價,因為沒有使用這個東西很難知道這個東西是不是好的。軟體和**也是一樣,你設計一塊**為的是什麼,為的是別的**可以呼叫這塊**幹一些事情,那怎麼才能知道你寫的**是不是好的呢。那麼測試驅動開發就是,我先以呼叫方的角度來呼叫這塊**,並且從呼叫方的角度說出我期望的結果。在這裡我們不僅僅對期望的結果進行驗證,很重要的一點是,我們先用用你這個介面,好不好用。一般來講如果你的**依賴很多其他元素,那麼將是很難測試的,因為在單元測試中你必須解除對其他元素的依賴,所以使用測試驅動開發出來的**,往往具有很好的低耦合性。
當我們寫單元測試時,我們往往在乙個測試裡只測試「目的」,如果你發現你的測試方法名稱裡總是帶有and/or之類的單詞時,這就表明被測試的方法職責可能不單一,這也有助於幫助我們找出職責不單一的**。
單元測試乙個最重要的作用估計就是設定安全網,將你的**放置在這個網中,當以後需要改進**的時候可以快速的自動化回歸以前所有的測試,以保證你改進**的時候沒有破壞以前的功能。但人都是懶惰的,如果是先寫功能實現**,後寫測試,有的時候我們就得過且過算了,因為覺得那測試實在太簡單了,而且有時候因為功能**寫得不好,造成後面很難新增測試,然後懶惰心理作怪,得過且過,就把測試給跳過去了。如果我們確定乙個規則:沒有測試失敗我拒絕寫**,那麼在你寫功能**的時候這張安全網就已經設定好了。後面所有的任何**都是為了修復失敗的測試。而且看見綠條一次又一次的亮起,總是給我們無比的信心,乙個接乙個的測試通過了,就是告訴我們正在穩步前進,我們離成功又接近了一步。
測試驅動開發環
下面是經典的測試驅動環:
TDD重構感悟
tdd和重構練功房打卡總共兩周時間,從第一關的fizzbuzz到十三關的英文單詞遊戲,每一關都有其訓練指標和意義,一路打卡下來,體驗和感悟都很深,作為一名程式設計師,這種訓練場景還是非常有必要的,從開發的流程和編碼的思路上都有很好的指導意義,下面是我對tdd和重構的一些理解。tdd是測試驅動開發 t...
TDD 測試驅動開發
test driven development 測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方 tdd的原理是在開發功能 之前,先編寫單元測試用例 測試 確定需要編 寫什麼產品 tdd雖是敏捷方法的核心實踐,但不只適用於xp extreme programming 同樣可以適用於其他開...
TDD與傳統測試
tdd原本是一種程式設計技術,它間接地確保你的 能徹底地被單元測試檢查。可是,它能做的不只這些。你仍然需要參考傳統的一些測試比如功能測試 使用者驗收測試 系統整合測試等等。大部分的這些測試都可以在專案開始之前就進行,如果你選擇這麼做的話 而且你也應該這麼做 實際在 xp裡,專案負責人指定的使用者驗收...