2011-02-16 147 views
0

堆棧通過鏈表實現。 什麼是測試用例什麼時候有效,什麼時候沒有?堆棧測試用例

+0

家庭作業問題允許在這裏,但你應該給他們標記`家庭作業`。 – Konerak 2011-02-16 08:00:31

+2

當正確實施 - 它的工作原理,當執行不正確 - 它不 – davin 2011-02-16 08:00:36

回答

4

適當的單元測試取決於您的特定接口(黑箱測試)以及您的特定實現(玻璃箱測試)。對於堆棧,我期望測試一些東西:

  1. 可以將堆棧上的項目推出並彈出。
  2. 在堆棧中推送多個不同的項目時,重複的彈出會以相反的順序返回它們。
  3. 未初始化的堆棧爲空。
  4. 推送項目的堆棧非空。
  5. 具有推送並隨後移除的項目的堆棧爲空。
  6. 嘗試在沒有項目時彈出會導致記錄類型的失敗,無論是返回NULL,拋出異常還是中止程序。

總結:

  • 基本功能。
  • 訂單屬性。
  • 空虛不變。
  • 失敗模式。

請注意,需要測試的內容對於其他數據結構會有所不同。通常,創建這組測試的方法是爲每個函數創建一個單元測試,以確認文檔所做的每個保證都得到支持,並且通過該函數的所有代碼路徑都支持它。此外,應該測試記錄的故障模式,以確認它們以預期的方式失效。

1

那麼,想想你想要你的堆棧做什麼。構建一個API(或者看看API of an existing stack)並測試每個函數是否應該做它應該做的。你應該看看Unit Testing

例:你的基本棧應該有一個push()pop(),所以:

  • 創建一個元素A,在棧上
  • 推A,
  • 流行元素
  • 看它是否是元素A.

特別測試邊緣情況:刪除最後一個元素,插入一個n元素兩次,插入無效對象,引用堆棧本身,刪除堆棧上的對象。