2007年10月29日 星期一

F21 測試錯誤的處理(3)──迴歸測試(Regression Test)

如果問題單提出的內容的確是系統的錯誤,那麼系統理應針對這個問題作修正。程式的任何變動都會造成程式所在方法的改變,進而影響到呼叫該方法的所有地方。為了保證一段程式被修正後,其他使用它的方法同樣運作正常,我們必須再重新測試過這些方法所對應的測試項目(即使修改前已經全部測試通過)。

由此可見,程式的變動是需要審慎從事的。在國外的專案裡,每一行程式的變動,客戶都會詢問是為什麼而改,同時會影響哪些範圍,因為錯誤的解決方法會讓系統如同骨牌傾倒般到處出現連帶的問題。有時邏輯上的問題造成兩個地方糾纏不清,A改好B就有問題,去改了B時A又壞掉,這樣的Side Effect是任何人都沒法忍受的。

前面提到程式的追溯最好是到方法層級,這是因為方法內部的改變只要往上追溯使用該方法的地方;如果追溯的程度使用的是類別,那會使得追溯出來的範圍過大且不正確。涵蓋了一堆沒有使用關係的方法,會測試到一堆本來就正確的地方(因為沒用到改變的地方),比起在設計時去追溯方法的關係,將會浪費更多的測試資源。

沒有留言:

張貼留言