兩周的TDD打卡練習,剛開始很不适應,原來我們軟體開發的過程都是先分析需求,理清思路,然後編寫業務功能代碼,最後補充單元測試,單元測試隻是覆寫正常的功能。這種模式,到測試階段bug成堆,不停地修改bug,測試,會導緻軟體品質比較低,後期維護成本高,更可能延長軟體傳遞周期。使用TDD之後,發現這種TDD的方法在效率和品質上都有很大提升。首先TDD開發模式可以提前确認需求,減少開發過程的終端等待,采用小步快走的方式,節省調試時間(每寫完一段代碼,就可以很快的測試代碼的正确性), 再者,先編寫測試,可以保證高測試覆寫率,功能分支基本都被覆寫到,同時大量的單元測試覆寫率,可以随時自動測試回歸,保證原有功能未被破壞的同時快速添加新的功能,軟體品質得到有效保證。
-
什麼是TDD
TDD(測試驅動開發)是靈活開發中的一項核心實踐和技術,也是一種設計方法論。TDD的原理是在開發功能代碼之前,先編寫單元測試用例代碼,測試代碼确定需要編寫什麼産品代碼。
TDD的基本思路就是通過測試來推動整個開發的進行,但測試驅動開發并不隻是單純的測試工作,而是把需求分析,設計,品質控制量化的過程。
- 怎麼TDD 上面的圖檔形象的說明了TDD的基本流程: 紅——綠——重構,完整的TDD的流程是:
TDD打卡總結 寫一個測試用例——>運作測試——>寫剛好能讓測試通過的實作——>運作測試——>識别壞味道,用手法修改代碼——>運作測試TDD打卡總結 -
怎麼才能做好TDD
對于怎麼做好TDD這個問題,我很難回答好這個問題,接觸TDD的時間不長,自身經驗有待提高,隻能說幾點對這個問題的認識。
首先,團隊需要建立一個共識,團隊成員都認可TDD的開發模式,并落地到日常的開發過程中,把TDD變成一種程式設計習慣,固有的思維模式。
再者,加入一些靈活開發、TDD驅動開發的團體,包括公衆号、社群等,經常吸取領域内專家的意見。
再有, 可以閱讀一些專業書籍,掌握一些理論知識,從方法輪的高度提升認識,比如說《測試驅動開發》,《代碼整潔之道》、《重構》等。
-
寫在最後
最近除了接觸了TDD, 還在接觸BDD(行為驅動開發),它對TDD的理念進行了擴充,在TDD中側重點偏向開發,通過測試用例來規範限制開發者編寫出品質更高、bug更少的代碼。而BDD更加側重設計,其要求在設計測試用例的時候對系統進行定義,倡導使用通用的語言将系統的行為描述出來,将系統設計和測試用例結合起來,進而以此為驅動進行開發工作。
BDD的通用語言是一種近乎自然語言的描述軟體的形式。傳統的開發模式中,客戶很難從技術層面了解問題,開發人員很難從業務需求考慮問題,基于這種通用語言形式可以盡可能的避免客戶和開發者在溝通上的障礙,實作客戶和開發者同時定義系統的需求。避免了因為了解需求不充分而帶來的不必要的工作量。
在後面的工作中,會繼續深入落地TDD與BDD,通過更多的實踐,掌握靈活開發、執行個體化需求等技能。