萬事起頭難,Unit Test 也不例外。在練習使用的過程中,「要如何開始」這個問題困擾了我很久。手上有的是剛寫到一半的值物件類別,不能確定是不是應該替他們寫測試程式。只是單純的檢查「資料記到變數裡」,沒啥意義。經過一些測試,慢慢抓到一些模糊的感覺,在這裡作點記錄。
回到程式的本質,就是處理資料。所以撰寫測試程式就應該是確保「資料被正確地處理」。所以測試程式的輸入和輸出,應該是不一樣的。既使只是數字變成字串,或是物件變成 XML 格式字串都算是改變的一種。當然輸入、輸出的改變可能是數值計算、整理作為 API 回傳值或著是分析、篩選出滿足條件的內容之類,總之,就是「有處理,就有測試」這樣子原則。
所以,一開始建立值物件的時候,不需要寫測試程式。在撰寫由檔案/資料庫讀出、建立值物件時,就要測試來源資料和值物件的內容。當確保了值物件的初始建立後,就可以拿這些建立好的值物件來進行其它運算,分析的工作。這樣,不用在測試程式中一行一行的打程式建物件,把更多的時間用在思考如何驗證結果,撰寫邏輯規則。
沒有資料,就很難進行的模擬的測試。反覆使用程式碼一個個地建立物件,足以消磨一個人的心。而且一旦物件格式改變,那麼需要異動的程式碼可能也會隨著專案發展變多。所以由統一建置的「工廠」來提供資料有是需要的,能夠快速複製新的版本,再修改來滿足其它測試需要。
所以,我覺得測試驅動的程式發展,應該是由值物件,以及建立讀取外部資料來產生值物件的類別開始。接著才會有許多不同變化的資料組合來模擬不同情境。
沒有留言:
張貼留言