Pages

Monday, March 28, 2011

天使與魔鬼對於 Unit Test 的影響

Unit Test
我們的程式碼不是拋棄式的,是會跟著我們的。從一開始專案啓動,開始建構整個開發框架,到每一位開發人員的投入開發,版本不段的往上增進 ,直到規定的時程到,截取一個穩定的版本出去,開始上市或者上線,之後再進入不斷改版的階段。在這個過程每日看待我們的程式碼,而一個團隊的話,一定會有大家互相交互看程式碼的情況。

當我們還沒變成一流的軟體工程師之前,難免寫了程式會有缺陷,未來勢必需要做重構 Refactoring,而想要 Refactoring 既有功能,又不希望因為改了這邊,不小心害到別的部份,所以最重要的,想要做 Refactoring 之前,先寫好 Unit Test 單元測試。

過去我寫過 Java 的 JUnit,現在也開始在寫 Objective-C 的 OCUnit,對於 Unit Test 整體對於使用者在開發上的心態影響,有些開發經驗與心得。

讓程式設計師寫和維護 Unit Test 的動力有:
  1. Test driven development 是個良好的開發模式。運用在開發上了,先寫測試程式,測出了錯誤,開始實作主要程式,主要程式寫完,再跑測試調整到對即可。
  2. 透過先從測試程式,了解了測試邏輯,才知道寫的程式有何意義。沒有意義的就不寫。將開發範圍先敲定。 
  3. 如果寫的測試程式和主要程式都好了,可以把測試程式給別的合作程式設計師看,教導溝通主要程式是如何使用。 
  4. Unit Test 是一種投資,越早投資越好。當之後每開發寫好一組,還可以連帶之前的一起包裝成測試套件,全部都測過一遍,確保程式都以穩定。 
  5. 單元測試是自動化測試的基礎,如果搭配了程式涵蓋率,可以知道哪邊還沒測試到,盡量補上它。
讓程式設計師不想寫和維護 Unit Test 的藉口有:
  1. 覺得寫完程式測一測,log 插一插,畫面按一按看到結果就好了,反正老闆只看系統表面、客戶也只是操作不要有 Bug 就好。 
  2. 規格總是愛改,從上游規格設計就不健康了,朝夕令改,我下游的開發人員幹嘛那麼辛苦,寫完程式又寫完測試程式,才又跟我說要加什麼需求,要變更什麼需求。 
  3. 時間根本不夠用了,不夠我開發,時程都追殺我了,我哪有時間寫測試程式。臨時收到需求變更,我改好程式對就好,之前寫的測試程式不論誰寫的,先不管。
以上種種因素不論是天使或者是惡魔在開發人員心中交互掙扎,唯有體會過寫 Unit Test 帶來的好處的開發人員,才會堅持的繼續寫和繼續維護下去,讓程式可以更透明化。而時間不足夠、需求變更狀況發生、老闆同事們的不重視,則會讓怠惰的心態產生,最後惡魔更加得意。動力和藉口不用整理太多,因為只要幾項成效,殺傷力足夠,天使與魔鬼之間的勝負就定局了。

2 comments:

  1. 喔對呀,用 iPhone 上一個叫做 Whiteboard ,可以調整筆的粗細切換顏色畫的。

    ReplyDelete