2011-02-02 51 views
2

在TDD中,每個人都談論創建單元測試以及如何完成開發。我知道整個週期,但沒有人會談論從需求創建這些單元測試嗎? 我已經在文獻中的某處閱讀過,在開發這些單元測試之前創建一個測試列表總是很好。我的問題是: 在TDD中編寫單元測試之前遵循的程序(步驟)是什麼?意味着在開發它們之前是否創建單元測試是直接從需求中寫入,而不使用任何正式標準或測試列表?測試驅動開發中測試列表的概念

+0

我認爲需求規格會影響功能測試而不是單元測試。 – 2011-02-02 02:12:55

回答

2

測試列表只是下一個測試用例的臨時存儲庫。這完全是非正式

測試列表的主要作用是釋放你的思想。當你想到一個新的測試時,只需把它寫在列表的末尾,然後你就可以忘記它,並專注於手頭的問題。

沒有程序來編寫測試和列表,就像從需求創建UML模型一樣。您考慮問題並製作設計。設計完成後,即可開始實施。使用TDD,您從測試的角度思考問題,您在列表中寫下一些測試,然後從列表中的簡單測試開始。您可以隨時向列表中添加(或刪除)測試。

bowling game episode是一個簡短的閱讀,說明從需求到單元測試的過渡。但它沒有提到任何測試列表。

我在我的單元測試源文件底部維護我的測試列表作爲註釋。

void test_foobarShallFailWithNull(void) { 
... 
} 
// the tests I *may* write next 
//void test_foobarShallFailWhenX(void) 
//void test_foobarShallWorkWhenY(void) 
2

根據我的經驗,在進行TDD時,需求用於直接確定所需的單元測試。從理論上講,開發人員會選擇整個需求的一個小方面,併爲這個方面編寫一個單元測試,然後編寫最簡單的代碼以使單個測試通過。事實上,所選擇的要求和方面可能會導致開發人員一次識別幾個單元測試。測試列表被用作停車場,因此開發人員無需擔心丟失測試思路,同時仍然可以集中精力進行一次測試。

1

沒什麼太重或正式的,你只需坐下來記下你在一張紙上(或電子表格或文本文件)所能想到的所有測試,然後再開始一項任務。

然後,你通過列表​​逐一把它們逐個剔除,當它們完成時將它們排除。如果您在實施過程中提出了一些新測試,請將其添加到測試列表中並繼續關注當前測試。當你在列表中沒有更多的測試時,你就完成了。

TDD的單元測試是細化的,在大多數情況下,需求/規格不是。因此,您使用需求文檔來提出系統級驗收測試。爲了進行特定的驗收測試,您會提出一系列使用TDD實現的任務。