之前在Chrome 插件 030RateViewer 0.02版更新中提到通過這次功能的追加而感受到測試以及測試case的重要性。
其實關于測試這個話題,早就有不少人寫過相關的文章了。我自然也沒少看,可就是沒放在心上也不當回事。所以這次便吃到了苦頭。
這是因為在這個 030RateViewer 插件的開發過程中,有1/4的時間是浪費在無效的測試上的。而造成這一結果的,就是因為實現沒有事先寫好測試case(從而最終導致我晚睡了一個半小時)。由這一慘痛的教訓,讓我理解到了測試case的重要性。
說來慚愧,其實自己挖的一些坑從來就沒認真寫過測試case或者說就從沒寫過。一是因為做的東西大都以前端為主,前端的最大特點就是所見即所得。每次只要F5一下,就能看到效果,邊看邊改(而在用了webpack之后連F5都不需要按了)。也就沒了寫測試case的習慣。二來則是,大學時學過一陣子Java,看到要寫什么測試case就很頭疼(雖然有JUnit)??傊褪遣粣蹖慶ase,基本就是腳踩西瓜皮,想到什么測什么。
所以這一次在造數據測試的時候由于case設置的問題,導致沒有出現預期的效果。因此造成在排查過程中在程序邏輯上花費了大量時間,而實際上程序邏輯并沒有問題。其次,由于沒有落筆,在這次的測試過程中,分支測試就變得模糊不清,測到哪了也不知道,造成返工重測浪費了時間。雖然是勉勉強強弄完了,不過事后想來,測試的面很可能還不全面,這也是不寫測試case所造成的。
再有一點就是時間估算的問題。其實對于這一次要添加的功能,大致是心中有數的。所以最初估算大概一個下午左右的時間就能完成(14點~18點,包括查閱文檔、功能實現以及測試),而實際上我是在晚上的22點左右才完成的。除去當中吃飯以及發呆的時間,大約在6個小時左右。正好印證了以前看過的一句話程序員的實際時間 = 程序員自己估算的時間 * 1.5
。
現在想來,這1.5倍的時間里,就是因為該做的事情沒做好而浪費的。因此在今后自己的一些項目中,還是應該認真寫好測試case(邏輯特別簡單的除外),而不去偷這個懶。