淺談TDD、BDD與ATDD軟體開發 (敏捷開發模式)
阿新 • • 發佈:2018-12-23
這些知識之前就瞭解了一點,還沒來得急總結,現在總結一下。
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. 軟體開發過程中最常見的兩個問題
需求和開發脫節:
- 使用者想要的功能沒有開發
- 開發的功能並非使用者想要
- 使用者和開發人員所說語言不同
- 開發和測試被認為割裂
- 從開發到測試周期過長
- 測試自動化程度低
解決開發和測試脫節主要從以下幾個方面入手:
- 開發的全過程都要貫穿測試:單元測試,整合測試和系統測試
- 測試需要自動化
- 所有測試通過,開發才算完成
- 持續整合,保證每一次整合系統都能執行
○ 一天之中多次提交
● 持續構建程式碼 (Build)
○ 保證在任何時刻程式碼是可以繼續開發的
● 持續部署程式碼 (Deploy)
○ 保證始終有一個可以部署的版本
● 持續測試程式碼 (Test)
○ 每次提交均執行單元測試
○ 每天一次或數次整合測試
○ 每天一次或數次系統測試
持續整合工具:Jenkins
5. 一張圖比較TDD與ATDD