軟體測試的藝術(一):軟體測試的重要原則
軟體測試是為了發現錯誤而執行程式的過程,這就說明目的是為了發現錯誤,動作是執行程式。
在進行軟體測試的過程中,要遵循很多的原則,以下是幾個重要的測試原則:
1) 測試用例中一個必需部分是對預期輸出或結果進行定義。
對於軟體測試,必須是有明確的定義輸入資料和條件,同時對輸出結果有準確的判斷。這樣才能辨別是否是有效的測試,當前的結果是否是正確的。
2) 程式設計師應當避免測試自己編寫的程式。
人都會有固定思維,一方面是可能對軟體需求規格書的理解偏差,導致編寫的程式也有偏差,所以自己沒有發現。另一方面是人的傾向是程式是正確的,會盡量去避免發現錯誤。
3) 編寫軟體的組織不應當測試自己編寫的軟體。
原理跟上一條相似。會潛意識裡避免發現錯誤,且難以發現自身問題。
4) 應當徹底檢查每個測試的執行結果。
5) 測試用例的編寫不僅應當根據有效或預料到的輸入情況,而且也應當根據無效和未預料到的輸入情況。
通常會忽略無效和未預料到的輸入情況,而實際上很多錯誤都發生於此。
6) 檢查程式是否“未做其應該做的”僅是測試的一半,測試的另一半是檢查程式是否“做了其不應該做的”。
這也是測試的兩面,沒有做應該做的是錯誤,做了不該做的也同樣是錯誤。
7) 應避免測試用例用後即棄,除非軟體本身就是一個一次性的軟體。
編寫測試用例本身是一個複雜且耗時的事情,要考慮之後的迭代,產品的更新換代,能夠節省不少時間,其次能及時對測試用例進行優化和升級。
8) 計劃測試工作時不應默許假定不會發生錯誤。
任何錯誤都可能會發生,還有很多未發現的隱藏錯誤。必須充滿好奇心和質疑的態度去探究。
9) 程式某部分存在更多錯誤的可能性,與該部分已發現錯誤的數量成正比。
發生錯誤越多的地方意味著程式的這部分越不穩定,隱藏的問題也越多。所以要重點測試發生了更多錯誤的地方,挖出隱藏問題。
10) 軟體測試是一項極富創造性、極具智力挑戰性的工作。