天天看點

測試 / 單元測試的重要性

一、什麼是單元測試?

要搞懂單元測試,首要要弄清楚什麼是單元。

單元是軟體中承擔單一責任的機關,一個函數、一個檔案、一個類、一個子產品都可以稱為一個單元。

單元測試便是對軟體設計的最小機關進行正确性測試,以檢驗程式單元是否滿足功能、性能、接口、設計規約等要求。

單元測試本質上也是代碼,與普通代碼的差別在于它是驗證代碼正确性的代碼。軟體開發天生就具有複雜性,沒人敢打包票說自己寫的代碼一點問題都沒有,或者不經測試就能保證代碼正确運作,可能你在這個執行路徑下能夠執行,殊不知還有其他路徑,有一一去驗證過嗎?

是以,要保證程式的正确性就必須要對我們代碼進行嚴格測試。

二、單元測試帶來的好處

通常我們在做任何工作會先考慮它的回報,編寫代碼更是如此。如果單元測試的作用不大,沒有人會願意再寫一堆無用的代碼,那麼單元測試到底能夠給我們帶來什麼優點呢?如下:

  • 便于後期重構。單元測試可以為代碼的重構提供保障,隻要重構代碼之後單元測試全部運作通過,那麼在很大程度上表示這次重構沒有引入新的BUG,當然這是建立在完整、有效的單元測試覆寫率的基礎上。
  • 優化設計。編寫單元測試将使使用者從調用者的角度觀察、思考,特别是使用 TDD(Test Driven Development) 驅動開發的開發方式,會讓使用者把程式設計成易于調用和可測試,并且解除軟體中的耦合。
  • 文檔記錄。單元測試就是一種無價的文檔,它是展示函數或類如何使用的最佳文檔,這份文檔是可編譯、可運作的、并且它保持最新,永遠與代碼同步。
  • 具有回歸性。自動化的單元測試避免了代碼出現回歸,編寫完成之後,可以随時随地地快速運作測試,而不是将代碼部署到裝置之後,然後再手動地覆寫各種執行路徑,這樣的行為效率低下,浪費時間。

三、什麼是好的單元測試

既然我們已經知道了單元測試對一個程式員的重要性。那如何寫好單元測試也是程式員需掌握好的技巧。這裡,我想向大家介紹測試的 FIRST 原則。FIRST  并不是第一的意思,其每個字母都有獨特的含義:

  • F - 快速:測試必須非常快,這樣開發人員可以對每一個小更改運作測試,而不用中斷思緒去等待測試運作。
  • I - 隔離:不同的測試用例之間是隔離的。一個測試不會依賴另一個測試。不同測試的故障是互相隔離的。
  • R - REPEATABLE - 可重演:測試程式要可在不同環境跑。
  • S - SLEF-VALIDATING - 自我确認:測試結果應是簡單的 TRUE / FALSE,無須人工确認。
  • T - 及時:測試是及時的。程式員在代碼上線前,及時地編寫它們,以防止bug。
轉載:(42 封私信 / 82 條消息) gtest - 搜尋結果 - 知乎 (zhihu.com)

(SAW:Game Over!)