phpunit, php 的 unit test framework

未分類
最近工作上有需要寫 unit test
官方指定的 php unit test 工具是 phpunit





因為是公司包好的 package
其實沒有在公司外的環境裝過
我也不知道怎麼安裝跟下載

寫了一個禮拜
才大概知道怎麼寫比較好
寫 unit test 要從測試的角度去寫 (廢話)

我的意思是說
一般我們都是以功能面的角度
想要什麼功能
把流程先想一次
然後再用程式碼去把想法依照流程建構出來



test-driven 的程式則是
先假設功能已經完成了 (有 function/method)
然後直接去呼叫, 看會傳回什麼

簡單說 你就把要寫的東西 假裝已經外包出去
你跟外包的人已經定好銜接的介面
然後你要測試他的程式有沒有問題
把測試程式都寫好
再反過來寫真正的程式

不過實際上很少人這樣做
因為沒寫真正的功能部分
真的會很空虛
眼看著時間一直過去
但是還是一直在寫不能 release 的 "測試程式"



test-driven 的方式還是有好處的
當你看到前人留下來又臭又長的的 code
好不容易改好了
卻不知道有沒有動到之前的邏輯
這時候要是前人已經寫好 unit test
一測試便知道
而不用測試一整塊看似無關 但是不測試又覺得很危險的code


結論
以前真的把寫程式看扁了
雖然亂搞的人也是一堆
但是真正進入世界級的公司
發現自己之前其實也是在亂搞 只是程度上的差異

用了 issue/tracking system, version-control, unit test 等工具
改善了製程
做出來的東西才是真的有品質

而這種品質
不是那種外包網幾千塊可以比的

不過我們還是要有包容的心
畢竟這是市場機制
有人吃茹絲葵 也有人喜歡吃貴族世家



又如同建築業跟網路事業相比
杜拜塔/東京SkyTree等世界級的建築
除了設計師的設計才能
哪個不是建築在強大的建築團隊跟技術
從來就沒看過幾個小鬼在路邊發想 組個工作室
就開始蓋大樓的
在沒有強大技術背景的前提下
這種行為簡直是愚蠢至極
更不用說一天到晚在網路上鼓吹網路創業或是做網路夢的人