測試驅動開發TDD | IDCF FDCC認證學員作品
一、TDD是什麼
“測試驅動開發不是一種測試技術。它是一種分析技術、設計技術,更是一種組織所有開發活動的技術”。 ——Kent Beck(TDD之父)
二、TDD需要考慮什麼
測試先行為何物
TDD方法的掌握有一些誤解導致
不可執行——寫一個功能最小完備的單元測試,並使得該單元測試編譯失敗。
可執行——快速編寫剛剛好使測試透過的程式碼,不需要考慮太多,甚至可以使用一些不合理的方法。
重構——消除剛剛編碼過程引入的重複設計,最佳化設計結構。
重構的關鍵首先在於如何識別程式碼的壞味道, 需要閱讀一定規模優秀的開原始碼,當這些壞味道變成你的一種直覺,你就會降低對糟糕程式碼的容忍度。
重構手法與程式碼壞味道一一對應。若有測試保障,重構就變得安全。但儘可能地,我們還是希望運用工具提供的自動重構功能,這既提高了重構效率,也在一定程度下確保了重構的安全。
2.5 單元測試
確定開發人員編寫,測試函式/方法粒度,程式碼正確性檢驗方式(尤其測試資料),編碼前後和修改程式碼時透過單元測試。
三、TDD實踐
3.1 思考要做什麼,如何測試它,然後編寫一個測試(所需的介面型別、輸入和資料)。
例如:
3.2 編寫code使測試失敗(明確失敗比模糊好)。
執行失敗code
3.3 編寫剛剛測試透過code(確保之前編寫的測試)。
執行成功的code
3.4 執行獲取測試結果。如果沒有透過,則立刻解決它。
示例:
3.5 如果有重複的邏輯或無法解釋的程式碼,立刻重構(減少耦合,增加內聚力)。再次執行測試驗證重構是否引入新的錯誤。如果沒有透過,很可能是在重構時犯了一些錯誤,需要立即修復並重新執行,直到所有測試透過。
重構前:
重構後
執行結果:
3.6 重複01-05上述步驟,直到找不到更多驅動編寫新程式碼的測試。
四、TDD難點
四、總結
“程式碼簡潔可用這句言簡意賅的話,正是 TDD 所追求的目標” ——《Test-Driven Development》Kent Beck
《重構》 《測試驅動開發》 Test-driven development:https://en.wikipedia.org/wiki/Test-driven_development Lyning技術部落格:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558019/viewspace-2702589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TDD(測試驅動開發)死了嗎?
- 測試驅動開發(TDD)的思考
- 測試驅動開發(TDD)例項演示
- TDD---測試驅動開發,簡單的一點認識
- 測試驅動開發(TDD)實戰心得 - DeniMoka
- 是否使用TDD(測試驅動開發)進行UI開發UI
- 測試驅動開發(TDD)跟敏捷開發有衝突敏捷
- 變異測試是測試驅動開發(TDD)的演變
- 測試驅動開發(TDD)總結——原理篇
- 測試驅動開發(TDD)—— 資料庫查詢篇資料庫
- 拒絕測試驅動開發(TDD)的10個理由
- 使用 TDD 測試驅動開發來構建 Laravel REST APILaravelRESTAPI
- Kent Beck 的《測試驅動開發》(TDD) Money示例Ruby版
- Scrum敏捷軟體開發之技術實踐——測試驅動開發TDDScrum敏捷
- Go 語言:透過TDD測試驅動開發學習 Mocking (模擬)的思想GoMock
- "測試"驅動開發
- 使用IdleTest進行TDD單元測試驅動開發演練(2)
- 使用IdleTest進行TDD單元測試驅動開發演練(1)
- 敏捷聯盟Gordon Pask獎獲得者講“測試驅動開發”(TDD)敏捷Go
- Swift 進階開發指南:如何使用 Quick、Nimble 執行測試驅動開發(TDD)SwiftUI
- 【敏捷開發】驅動測試開發敏捷
- 談“測試驅動的開發”
- 小議測試驅動開發
- AWS開發人員認證考試樣題解析
- Laravel 測試驅動開發 -- 正向單元測試Laravel
- 你這不是測試驅動開發
- 什麼是測試驅動開發
- 放棄測試優先式開發(TDD)
- 使用IdleTest進行TDD單元測試驅動開發演練(3) 之 ASP.NET MVCASP.NETMVC
- 基於測試驅動的iOS開發iOS
- 面向 C++ 的測試驅動開發C++
- 測試驅動開發到底好不好
- 開發人員 vs 測試人員
- 敏捷交付中的自動化測試 | IDCF敏捷
- 驅動開發目標測試機器設定
- TDD測試驅動開發:Hello, YOU -- 透過簡單的 hello_test.go 程式學會編寫測試,學習使用常量來最佳化並根據需要重構Go
- 測試驅動開發在專案中的實踐
- 基於Python的測試驅動開發實戰Python