
今天是on board的第五天,這幾天除了完成訂位牆(Reservation Wall)外,還用PHPUnit寫了一些測試。有人問我,「Startup開發新功能的時間都不夠了,怎麼還把寶貴的時間拿來寫測試呢?」
正因為是Startup,所以更該寫自動化測試,因為:
1. 我們極快地更新產品
以EZTABLE的網站為例,我們一個禮拜至少會出2-3個release,其中最常碰到的問題是,加入新功能和修正舊bug的同時也產生了新的bug,自動化測試讓工程師們可以在不弄壞原有功能的狀況下開發新功能,這點在功能常常被修改的狀況下更加重要。
2. 我們沒有時間測試
開發新功能的時間都不夠了,怎麼還把寶貴的時間拿來作測試呢?
相信大家一定都有寫了一些很酷的的功能,丟到伺服器上跑,打開自己的瀏覽器點來點去看看是否運作正常的經驗,剛開始可能很好玩,但是如果每次release都要作一次一模一樣的事,大概沒有人能受得了。還好現在有Selenium和台灣之光vgod的Sikuli,麻煩的事還是交給機器作就好了。
3. 測試讓我們更快發現問題
還可以幫我們避開低級的錯誤,尤其是使用PHP之類的直譯式語言,不像C/Java會有compile error,好一點的IDE或許還會提醒syntax error,但是typo就完全沒有辦法了。只要有足夠的Code Coverage,至少在release前我們會把大多數的code都run過一遍。如果有使用Continuous Integration,甚至可以在每次commit code後都run一遍,出問題時Hudson Jenkins老爺爺就會好心的寄信來告訴你。
甚至有時在寫測試時,就會發現user scenario不正確了,可以更快反應,避免做出不合用的東西。
測試要如何作呢?
最快的方法就是直接參考你的Programming Language的Unit Test Library (JUnit, PHPUnit, Python unittest …等)的tutorial,照著sample作一遍就對了,或是slideshare上有看不完的slide。Enjoy programming!
York Tsai,
Software Architect @ EZTABLE

[...] 其實來面試的實習生當中,不乏程式的強者,但就像 EZTABLE 在做的事一樣:我們的目標,是創造更多快樂用餐的體驗,而不是在追求最新最強的技術(但這不代表我們就不用去學習最新的技術,相反的,只要是使用者需要的、餐廳經營者需要的,不管是如何傳達出能讓消費者產生漣漪的設計 也好,網站 loading 加速也好,自動化測試的技術也好,我們也都持續地在學習)。所以除了基本開發的能力,我們更希望看到對於網路服務(或餐飲服務)有熱情有想法的夥伴 。 [...]
[...] 在為什麼Startup更需要自動化測試中,一些朋友來信詢問如何為一個PHP專案設置Continuous Integration(CI),因此我們Open source了一個簡單的Phing build file,其中包含了以下工具的設定: [...]