單元測試(Unit Test)就是以程式測試程式。—當你在開發軟體的時候,你不但 撰寫了原本的功能,同時也寫出每個功能對應的程式碼,測試每個功能是否正常 運作。
每次在講到單元測試的時候,總是會有「軟體開發過程是否應該要寫單元測試」 這樣的疑問,你會看到有不少人說寫單元測試會佔用額外的時間,如果開發軟體 是為了創業,那麼目標應該是要儘快完成、儘快上線,才能夠儘快了解用戶與市 場真正的需求。
我想,對這個問題,我們先不要用爭辯的方式討論,我們來換個方式—我們用體 驗的。我們先不要從別人的意見中判斷單元測試好不好、有沒有用,我們先來寫 一次單元測試,再來評價—看看你覺得寫單元測試會不會花很多時間?對你有沒 有幫助?如何?
在上一章結束時,我們要寫一個 貪食蛇遊戲當做練習。我們在這個遊 戲中,我們於是寫了相關的程式,像是控制蛇的移動,還有在蛇吃到水果的時候, 尾巴要加長…等等。接下來就是執行、測試,我們把程式跑起來,可能會覺得這 條蛇可能哪裡怪怪的,可能在吃到水果的瞬間,尾巴並沒有立刻變長,而是等蛇 再走了一兩格才變得比較對,或,尾巴長出去的方向,好像不太對?
我們可以選擇用眼睛這類的感官檢查程式是否有問題,但是在貪食蛇這個程式中, Timer 每隔 0.5 秒就會觸發一次,蛇每隔 0.5 秒就會移動一格,如果剛吃到水 果的時候,因為我們的程式邏輯有問題,尾巴長出去的方向不對,我們只有 0.5 秒的時間可以用肉眼捕捉這個問題,那,我們真的有辦法在程式出錯的時候,有 效發覺問題嗎?你真的以為,光是貪食蛇這麼簡單的小遊戲,你就不會寫出 bug 嗎?
而假如我們寫的程式,其實並不是貪食蛇這種輕鬆的小遊戲呢?