按契約程式設計和測試驅動開發

2021-04-13 02:48:25 字數 617 閱讀 8815

一直以來,我總覺得按契約程式設計是assert()巨集的延伸,不夠現代,作用和測試驅動開發不能相比。測試驅動開發能夠覆蓋設計,編碼,回歸相容測試等各個 領域。

但是任何工具/方法都有它的適應面,如果不是,按契約程式設計也就不會出現了。總的來說,按契約程式設計台階較低,而測試驅動開發對開發者的要求較高。

1. 測試驅動的執行環境和程式的正式執行環境不同,而契約則是合一的。也就是說不需要單獨準備測試執行環境。想想測試驅動開發使用的mock和模擬器。有多少人願意僅僅為了測試而構造這些**,這些**沒有實際產出。使用契約,則不需要建立/模擬執行環境。

2. mock和模擬器需要極高的程式設計技巧,不是所有人都有這個能力或者時間。軟體開發常常有很大的壓力。

3. 測試驅動開發常常是測試優先驅動開發,即先寫測試後寫實現。對已有**新增測試,往往缺乏動力,而且通常是非常困難的。因為**要便於單元測試,需要做設計上的安排,盡量剝離對其他類庫和環境(比如資料庫,檔案,網路)的依賴。契約程式設計則不一樣,隨時都可以新增契約,甚至一邊閱讀別人的**一邊新增。

測試驅動開發結合重構產生優秀的設計和**,按契約程式設計則更利於工程和監管。絕大多數的軟體開發者都沒有構建完美**的願望,沒有動機,就不會有行動。而按契約程式設計則是提供質量最直接,最方便的方式,更能面對任務壓力,所以較易實施。

測試驅動開發和IOC

我們說測試驅動可以是xp的一部分,xp講究的是適當設計 很多時候被人理解為不設計或草設計 同樣要實現tdd也要進行設計,這個設計就要考慮到 的可測試性,這就是我們所說的利於測試的設計。mock物件的提出和mock工具的使用又為我們提供了隔離測試 模擬複雜物件的平台。有時我們的 會讓mock物件也無能...

測試驅動開發

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

測試驅動開發

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