軟件缺陷不只是通常所說程序中存在的錯誤或疏忽,即俗稱的Bug。其范圍更大,除程序外還包括其相關產品:項目計劃、需求規格說明、設計文檔、測試用例、用戶手冊等等中存在的錯誤和問題。需要強調,在軟件工程整個生命周期中任何背離需求、無法正確完成用戶所要求的功能的問題,包括存在于組件、設備或系統軟件中因異常條件不支持而導致系統的失敗等都屬于缺陷的范疇。
軟件測試的任務就是發現軟件系統的缺陷,保證軟件的優良品質。但在軟件中是不可能沒有缺陷的。即便軟件開發人員,包括測試人員盡了努力,也是無法完全發現和消除缺陷。
如何做到最大限度地發現軟件系統的缺陷,人們首先想到提高開發人員的素質和責任心,科學地應用測試方法和制定優秀的測試方案。但這是不夠的,我們還需要實施缺陷分析。缺陷分析是將軟件開發、運行過程中產生的缺陷進行必要的收集,對缺陷的信息進行分類和匯總統計,計算分析指標,編寫分析報告的活動。
通過缺陷分析,發現各種類型缺陷發生的概率,掌握缺陷集中的區域、明晰缺陷發展趨勢、了解缺陷產生主要原因。以便有針對性地提出遏制缺陷發生的措施、降低缺陷數量。對于改進軟件開發,提高軟件質量有著十分重要的作用。
缺陷分析報告中的統計數據及分析指標既是對軟件質量的權威評估,也是判定軟件是否能發布或交付使用的重要依據。
二、管理軟件的缺陷分析
不同于系統、工具、工控、游戲等軟件,管理軟件在實際運行時面臨情況要復雜得多。首先是用戶的需求更加不統一,而且隨時間的推移需求發生變化快、變化大;其次運行環境更復雜,除受操作系統、數據庫等影響外,用戶在網絡、甚至同一計算機安裝運行不同性質和背景的應用軟件,其影響很難預測;再者客戶的操作習性不同,等等。因此管理軟件的種種缺陷,不是在開發時通過測試都能預計的。預測并控制缺陷有效手段之一是缺陷分析。
在高級別的CMM 中就包含了缺陷分析活動。缺陷分析更是一種以發展方式進行軟件過程改進的機制。
三、缺陷的信息收集
軟件工程通常要求為開發項目建立缺陷管理庫,也有人稱為變更控制庫。從發現缺陷開始創建變更,直到缺陷解決、經驗證、關閉變更止。在缺陷管理的整個生命周期記錄了大量相關資料,它們是缺陷分析所需要的寶貴信息。
由于變更庫并不專為缺陷分析而設計,缺陷分析主要關心以下信息項:變更編號、變更主題、變更提交的日期、變更狀態、變更性質、變更解決的日期、變更產生的根本原因、解決變更的工作量、驗證變更的工作量、變更的嚴重性等級、變更所屬軟件產品及子系統、變更修改的模塊、變更產生的階段、變更來源、變更測試情況等。 [Page]
缺陷信息部分是在創建變更時輸入的,部分是在變更解決中或解決后輸入的。
為了實施統計,有些缺陷信息必需事先設定關鍵字。
變更控制庫中有一信息項——變更原因,由修改缺陷程序的程序員詳細記錄缺陷產生的具體原因。這項信息顯然無法直接用于分類和匯總。變更產生的根本原因信息項,則是基于變更原因的關鍵字字段,是專為處理缺陷分析中缺陷原因而設計的信息項。
軟件發布前缺陷分析所用缺陷根本原因的關鍵字,可以有下幾種實例:
* 編程:原始編程出錯,沒有客觀原因。
* 修改:由于修改缺陷而引發的新變更,并且引發的變更與原變更的錯誤是相關的。
* 培訓:項目組新成員培訓不充分,或使用新工具不熟練引起的變更。
* 需求文檔:需求分析文檔不明確、不詳盡等原因所引起的變更。
* 信息交流:信息交流不暢,開發成員間溝通不及時引起的變更。
* 外部問題:所涉及軟件模塊外部問題引起的變更。
* 其他:指以上各種原因之外所產生的變更。
軟件發布后缺陷分析所用缺陷根本原因的的關鍵字,可以有下幾種實例:
* 需求分析:需求分析不足等原因所引起的變更。
* 系統設計:軟件系統設計種種原因所引起的變更。
* 程序編碼:軟件開發階段中編程錯誤所引起的變更。
* 維護:軟件發布后程序維護時引起的變更。
* 實施:實施人員做軟件初始化設置或系統參數設置不當等,實施時所引發的變更。
* 用戶:泛指用戶不了解業務和軟件、不熟悉操作等原因產生的異常問題。
* 數據異常:運行中不明原因引起的用戶數據混亂和異常。
* 升級:軟件版本升級過程發生的問題,包括用戶在升級時未按規程操作產生的問題。
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/