單元測試─關於優秀的單元測試

單元測試

被你測試程式所測試的對象,稱為被測試的系統-System Under Test,SUT

優秀單元測試的特質

優秀的單元測試的特質

  1. 它應該是自動化,可重複執行
  2. 很容易被實現
  3. 有存在的意義
  4. 按個按鈕可執行它
  5. 執行速度快
  6. 執行結果一致(過程中沒改任何東西,多次結果應該是一致)
  7. 完全掌握被測試的單元
  8. 完全是被隔離的,執行時獨立於其他測試
  9. 執行結果是失敗的,應該可以呈現出期望為何,發生原因在哪

檢視自己的單元測試,(軟體測試與單元測試混唯唯一談,可以問以下幾個問題)

  1. 兩週前所寫的單元測試今天還能正常執行,並得到結果?幾個月前或是幾年前寫的呢?
  2. 兩個月前所寫的單元測試,Team任何一人可否正常執行它們得到結果嗎?
  3. 幾分鐘以內跑完所有的單元測試?
  4. 一鍵跑完所有寫過的單元測試?
  5. 幾分鐘以內可否寫出一個單元測試?

上述其一個不能,就不是單元測試…

整合測試:是一個工作單元進行測試,這個測是被測試單元並沒有完全控制,而是使用該單元一個或多個真實的依賴物件,EX:時間、網路、資料庫...

EX:一個測試無法控制系統時間,在程式中用DateTimeNow,那麼每次測試執行所取得都是不同時間,測試不容易不穩定。

整合測試還可能帶來一個問題:一次測試的東西太多。

優秀的單元測試如下:

  1. 一個單元測試是一段可以自動化的程式碼
  2. 這段程式碼會呼叫被測試的工作單元,之後對這個單元單一最終結果的某些假設或是期望進行驗證
  3. 單元測試幾乎都是使用單元測試框架進行撰寫的
  4. 撰寫單元測試容易的執行速度快速,可靠、易讀、容易維護
  5. 產品代碼不發生變化,單元測試執行結果是穩定一致的

元哥的筆記