淺談測試驅動開發(TDD) 軟件測試
測試驅動開發(TDD)是極限編程的重要特點,它以不斷的測試推動代碼的開發,既簡化了代碼,又保證了軟件質量。本文從開發人員使用的角度,介紹了 TDD 優勢、原理、過程、原則、測試技術、Tips 等方面。
背景
一個高效的軟件開發過程對軟件開發人員來說是至關重要的,決定著開發是痛苦的掙扎,還是不斷進步的喜悅。國人對軟件藍領的不屑,對繁瑣冗長的傳統開發過程的不耐,使大多數開發人員無所適從。最近興起的一些軟件開發過程相關的技術,提供一些比較高效、實用的軟件過程開發方法。其中比較基礎、關鍵的一個技術就是測試驅動開發(Test-Driven Development)。雖然TDD光大于極限編程,但測試驅動開發完全可以單獨應用。下面就從開發人員使用的角度進行介紹,使開發人員用最少的代價盡快理解、掌握、應用這種技術。下面分優勢,原理,過程,原則,測試技術,Tips等方面進行討論。
1. 優勢
TDD的基本思路就是通過測試來推動整個開發的進行。而測試驅動開發技術并不只是單純的測試工作。
需求向來就是軟件開發過程中感覺最不好明確描述、易變的東西。這里說的需求不只是指用戶的需求,還包括對代碼的使用需求。很多開發人員最害怕的就是后期還要修改某個類或者函數的接口進行修改或者擴展,為什么會發生這樣的事情就是因為這部分代碼的使用需求沒有很好的描述。測試驅動開發就是通過編寫測試用例,先考慮代碼的使用需求(包括功能、過程、接口等),而且這個描述是無二義的,可執行驗證的。
通過編寫這部分代碼的測試用例,對其功能的分解、使用過程、接口都進行了設計。而且這種從使用角度對代碼的設計通常更符合后期開發的需求?蓽y試的要求,對代碼的內聚性的提高和復用都非常有益。因此測試驅動開發也是一種代碼設計的過程。
開發人員通常對編寫文檔非常厭煩,但要使用、理解別人的代碼時通常又希望能有文檔進行指導。而測試驅動開發過程中產生的測試用例代碼就是對代碼的最好的解釋。
快樂工作的基礎就是對自己有信心,對自己的工作成果有信心。當前很多開發人員卻經常在擔心:“代碼是否正確?”“辛苦編寫的代碼還有沒有嚴重bug?”“修改的新代碼對其他部分有沒有影響?”。這種擔心甚至導致某些代碼應該修改卻不敢修改的地步。測試驅動開發提供的測試集就可以作為你信心的來源。
當然測試驅動開發最重要的功能還在于保障代碼的正確性,能夠迅速發現、定位bug。而迅速發現、定位bug是很多開發人員的夢想。針對關鍵代碼的測試集,以及不斷完善的測試用例,為迅速發現、定位bug提供了條件。
我的一段功能非常復雜的代碼使用TDD開發完成,真實環境應用中只發現幾個bug,而且很快被定位解決。您在應用后,也一定會為那種自信的開發過程,功能不斷增加、完善的感覺,迅速發現、定位bug的能力所感染,喜歡這個技術的。
那么是什么樣的原理、方法提供上面說的這些好處哪?下面我們就看看TDD的原理。
2. 原理
測試驅動開發的基本思想就是在開發功能代碼之前,先編寫測試代碼。也就是說在明確要開發某個功能后,首先思考如何對這個功能進行測試,并完成測試代碼的編寫,然后編寫相關的代碼滿足這些測試用例。然后循環進行添加其他功能,直到完全部功能的開發。
我們這里把這個技術的應用領域從代碼編寫擴展到整個開發過程。應該對整個開發過程的各個階段進行測試驅動,首先思考如何對這個階段進行測試、驗證、考核,并編寫相關的測試文檔,然后開始下一步工作,最后再驗證相關的工作。下圖是一個比較流行的測試模型:V測試模型。
【圖 V測試模型】

在開發的各個階段,包括需求分析、概要設計、詳細設計、編碼過程中都應該考慮相對應的測試工作,完成相關的測試用例的設計、測試方案、測試計劃的編寫。這里提到的開發階段只是舉例,根據實際的開發活動進行調整。相關的測試文檔也不一定是非常詳細復雜的文檔,或者什么形式,但應該養成測試驅動的習慣。
文章來源于領測軟件測試網 http://www.kjueaiud.com/