測試驅(qū)動開發(fā)(Test Driven Development,簡稱TDD) 是一種軟件開發(fā)過程中,先編寫測試再編寫代碼的開發(fā)方法。通過不斷測試,在保證代碼質(zhì)量的同時,也增強了代碼可維護性和可復用性。
1.什么是TDD
TDD 的基本思想是測試首先被編寫,然后才編寫與之相應的產(chǎn)品代碼。測試定義了一項驗證功能是否正常的自動化測試用例,這些用例能夠自動化地運行。此時,由于并沒有任何代碼實現(xiàn)該功能,所以相應的測試是不能通過的。接下來,程序員根據(jù)測試要求編寫足夠的代碼來使測試通過。代碼如此編寫:只實現(xiàn)剛好使得為完成的測試得以通過。當測試能夠通過之后,程序員便可以對新編寫的代碼進行重構(gòu)來消除不必要的冗余。這個過程不斷循環(huán),直至代碼達到所有需求都已經(jīng)滿足、易于維護。TDD 需要程序員全面理解整個應用場景功能,并能夠通過測試來精確、高效地實現(xiàn)自己對需求的理解。
2.TDD的優(yōu)點
1) 良好的代碼質(zhì)量:TDD 強制要求開發(fā)者先寫測試用例,然后才加入新功能。這樣做充分保證了軟件的正確性和可靠性,并避免了不必要的BUG。
2) 功能持續(xù)交付:因為每次只完成一個小功能,所以可以更快地發(fā)布軟件并由最終用戶測試新的功能。
3) 局部調(diào)試而非全局調(diào)試:使用 TDD 方法開發(fā)的程序,在出現(xiàn)故障時,很容易找到問題發(fā)生的位置,不需要整個程序重新運行。
4) 提高代碼的可維護性與復用性:使用 TDD 編寫代碼會讓程序員在思考中快速清楚應用場景及其需求,從而編寫出簡潔且易于復用的代碼,提高代碼質(zhì)量,便于維護。
3.TDD的缺點
1) 編寫代碼的效率降低:因為需要編寫測試代碼,所以相比其他方法,使用 TDD 需要更多的時間投入。
2) 前期準備不足可能造成較大的困難:因為需要構(gòu)思出每一個測試用例,如果前期沒能設計好,則后續(xù)的編碼過程會比較困難。
3) 需要準確了解系統(tǒng)需求:使用 TDD 需要準確地理解需求,這對程序員的精神狀態(tài)和素質(zhì)有不小的考驗。