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