1. 程式人生 > >淺談TDD、BDD與ATDD軟體開發 (敏捷開發模式)

淺談TDD、BDD與ATDD軟體開發 (敏捷開發模式)

這些知識之前就瞭解了一點,還沒來得急總結,現在總結一下。

1. 首先了解一下這三個開發模式都是什麼意思:

  • TDD:測試驅動開發(Test-Driven Development)

測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方法論。TDD的原理是在開發功能程式碼之前,先編寫單元測試用例程式碼,測試程式碼確定需要編寫什麼產品程式碼。TDD的基本思路就是通過測試來推動整個開發的進行,但測試驅動開發並不只是單純的測試工作,而是把需求分析,設計,質量控制量化的過程。TDD首先考慮使用需求(物件、功能、過程、介面等),主要是編寫測試用例框架對功能的過程和介面進行設計,而測試框架可以持續進行驗證。

  • BDD:行為驅動開發(Behavior Driven Development)

行為驅動開發是一種敏捷軟體開發的技術,它鼓勵軟體專案中的開發者、QA和非技術人員或商業參與者之間的協作。主要是從使用者的需求出發,強調系統行為。BDD最初是由Dan North在2003年命名,它包括驗收測試和客戶測試驅動等的極限程式設計的實踐,作為對測試驅動開發的迴應。

  • ATDD:驗收測試驅動開發(Acceptance Test Driven Development)

TDD 只是開發人員的職責,通過單元測試用例來驅動功能程式碼的實現。在準備實施一個功能或特性之前,首先團隊需要定義出期望的質量標準和驗收細則,以明確而且達成共識的驗收測試計劃(包含一系列測試場景)來驅動開發人員的TDD實踐和測試人員的測試指令碼開發。面向開發人員,強調如何實現系統以及如何檢驗。

2. 軟體開發過程中最常見的兩個問題

需求和開發脫節:

  • 使用者想要的功能沒有開發
  • 開發的功能並非使用者想要
  • 使用者和開發人員所說語言不同
開發和測試脫節:
  • 開發和測試被認為割裂
  • 從開發到測試周期過長
  • 測試自動化程度低
3. 如何解決上面說的兩個問題 使用BDD和ATDD可以解決需求和開發脫節的問題,首先他們都是從使用者的需求出發,保證程式實現效果與使用者需求一致。 這個過程可以使用基於BDD的自動化測試工具Cucumber。
解決開發和測試脫節主要從以下幾個方面入手:
  • 開發的全過程都要貫穿測試:單元測試,整合測試和系統測試
  • 測試需要自動化
  • 所有測試通過,開發才算完成
  • 持續整合,保證每一次整合系統都能執行
4. 如何進行CI(Continuous Integration)也就是持續整合        ● 持續提交程式碼 (Check-in)
                ○ 一天之中多次提交
       ● 持續構建程式碼 (Build)
                ○ 保證在任何時刻程式碼是可以繼續開發的
       ● 持續部署程式碼 (Deploy)
                ○ 保證始終有一個可以部署的版本
       ● 持續測試程式碼 (Test)
                ○ 每次提交均執行單元測試
                ○ 每天一次或數次整合測試
                ○ 每天一次或數次系統測試
持續整合工具:Jenkins
5. 一張圖比較TDD與ATDD