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