Oct. 05 17:24~18:55
幾年前有一陣子Teddy的左腳腳底板只要踩到地上就好痛,觀察了幾天都沒改善,查了網路資料,感覺很像足底筋膜炎。找了一天去看家裡附近的的復健科整所,把症狀告訴醫生之後,Teddy跟醫生說:「我覺得我好像是足底筋膜炎」。
醫生聽完之後面帶微笑,要Teddy擺出幾個姿勢,然後說:「你要拉腰。」
明明是腳底痛,為什麼要去拉腰?
醫生說:「你這是腰椎突出影響到腳,我看過很多類似的病人,他們也都以為是腳有問題。但這個現象一般來講只要拉腰就可以改善。」
Teddy半信半疑之下持續去復健拉腰,沒想到後來腳底板疼痛的問題就消失了。
***
最近有一位客戶打電話給Teddy…
Teddy:泰迪軟體您好,我是Teddy。
客戶:Teddy老師你好,我們是XX公司。
客戶:請問你們有單元測試的企業內訓課程嗎?
Teddy:有啊,泰迪軟體所有公開班課程都提供企業內訓。
客戶:是這樣,最近我們的系統出了點包,公司想要提升軟體品質,長期來講要做持續整合與持續佈署,短期想先從測試開始。
Teddy:這很合理,一般人想到提升品質、減少bug,直接就想到測試。
客戶:所以我們從自動化單元測試著手是OK的?
Teddy:從測試著手有兩個方向,第一個是人工測試,雖然看起來很笨,但只要有錢,這是最簡單又立即可以看到效果的方法,但長遠來講會不符成本,畢竟用人工方式做回歸測試不只成本高,速度也慢。
Teddy:如果從自動化單元測試著手,不是說員工學會測試技巧就可以快快樂樂寫出有效的單元測試。依據我的經驗,很多人不寫單元測試,或是說寫不出單元測試,不是因為測試太難,而是因為設計太爛。
Teddy:因為設計太爛,所以耦合太高,系統很難獨立測試。這時候,可能需要先教同仁基本的物件導向設計觀念與SOLID等原則,更進階要學習Design Patterns與Clean Architecture。軟體設計品質提升,測試自然變得比較容易。
***
軟體品質不好,不一定直接從測試著手。有沒有可能是需求一開始就錯了?或是規格沒弄清楚?如果是這種狀況,也許要先學Event Storming、Specification By Example與Design By Contract。有沒有可能是設計過於複雜導致錯誤?如果是,應該先改善設計品質,讓設計簡單到不會出現明顯的錯誤。
設計與測試是一體兩面,設計能力好的人,通常測試也做得好,反之亦然。
***
友藏內心獨白:兩點之間最短距離通常不是直線。