前言
測試碼 ( Test Code ) 與產品碼 ( Product Code ) 雖然都是程式碼,但兩者在戰略層級的目標不同,產生的價值相異,延伸到兩者在戰術及戰技層級時,導致考量的角度及實做的結果可能大相逕庭。
測試碼的價值
測試碼的價值來自產品碼所能承受的風險。
產品碼的價值來自所提供服務,解決了特定問題,例如節省時間,或帶來收入,因此可以依此評估產品價所帶來的價值;反觀測試碼的價值來自於確保產品碼符合預期價值,因此,依據產品碼所能承受的風險決定測試碼的價值。
然而,何謂「產品碼所能承受的風險」呢?舉例來說,會計的金額計算系統與文件檢索的權重計算系統,對於結果的精準程度要求不同,金額的計算容不下一元的誤差,但文件檢索的權重計算可能只是影響其畫面的先後順序,同樣都是對數字的計算,但對於邏輯的正確性所能承擔的風險不同。
測試碼的成本
測試碼的成本可能高過產品碼。
產品碼所能投入的成本評估通常來自於其所能產生的價值,通常不會高過其所能開源節流的數額,除非提供的是難以量化的價值,例如提供決策資訊、時效性,機密性的資訊處理,避免人為介入的特質,都可能讓產品碼的可投入成本提高。
反觀測試碼的價值來自於產品碼所承擔的風險,其投入成本的考量來自於風險發生的預期值,因此,對於生死攸關的系統,例如,維生系統或薪資系統,需要提供操作人員穩定無誤的操作結果,若是有錯誤發生可能招致生命或企業的存亡,那麼測試碼可能需要比產品碼有更多面向的分析,投入測試的資源高過產品碼亦不足為奇。
因此,在衡量系統開發的成本時,對於測試碼的開發成本也應一併考量。
測試碼的角色
測試碼描繪出產品碼的樣子。
從測式碼作為產品碼的安全索來看,此一觀點極容易落入先寫產品碼才寫測試碼的窠臼之中,這類思路造就「產品碼還沒有寫,測試碼要測什麼?」的疑問,是一種「皮之不存,毛將焉附」的概念。
然而,測試碼的本質是試著像客戶端一樣與產品碼進行互動,並藉此確認產品碼的反應是否符合預期,是一種「說明產品碼如何提供服務」的觀點;所以在尚未撰寫產品碼之前,撰寫測試碼是對產品碼的一種預期操作,是從客戶端的需求出發的思考模式。
在沒有產品碼的階段,測試碼必然回報測試失敗,但這個執行失敗與其他測試失敗並無不同,僅是一個導因於「尚未實做產品碼」的失敗,就如同其他的測試失敗一般的處理程序:解決它、然後在測試保護的環境中重構。