進行中才慢慢發現了許多無法馬上克服的問題
-
舊的程式碼 (legacy code) 無法測試
一般的書或教學,教的是如何為一段新的程式碼寫新的測試碼。但是當一開始觀念不好時,所寫下來的程式碼,要為他們加上測試碼時,往往會遇到相依性太大的問題。
-
程式資料/變數無法有效的重新設定 reset
初期,往往會用最直覺的方式去操縱 File System 用來儲存資料或變數,但這樣會造成測試上的困難。
試想,在測試一開始時要假造資料,以及在測試結束後要檢查結果,如果必須要檢查 File System 的資料(一段被編碼過的資料),就必須想辦法用另外一段程式碼編解碼,這段程式碼會不會有錯?File System 當下會不會正好被 lock?這些都會影響到測試結果。
-
系統變數難以假造
如同上面 File System 的問題,像是一些系統限制的功能,如 iOS 實機上才有 CallKit 的功能,但是在模擬器上沒有,那要如何在模擬器上測試模組的邏輯是否正常呢?
-
測試程式碼難以維護
相依性太大的程式碼,也會導致測試碼需要用較大的侵入方式來做假造,所以當功能有變更時,往往就會影響到寫好的測試碼。當測試項目無法輕鬆的維護,自然而然偷懶的機會就大大增加了。