測試驅動開發

2023-01-18 18:09:02 字數 1934 閱讀 2858

測試驅動開發(tdd)

如果我們能夠在設計程式前先設計測試方案,情況怎麼樣?

如果我們能夠做到:除非缺乏某個功能將導致測試失敗;否則就拒絕在程式中實現該功能,情況會怎麼樣?

如果我們能夠做到:除非由於缺少某行**將導致測試失敗,否則就拒絕在程式中增加哪怕一行**,情況會怎樣?

如果首先編寫失敗的測試表明需要一項功能,然後再逐漸地增加那項功能使測試通過,情況又會怎樣?

這對於我們正在編寫的軟體的設計有什麼影響?如果存在這樣一組包羅永珍的測試,我們能夠從中得到什麼好處?

● 建立乙個清單,列出我們所知道的需要讓其執行通過的測試

● 通過一小段**說明我們希望看到怎樣的一種操作

● 暫時忽略junit的一些細節問題

● 通過建立存根(stub)來讓測試程式通過編譯

● 通過一些另類的做法來讓測試執行通過

● 逐漸使工作**一般化,用變數代替常量

● 將新的工作逐步加入計畫清單,而不是一次全部提出

1. 偽實現

返回乙個常量並逐漸用變數代替常量直至偽實現**成為真正實現的**。

2. 顯明實現

將真正實現的**直接敲入。

3. 三角法

1. 寫乙個測試程式

2. 讓測試程式編譯通過

3. 執行測試程式,發現不能執行

4. 讓測試程式可以執行

5. 消除重複設計,優化設計結構(重構)

不同的階段有不同的目的。它們需要不同的解決方式,不同的審美觀。前三個階段需要很快完成,這樣我們就達到乙個包含新功能的已知狀態。

你可以不擇手段地到達這一狀態,這是因為就在此短暫的一刻盡快地讓測試程式執行通過比如何設計更重要。

雖然在前三階段,你可以拋棄所有的設計原則,但是,記住,這一開發周期還沒有結束。沒有第五步,整個週期的前四步也毫無意義。要適時地進行設計。

該讓它執行通過時就讓它執行通過,該優化時讓要進行優化。

經過前面三個階段,可能你的**充滿了很多重複**和重複設計。請記住,在你編寫下乙個測試**之前請把它們清除掉。

● 加入乙個小的測試

● 執行所有的測試,執行失敗

● 適當修改

● 執行測試且成功

● 重構,消除重複設計,優化設計結構

當發現某種情形不該成立或者應該成立時,第一件事情都應該把它變成測試**,然後證明它(測試不通過)。再修改現有**以通過測試。

或者說:

● 將乙個設計缺陷(***)轉化為乙個由此缺陷導致執行失敗的測試程式。

● 將採用存根實現使**迅速編譯通過

● 鍵入我們認為正確的**以使測試程式能盡快工作

每一次只解決清單上的乙個問題。讓測試通過後,要及時進行重構。在未消除重複**之前,請不要寫下乙個測試用例。

當你增加一行**,而它沒有測試**時,這個時候你應該停止,然後思考。允許沒有測試**的**存在麼?

除非由於缺少某行**將導致測試失敗,否則就拒絕在程式中增加哪怕一行**。

junit 3 與 junit4區別較大。junit4引入了註解。

每個單元測試必須繼承testcase類。

每個待測試的方法必須以test開頭,如test***()。

在呼叫每個測試方法之前,都會呼叫setup()方法。在呼叫了每個測試方法之後,都會呼叫teardown()方法。

junit4引入了註解,因而不要求測試類一定要繼承testcase類。同時,也不要求待測試的方法具有命名約束(以test開頭)。對於需要測試的方法,只需要給該方法增加@test的註解宣告即可。

setup()和teardown()方法也是類似的。轉換為相應的註解:@before,@after。

junit4還引進了兩個新的:@beforeclass和@afterclass。

顧名思義,@beforeclass表示整個類中所有的測試方法執行之前會先執行這個方法一次,有且只有一次。@afterclass表示整個類中所有的測試方法執行之後會執行這個方法一次,有且只有一次。

IGBT驅動測試

落木源igbt驅動器 短路保護功能的測試 igbt在應用中要解決的主要問題就是如何在過流 短路和過壓的情況下對igbt實行比較完善的保護。過流故障一般需要稍長的時間才使電源過熱,因此對它的保護都由主控制板來解決。過壓一般發生在igbt關斷時,較大的di dt在寄生電感上產生了較高的電壓,這需要用緩衝...

驅動軟體開發流程規範

ver.1.1 試行 驅動軟體開發流程規範 下文簡稱本規範 的使用者 1 軟體部經理。2 軟體部開發人員。3 軟體部專案經理。4 技術部經理。5 技術部技術支援。6 技術部測試人員。7 其它一切參與和關注驅動軟體開發的人員。本規範的物件是軟體部的驅動軟體開發過程。開發過程涉及的內容包括專案 產品和知...

嵌入式驅動開發 實驗報告

實驗報告 學期 2012 2013學年第一學期 班級 信b1012 學號17 姓名 祝木賢 實驗1 2 linux基本命令的使用 一 實驗目的 1 了解linux系統中的檔案和目錄管理,掌握linux系統中檔案和目錄管理相關的常用命令 2 了解linux系統中的使用者管理,掌握linux系統中使用者...