現在,人們經常談論敏捷開發。
什麼是敏捷開發?
敏捷開發 是一種響應快速變化的需求的軟件開發能力。它們的具體名稱、概念、過程和術語各不相同。與“非敏捷”相比,它們強調程序員團隊和業務專家之間的密切協作、面對面的交流(被認為比書面文檔更有效),並經常交付新的軟件版本、小型和 自組織 的小型團隊和有價值的功能編寫,以及適應不斷變化的需求的團隊組織方法,更加關注人在軟件開發中的作用。
但是,TDD 敏捷開發方法有幾個類似的版本,例如 TDD:BDD、DDD 和 ATDD。在詳細介紹 TDD 之前,我先簡單介紹一下這些方法:
TDD:測試驅動開發
測試驅動開發 (TDD)是一種軟件開發過程,它依賴於在軟件完全開發之前將軟件需求轉化為測試用例,並通過對所有測試用例重複測試軟件來跟踪所有軟件開發。這與先開發軟件然後創建測試用例相反。一些流行的模型很好地支持 TDD,例如 MVC 和 MVP。
BDD:行為驅動開發(Behavior Driven Development)
行為驅動開發 (BDD) 也是一種敏捷軟件開發過程。它鼓勵開發人員、質量保證測試人員和客戶代表在軟件項目中進行協作。它鼓勵團隊使用對話和具體示例來形成對應用程序應該如何工作的共同理解。它來自測試驅動開發(TDD)。
ATDD:驗收測試驅動開發
為了通過單元測試用例促進功能代碼的實現,團隊需要定義預期的質量標準和驗收規則,通過清晰一致的驗收測試計劃(包括一系列測試情景)。對於開發人員來說,它強調如何實現系統以及如何對其進行測試。
DDD:域驅動設計
DDD指的是領域驅動設計,即領域驅動開發。DDD其實就是建立在這個基礎上的,因為它專注於服務層的設計,專注於業務的實現,將分析和設計結合起來,不再停留在分裂的狀態,為了正確全面的實現客戶需求,構建業務模型可擴展性。
TDD實施計劃
通過測試推動整個開發,但測試驅動開發不僅僅是一項簡單的測試工作,而是一個對需求分析、設計、質量控制進行量化的過程。
發展原則
先寫測試代碼,再寫函數代碼。
- 根據需求文檔編寫測試代碼,不實現功能;
- 不想一口就變胖。測試大型功能塊時,應先將其拆分成較小的功能塊進行測試;
- 記住不要寫代碼來完成功能,使用最簡單的代碼來實現功能;
- 如果需求可以測試,就寫測試代碼,不能測試或者覺得不需要測試的就放棄;
- 在更改/添加任何功能代碼之前,首先要考慮是否要更改/添加測試用例;
- 功能/測試代碼、結構不合理、重複代碼等,測試通過後及時重構。
TDD開發過程
- 分析並確定目標測試場景;
- 添加單元測試,驗證測試場景的輸入輸出;
- 運行測試,得到失敗的測試結果;
- 編寫最簡單的函數代碼通過測試;
- 再次運行測試,看到測試通過;
- 進行代碼重構,包括功能代碼和單元測試代碼;
- 重複以上步驟,直到開發完成。
TDD 的好處
- 減輕開發者的負擔。通過一個清晰的流程,讓我們一次只關註一個點,思考的負擔就更少了。
- 防護網。覆蓋完整的單元測試為產品代碼提供了保護網,便於滿足需求變更或改進代碼設計。因此,如果您的項目需求是穩定的,一次完成,並且沒有後續更改,那麼 TDD 的好處就更少了。
- 提前明確要求。先寫測試可以幫助我們提前思考需求,明確需求細節,而不是寫到一半就發現不清楚的需求。
- 快速反饋。很多人說,當TDD的時候,我的代碼量增加了,所以開發效率降低了。但是,如果你沒有單元測試,你必須手動測試它們,你會花費大量時間準備數據、啟動應用程序、修改界面等等,而且反饋很慢。準確地說,快速反饋是單元測試的一個好處。
Nice Article
I really liked your blog post. Fantastic.
Good day! Would you mind if I share your blog with my twitter group? There’s a lot of folks that I think would really appreciate your content. Please let me know. Thanks
aveo arıza kodu 89 Nikki Proctor opel arıza kodu 89 Jordanna Clegg opel arıza kodu 82 Samantha Thomas opel arıza kodu 84 Kobe Shepherd opel mokka arıza kodu 82
There is certainly a lot to know about this issue.I really like all the points you’ve made.
generic chloromycetin: cleocin for salefloxin generic
Really appreciate you sharing this post.Thanks Again. Really Great.
Major thankies for the article post.Really thank you! Keep writing.
Great blog post.Really thank you! Fantastic.
Thanks again for the blog.Much thanks again. Will read on…
A round of applause for your blog article. Awesome.
Thanks again for the post.Really looking forward to read more. Really Cool.
Major thanks for the blog.