單元測試的藝術.jpg

(點選圖片進入博客來購買)

 

今天想要來分享一本我認為學習單元測試很值得一讀的一本書

《單元測試的藝術》

還記得碩士班第一年的時候那時修POSD這門課時要求需要寫單元測試

但在我大學的時候連單元測試都沒聽過,根本不知道怎麼寫unit testing(UT)

因此就去買了這本書來看

 

不管你是寫UT的初學者,還是已經有寫過UT的人這本書都非常值得一讀

這本書總共分成四大部分

第一部分可以讓你對撰寫單元測試從一無所知提升到及格的水平;

第二部分介紹了破除依賴的進階技術;

第三部分介紹測試程式碼的組織方式、執行測試和重構測試結構的模式,

以及撰寫測試的最佳實踐;

最後第四部份談了在一個組織內進行變革以及如何修改現有程式碼;

 

雖然這本書的例子是以C#撰寫

但對於其他物件導向的靜態型別語言還是適用

因為畢竟我大多都是用java寫程式,這本書對我的幫助還是很大

語言上的差異大同小異,只需知道不同語言的框架如何使用即可

 

最近在實驗室做專案時,因為我們的開發的軟體都有寫單元測試

但是我發現我們好長一段時間,常常因為改了一點程式就必須維護我們的單元測試好久

每次維護UT時我們都瀕臨崩潰的狀態,實在花太久的時間了!

完全已經影響到我們開發的進度了

於是終於有一次我終於忍不住了

我把團隊的所有開發停下來,我說我們來開個檢討會

為什麼我們每次都需要花這麼多時間在維護UT

我跟他們說,因為我們UT的品質很差很差很差!!!

我們達成共識,決定要把UT重新設計

當天回家我把這本書拿起來再讀一次

我看到一個很大的重點

一個好的單元測試具備下列三個特色:

1. 可信賴的(Trustworthiness): 開發人員希望執行的測試程式是可信賴的,能夠對測試的結果有信心。

可信賴的測試本身沒有bug,而且測試正確的事情。

2. 可維護性: 無法維護的測試是惡夢(這正是我在面臨的問題),它們常會拖類專案計畫進度,或是當專案時程緊張的

時候就被擱置一旁。如果修改測試需花費的時間過多,或是經常因很小的產品程式碼修改就得頻繁調整測試程式,

開發人員會直接停止測試的維護和修復工作。

3. 可讀性: 人們不僅要能夠閱讀測試程式,還要能在測試出問題時,找到癥結所在。

失去可讀性,另外兩個特性很快也會跟著倒塌。如果無法理解測試的意圖和內容,測試的維護工作就會變得十分困難,

也無法得到人們的信任。

 

當天我熬夜把如何撰寫可維護性的單元測試的方法讀完,隔天分享給團隊

我們討論完後立刻開始改程式,不僅我們的單元測試變得乾淨簡潔

也更有彈性好維護

我們那天寫了一些新的程式碼,而我們要加入一些測試案例測試我們新寫的程式

以過往經驗,寫一個測試案例大概要花20~30分鐘,有時候甚至得花到1個小時的時間

但是那天我們實測,我們只花不到三分鐘就寫完一個測試案例了

我們的測試不僅提高了可維護性,也伴隨著提高了我們可信賴的及可讀性

當下只有一個字可以表達我的心情就是「

 

理解如何撰寫單元測試,以及讓他們變得可維護、可讀、可被信任,

是這本書的主要內容,不管你使用的是何種語言跟編譯器。

這本書涵蓋了撰寫單元測試的基本知識,並且講解互動測試的基礎,

介紹了在真實世界撰寫、管理和維護單元測試的最佳實踐。

arrow
arrow

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()