要不要自動化?

今天看到了一則新聞:全機器人生產導致產能低落,馬斯克:「是我的錯,我對人工效率評價錯誤」,特斯拉的執行長 Elon Musk 最近發了一則推特,自承過度自動化是他犯的錯誤。我雖然對特斯拉沒什麼研究,但是這讓我想到了前幾週我與朋友的另一段對話。

在某app公司工作的朋友G,前一陣子見面的時候問了我以前當研發工程師時是如何做unit test。由於我離開研發部門已經有六、七年,完全沒預期還有人會問我研發工作的內容,只好極盡努力在腦海中搜尋過去的記憶,還好還能找到一些蛛絲馬跡。

但是比起回答問題,我更好奇為什麼他會問出這個問題。我對unit test最深的印象,就是寫程式時間變成原來的兩倍以上,寫出來的unit test function比被測試的function還要多,但即使花了這麼多心力,自己當時並不覺得有特別好的效果。他問這個問題,是因為他老闆開始要求了嗎?

結果一問之下,的確是他老闆有這樣的想法,而且重點不在於unit test,而是自動化測試。unit test與自動化測試這兩者其實不太一樣,unit test是自動化測試的一部份,而不是全部。

不管是以前還是現在,市場都是瞬息萬變,所以如何達到time to market一直是軟體開發中很重要的課題,但為了能夠縮短開發時間,似乎充斥著各種迷思,譬如增加工程師人數,採取敏捷開發方法等,而自動化測試也是其中之一。這些迷思不見得是錯誤,只是通常它們都是有前提的。

以自動化測試為例,並不是所有組件都適合自動化,譬如惡名昭彰的GUI就是非常不適合自動化的,許多人(包含我自己)一開始以為GUI技術難度低而數量多,花人力測試感覺很浪費時間,所以應該要自動化,讓測試人力可以專注在其他更關鍵且困難的組件上。但是眾多血淚經驗證明,GUI很容易因為需求改變而改變,而且容易被看到導致也很容易因為各方不同意見而改變,所以更動調整的頻率是最大的,每次改動後自動化測試就要重新花人力寫,寫完的測試可能執行沒幾次又要改,硬要追求自動化,只是事倍功半,最後還不如手動測一測更快。

所以最後我建議朋友G先分析手上的組件哪些是比較關鍵、穩定、少更動的,以及去跟老闆確認自動化的目標是什麼,這些先想清楚了,再來規劃執行,比較不會越做越消沈。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s