※ 引述《lovesnake (LoyalDog)》之銘言:
: 重新問好了,發現這樣的東西似乎不適合提到演算法。
: 我現在的程式有三個步驟 , 其中 1 2 3 各個步驟接會有一個資料輸出。
: 但只有三個步驟皆完成後,產出的資料才有辦法自動化判斷正確與否。
: 其餘1 2 3 步驟各別的輸出,都一定需要人工判別,現在沒辦法自動化的東西有很多,倒
: 沒什麼爭議。
: 那請問,針對 1 2 3各個步驟的個別輸出,需要寫UnitTest嗎?
: 還是我的Unit的範圍要擴大到整個系統呢?
: 因為個別的步驟的子系統也滿大的,所以會想要針對各個子系統皆做UnitTest,
: 但又發現個別的輸出無法自動化判別,這種情況會怎麼做呢?
我認為 unit test 是手段,而不是目的。
也就是寫出明顯bug時,你可以在很短的時間內發現它,
自動化的 unit test 可以很有效率地解決這個問題,
但是當你的 test 沒辦法、或是很難自動化時,
你的目標應該轉移到「如何縮短測試時間」。
也就是說,人工判別是 ok 的,但你可以試圖讓這個判斷過程變得更有效率。
最好的情況就是你按下 build test,測試程式會馬上把中間步驟的結果秀在螢幕上。
當然,資料量增加時你會需要更有技巧的測試,
比如說適度處理輸出讓出錯的地方可以更明顯被肉眼看到、
或是把人工判斷為正確的資料 cache 下來,只顯示有差異的部份等等。
當然這些方法適不適用是 case by case,
但有技巧的測試就可以讓你的開發效率比完全不做測試、或暴力測試要好很多。