2022年1月3日 星期一

單元測試的藝術 - Chapter 1 單元測試基礎

由於剛轉職,接觸到不少既有的程式碼,閱讀的同時也著手重構了一點程式碼,

改起來心驚驚,便想著是否能夠替既有的程式碼增加一些好的改變。

而之前讀完Clean Code,書中也提到,程式碼必須不斷的重構才能易讀易維護,

重構的前提是必須有測試進行保護,因此既然既有的程式碼中並沒有單元測試,

為什麼不趁這個閱讀的機會,來試著學習並實踐單元測試看看。

第一章讀完,

簡單的對於單元測試有一個概念,也大略知道測試框架是什麼,

其實就有點像是一個用於測試用途的類別庫,提供使用者一些方便的function,

例如影像處理的library,我們會使用OPEN CV一樣,

但測試框架甚至還提供介面(可能是主控台或GUI工具)可以使用。

以下分享幾個印象深刻的觀念。


第一個是作者提到單元測試的同時一定會提到 TDD測試驅動開發,

其中一個他不斷提到的環節 - 重構,

在測試與TDD中佔了很大的重要性,

我想這是他去呼應他所說的"優秀的單元測試"的其中一項定義吧,

"單元測試可靠、易讀、並且很容易維護。"

唯有不斷重構,程式碼才能易讀易維護阿!

在書中就連TDD的流程圖都顯示重構的重要性,

在流程圖之中,完成測試並通過之後的下一件事並不是繼續撰寫下一個測試,

而是重構產品程式碼,直到不需要再重構,才繼續撰寫下一個測試,

可見重構在開發的過程中的重要性。


另一個定義:"單元測試執行起來快速且容易,一個鍵就能完成。"

作者也解釋為什麼需要達到這樣的境界,理由也很簡單,

如果測試需要跑太久,那大家就不會想要時不時就跑一次測試,

很可能會變成一天跑一次、一周跑一次、一個月跑一次,然後就不跑了。

因此除了測是要寫的精簡快速以外,也需要測試框架來輔助我們完成測試,

一鍵就自動執行。


作者的編排很用心,他先以最初的"優秀的單元測試"定義開始介紹,

並逐步提出缺陷並修改定義,一步一步介紹為什麼需要定義內的項目,並舉例說明,

試圖說服你使用單元測試的好處,但也不避諱地提出缺點,

如果使用不當,反而對開發專案造成反效果,因此不斷的練習與學習(不單指單元測試),

也是作者在這邊所強調的。



下一篇:[閱讀] - 單元測試的藝術 - Chapter 2.1 第一個單元測試

沒有留言:

張貼留言

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。