談談測試驅動開發

2021-09-05 05:32:19 字數 3217 閱讀 4950

由於現在很多系統都是基於測試驅動開發完成的,所以我們就先來看一下什麼叫測試驅動開發:測試驅動開發的基本思想就是在開發功能**之前, 先編寫測試**。也就是說在明確要開發某個功能後,首先思考如何對這個功能進行測試,並完成測試**的編寫,然後編寫相關的**滿足這些測試用例。然後循 環進行新增其他功能,直到完全部功能的開發。由於過程很長,在寫的時候也省略了不少步驟,所以有些地方銜接不是那麼的流暢,對此表示非常的抱歉!

根據自身做專案使用tdd的一點微薄經驗,總結了以下幾個注意事項:

◆ 找準切入點:不論是開發乙個新的系統還是復原系統,都必須先找準乙個或多個切入點,從切入點經歷」測試**-功能**-測試-重構「來逐漸完善整個系統,往往這個切入點就是功能點,就是這個系統具備哪些功能,然後根據這些功能寫出測試用例。

◆ 測試列表:

大家都知道乙個系統或者乙個框架都是很龐大的,如果要引入測試驅動開發,首先我們必須要有乙個測試列表,在任何階段想新增功能需求問題時,把相 關功能點加到測試列表中,然後繼續開發的工作。然後不斷的完成對應的測試用例、功能**、重構。這樣可以避免疏漏的同時也能把控當前的進度。

◆ 測試驅動:

這個比較核心。完成某個功能,某個類,首先編寫測試**,考慮其如何使用、如何測試。然後在對其進行設計、編碼。這裡也強調先編寫對功能**的判斷用的斷言語句,然後編寫相應的輔助語句。

◆ 良好的**設計及可測性:

功能**設計、開發時應該具有較強的可測試性。應該盡量保持良好的設計原則和**規範,如盡量依賴於介面、盡量高內聚、低耦合等等。

◆ 模組或功能隔離:

不同**的測試應該相互隔離。對一塊**的測試只考慮此**的測試,不要考慮其實現細節,不然就會陷入一團亂麻之中,這個可以通過mock來實現,同時在開始的時候也要劃分好邊界。

◆ 適當引入mock:

在適當情況下引入mock來完成單元測試,這種情況尤其是在邊際互動比較多的案例當中,對於互動比較多且複雜的多個類關係可以用mock暫時模擬,這是乙個不錯的解決方案。

◆ 由小到大、由偏到全、統籌兼顧:

乙個產品或者乙個專案是比較大的,所以我們這裡就需要遵循由小到大、由偏到全、統籌兼顧的原則,分解功能和**。把所有的規模大、複雜性高的工作,分解成小的任務來完成,這樣既方便團隊協作,同時也減輕了複雜度,使整個開發一下子變得簡單了許多。

◆ 保持隨時重構的習慣

很多開發者在經過測試**-功能**-測試通過以後就當完成了任務,其實你會發現隨著其他功能的引入或者使用過程中發現了很多重複、冗餘的代 碼、再或者先前的**結構和設計不太合理,這個時候就需要隨時的進行重構和單元測試,在一方面可以避免產生風險,另一方面可以使系統更加完善。

◆ 隨時進行回歸:

在」測試**-功能**-測試-重構「的迴圈中一定要記住多回歸,因為這樣可以保證當前的**是不是會影響到前面的功能,其實只需要看看紅綠燈就行。

檢視和統計**覆蓋率

通過前面的步驟之後,我們就要看一下實現的功能是否達到我們的預期目標,除了功能完善之外,還要保證**的覆蓋率,因為它是乙個系統穩定與否、可維護性與否的乙個重大標誌。

這個工具使用起來比vs自帶的單元測試和測試覆蓋功能好用,所以從2023年開始基本就用它作為乙個必備的工具使用。關於它具體的功能和怎麼使用,我們這裡不詳細介紹,網上也有很多文章,大家可以做一下參考和研究。下圖是安裝後以外掛程式的形式出現在vs中的效果:

testdriven.net原來叫做nunitaddin,它是個visual studio外掛程式,整合了如下測試框架:nunit、mbunit、 zanebug、mstest、ncover、ncoverexplorer、reflector、typemock、dottrace和msbee,它 主要面向使用tdd的開發者,主要特性列舉如下:

單鍵執行方法、類、命名空間、專案和解決方案中的單元測試

能夠快速測試例項方法、靜態方法或屬性

可以直接跳到.net reflector中的任何方法、型別、專案或引用中,這個功能提供了相當大的方便

在除錯過程中可以檢視.net reflector中的任何模組或堆疊資訊

支援多種單元測試框架,包括nunit、mbunit、xunit和mstest

測試執行在自己的程序中以消除其他問題和邊際效應

可以輕鬆對任何目標測試進行除錯或執行**覆蓋率測試(比微軟自帶的單元測試和**覆蓋功能要好用多了)

支援所有主流的.net語言:c#、vb、c++和f#

testdriven.net是基於.net框架的。再由於vs 2010支援使用多個.net版本,所以支援各個vs版本和工具就沒有問題了

完全支援在vs 2008和vs 2010中使用mstest

完全支援.net reflector 6 pro

支援nunit 2.5.3

支援和相容vs 2005、vs 2008、vs 2010幾個版本

支援silverlight 4的測試

testdriven.net相容於如下vs版本:windows xp、vista、windows 7、windows 2000、windows 2003和windows 2008(32和64位)上的visual studio 2005、2008和2010。官方已經不再對vs 2003支援。

企業版:每台機器乙個許可認證

專業版:一般的許可形式

談談測試驅動開發

由於現在很多系統都是基於測試驅動開發完成的,所以我們就先來看一下什麼叫測試驅動開發 測試驅動開發的基本思想就是在開發功能 之前,先編寫測試 也就是說在明確要開發某個功能後,首先思考如何對這個功能進行測試,並完成測試 的編寫,然後編寫相關的 滿足這些測試用例。然後循 環進行新增其他功能,直到完全部功能...

測試驅動開發

測試驅動開發 test driven development,英文縮寫tdd 是極限程式設計的乙個重要組成部分,它的基本思想就是在開發功能 之前,先編寫測試 也就是說在明確要開發某個功能後,首先思考如何對這個功能進行測試,並完成測試 的編寫,然後編寫相關的 滿足這些測試用例。然後迴圈進行新增其他功能...

測試驅動開發

在開發的過程中,總有種憂慮感,擔心系統會出現這樣或那樣的bug,修改bug後,更要把所有的流程重測一遍。於是我們在完成 後,編寫測試程式,將所有的流程通過測試程式自動跑一遍。測試驅動開發就在這種需求下誕生了。它將測試用例的開發提到了功能 之前,這樣功能 是為滿足測試用例能通過而開發,同時,測試用例也...