過程改進并不是IT行業專有的詞匯。自從有質量活動以來,人們就開始廣泛地關注過程改進。在著名的Deming循環中,過程改進甚至被賦予了舉足輕重的地位。我們知道在這個循環中(即計劃、實施、檢查、改進循環),過程改進既是一次質量活動的終點,又是下次質量活動的原點,它起著承上啟下的作用。Deming循環中過程改進的理念是如此鮮明而且深入人心,以致CMM的起草者,卡內基梅隆大學軟件工程研究所直接將它作為成為CMM進行持續過程改進的基本模型。
盡管過程改進已經不再是新的名詞,然而,提出軟件測試過程改進卻是近些年的事情。讀者不妨查閱一下IEEE、ISO、CMM或者CMMI。在這些文獻中,有關軟件測試過程改進的描述少之又少。那么這是不是意味著軟件測試就不需要做過程改進了呢?顯然不是這樣。首先,測試作為質量控制的重要活動,天然屬于Deming循環的應用范疇。這是因為Deming循環最初就是針對質量控制而提出的。其次,軟件測試真正進入大眾的視野也僅僅是近20年間的事,相關的研究工作做得都還不夠。
鑒于資料的嚴重缺乏,本文僅從工程實踐的角度,對軟件測試過程改進做一個淺顯的介紹與探討,并歡迎讀者朋友來信交流。
軟件測試過程的提出
在軟件作為手工藝品產出的年代,軟件過程的概念還沒有萌芽,就談不上軟件測試過程了。直到人們意識到必須用工程化的手段來規范軟件生產,軟件過程才開始廣受關注。一些激進的理論家甚至提出“軟件工廠”的概念。顧名思義,這個詞很形象地表達了人們對軟件開發行業的一種“流程化”的愿望:即開發過程遵循一定的開發步驟,各司其職,井然有序,如同流水線作業一般完成軟件產品的開發。不錯,在工程思想上,它們的生產過程的確有可以類比的地方,不同的是,流水線生產的冰箱、彩電都是有形的,而軟件是無形的。
我們假想一下冰箱的生產過程,在冰箱開始組裝之前,所需的所有組件都必須采購或生產出來,并且這些組件必須是嚴格按照要求的大小、規格、質量完成的,這樣才能夠組裝在一起,達到相應的功能和性能指標。如果冰箱的門比柜體高了2厘米或者說某個螺絲的直徑小了1毫米,那么這批冰箱是不能正常使用甚至是不能銷售的。
假設冰箱質量檢查的流程是這樣的:明確標準(也就是知道冰箱的柜體的尺寸,冰箱門的尺寸)→驗證標準(驗證冰箱柜體的尺寸,冰箱門的尺寸是否匹配)→發現不符合的產品(冰箱門比柜體高了2厘米)→采取措施(更換冰箱柜體或者更換冰箱門)→重新驗證(確定冰箱門與柜體的尺寸相匹配了)。
軟件測試流程與上述冰箱質量檢查流程是類似的,一個較為典型的軟件測試流程可以這樣描述:制定測試計劃→撰寫測試用例→執行測試用例→記錄并提交缺陷→修改缺陷→回歸測試。
把兩個過程一一對應起來,得到如下映射關系:制定測試計劃、撰寫測試用例,也就是明確標準,類似于在生產冰箱的時候,需要根據設計圖紙、生產程序,零部件樣品逐一確定冰箱的零部件檢驗標準。執行測試用例,也就是驗證標準,類似于逐一分解冰箱的零部件,逐一檢查生產質量。記錄并提交缺陷,也就是發現不符合的產品。這里略有不同,冰箱的零部件一旦被發現不符合標準,就可能被扔進廢品堆,軟件部件卻不會因此全部都被廢棄掉。所以詳細的記錄缺陷的操作步驟、便于開發人員進行缺陷修復是很有必要的。修改缺陷,類似于冰箱生產過程中發現問題后采取措施,可能是圖紙設計的時候尺寸標注錯誤,也可能試生產系統參數設置的錯誤,還可能是工人操作不當,總之真正的原因是一定要被找到的;貧w測試,類似于冰箱返工后的重新驗證,一般找到不符合標準的零件原因后,冰箱除更換相關零部件還需經過二次檢測。軟件產品也是這樣,修正缺陷后仍需進行回歸測試。
文章來源于領測軟件測試網 http://www.kjueaiud.com/