2010-07-12 56 views
4

我讀過我應該先寫簡單,基本的測試,然後逐漸向更難的方向發展。我應該爲以下功能編寫哪些測試(按順序)?TDD - 我應該爲這個功能寫什麼測試?

功能List.syncWithList(lst)

  • 應該添加不在列表中,但在lst
  • 應刪除列表中沒有的lst
  • 方可更換任何項目的任何物品清單列表中與lst
  • 不同的版本標籤中的項目不應替換列表中與中版本標記相同的任何項目
+2

您提供了要測試的事情列表。你還想要什麼? – 2010-07-12 10:09:17

回答

8

您的基本測試列表。你只是提供給我們。至少,你應該測試每個功能需求已經滿足(例如,你在問題中給我們的四點)。

除此之外還有邊緣情況,例如空列表(在一邊和兩邊),相同的列表等等。

開始最簡單的方法是添加以下內容:

  • 兩側空單。
  • 相同的列表。
  • 空左列表添加一個元素的右列表。
  • 帶有空白右列表的單元素左列表將刪除。
  • 以前的兩個測試,但一邊是五元素列表。
  • 替換單元左列表中的一個元素。
  • 替換五元素左列表中的一個元素。
  • 取代五元素左列表中的三個元素。
  • 檢查在相同版本標籤上沒有替換。

然後在解決個別問題時添加更多。

我無法強調這一點:自動化測試!當您只需按下按鈕並查看結果時,您會發現測試變得更容易。每次你發現一個bug時,添加一個可以將這個bug捕獲到上面的測試套件的測試,然後按下按鈕來驗證它。

我們已將我們的測試精確到美術。使用一個命令,就可以完成整個過程,從而吹走數據庫,使用已知數據加載它們,運行我們的測試,將輸出與先前成功的測試等進行比較。

如果我們必須手動完成所有這些工作,那麼我們很快就會拋棄整個想法。通過自動化一切,測試變得輕而易舉。

+3

這是一個很好的答案。我只想補充一點,提問者指出,提問者寫的實際上是很好的測試名稱。你的測試名稱應該被看作是對類的作用和預期行爲的描述。 – kyoryu 2010-07-12 05:22:15

+1

+1用於自動化測試 – 2010-07-12 05:35:47

+1

+1:您已經擁有您的列表。測試一下。 – 2010-07-12 10:08:54