手動驗證與 unit test

很久很久以前(講得好像很老一樣),剛學寫程式的時候,我有個習慣是寫一點點就會執行起來看對不對。在那個連用迴圈做輸入都不太熟的超新手時期,連輸入都會做這種「測試」。這習慣延續了很久,直到現在,在剛開始學一個新語言或者環境許可的狀況下(編得過、可以跑、測起來不會太複雜),還是會這樣──寫一點點就跑起來看對不對。

今天晚上寫小玩具的時候,新語言嘛,不熟,就又出現這種習慣。就在我還沒把程式 run 下去、正覺得這種驗證很囉唆的電光石火(?)之間,我突然想到──幹嘛不把這種驗證寫成 unit test 就好?這樣就不用跑很多次、人眼校對很多次了啊!

於是乎,這次改變方式,先把要寫的東西全部寫完,再寫 unit test,直接 run unit test 看 code 有沒有寫對。在這種很瑣碎但又得確認是對的事情上,用 unit test 真是神清氣爽啊!雖然不知道之後重複利用的機會多大,但是不用在那裡對到快脫窗真好。也還真給我抓到一個漏掉 assign 的 member…

看來我的寫 code 方式終於跟 test 連上了一點,不然每次想要硬套 TDD 之類的時候,就像學了個新方法,可是並沒有改變舊習慣,兩邊有點接不起來。這次是注意到舊習慣令人厭煩可以改善的地方,再套一點新東西進去變成好一點的方式。

最近在想,獨立開發的時候,更該利用自動化測試減少花在重複性工作上的時間。我想,運用科技讓人能更妥善運用時間,才是科技的本意吧。