構建理想的模塊自測結構[1] 軟件測試
軟件測試的工作量很大(業界統計達到40% 到60%的總開發時間),而又有很大部分適于自動化,因此,測試的改進會對整個開發工作的質量、成本和周期帶來非常顯著的效果。
極限編程(XP)中推薦的自動化單元測試,是指在編寫代碼之前先寫好測試代碼,代碼編到一定階段就用寫好的測試代碼進行測試。自動化單元測試可以帶來如下好處:
由于測試代碼(測試用例)的不斷增加,這些測試總讓我們寫出的代碼往正確的方向靠攏,使我們不至于重犯以前的錯誤。
由于可以實現自動測試,所以可以很好的解決人工很難進行的回歸測試問題。
我們沿著“建立測試=>令測試通過=>再建立測試=>再令測試通過”的模式,一步一步地把整個程序正確地開發出來。
1.測試代碼的幾個關鍵環節
對測試代碼進行概括性分析,可以發現測試代碼都具有類似的結構,每一個測試用例的執行都要包括測試數據初始化、運行要測試的代碼、驗證測試結果正確性三部分,見圖1-1。
圖1-1 測試代碼的一般性流程
由于測試代碼一般都包含了圖1-1中的三部分,我們要改善測試代碼使之具有良好的結構只要從這三方面入手即可。
1)將測試數據和測試結果從測試代碼中分離出來
在采用CXXUNIT系列測試工具開發測試代碼時,發現一般編程人員都是測試用例和測試代碼混雜在一起,同樣測試結果也是和測試代碼混雜在一起,這樣就導致測試用例和測試結果的管理非常困難,因為要管理每個用例的數據和結果實際上就是去管理這些代碼。而且對于一個函數(或功能) 每增加新測試用例,就要多出一份類似的代碼,代碼的邏輯實際上都是一致的,和以前測試代碼的不同點就是在初始化數據、測試結果的不同,這實際上也導致了代碼的重復。
我們可以將測試數據和測試結果從測試代碼中分離出來,使得某一個函數(或功能)的測試代碼就一份,這一份測試代碼應可以進行多組測試數據的測試,可以進行多組測試結果的驗證。