王秀娟
摘 要:軟件產品已經步入千家萬戶,如何最大限度地從開發階段避免缺陷的發生,實現缺陷預防成為許多學者研究重點內容。本文主要闡述了缺陷預防的概念、目的及常用的缺陷預防分析技術;從缺陷預防幾個重要階段提出具體的改進措施,并對測試過程缺陷進行有效跟蹤和度量,驗證缺陷預防措施的有效性。
關鍵詞:缺陷預防 度量 缺陷分析
隨著軟件技術不斷發展,人們對缺陷的管理越來越嚴格,缺陷管理工具的運用,缺陷分析和度量技術越來越純熟,很多研究學者提出新的研究方向,比如缺陷預防與缺陷漏測。
一、缺陷預防概述
缺陷預防是從需求開發與管理、配置管理以及變更管理等各個軟件開發的關鍵過程進行預防和控制,并采用復用、各種模式確保過程的有效和成果的合格[1]。為了避免軟件的各種錯誤遺留到后續開發階段,運用各種技術和過程來發現這些問題,從需求開發管理、配置管理以及變更管理等關鍵過程進行缺陷預防和控制,并采用有效的復用、分析和處理缺陷的共性原因,來實施缺陷預防。缺陷預防是一個持續改進的流程。
缺陷預防目的是識別缺陷產生的原因,從而避免再次發生。測試人員需從項目生命周期之初介入,準確地理解測試對象并生成可測試的需求。軟件組織應需量化的理解其過程能力,并持續地改進組織級的開發過程、缺陷發現過程,同時引入新方法、新工具,加強彼此經驗交流,從而實現缺陷預防。
所謂漏測,是指軟件產品的缺陷沒有被測試組發現而遺漏到了用戶那里,卻最終被用戶所發現。在軟件開發過程中,缺陷越早被發現,那么發現和解決缺陷所花費的成本就越小。因此進行漏測分析、預防缺陷漏測是非常有意義的,利于降低軟件產品成本,提高軟件產品質量,提高客戶滿意度。進行漏測分析的目的是為了促進軟件質量提升和開發測試過程得到持續改進。
二、缺陷預防常用分析方法
因為錯誤是不可避免的,所以需要討論如何盡可能地把缺陷排除在軟件開發周期之外,以便盡量減少錯誤并提高軟件質量。缺陷分析是軟件缺陷管理常用的方法,可幫助項目組定位和解決問題,實現缺陷預防。根據LM公司電子銀行軟件項目缺陷情況提出幾點常用的分析技術:
(1)模塊缺陷分析:一般采用柱狀圖或是餅狀圖分析,統計每一個功能模塊發現的BUG比例;參考每次迭代發布的統計情況,分析前后的度量數據。
(2)缺陷起因分析:采用柱狀圖或是餅狀圖統計,一般可分析架構缺陷、需求、功能缺陷、易用性缺陷、安全性缺陷、性能缺陷。
(3)缺陷優先級分析:一般分為一級缺陷、二級缺陷、三級缺陷、輕微及建議類缺陷、業務調整等類型,根據缺陷優先級可以判斷系統質量情況。
(4)缺陷類型錯誤:一般分為需求問題、設計問題、代碼問題、接口問題、數據問題、程序邏輯問題、文檔問題等類型,根據錯誤類型定位缺陷發生階段。
(5)度量指標:運用度量技術,統計缺陷的概況,分析項目中缺陷情況,比如缺陷逃逸率,缺陷回退率情況;分析組內成員編碼熟練程度和測試效率。
(6)缺陷預測模型:采用預測模型分析測試有效性和充分性,分析遺留的缺陷數量,進行缺陷預防。
(7)缺陷漏測分析:對已經發生的缺陷進行漏測分析,歸納漏測缺陷類別,對組內成員共享經驗,避免類似問題的遺漏。目前項目組根據歷史經驗和缺陷屬性對漏測的缺陷進行分類,主要分為五大類包括多法人分析類、數據腳本類、測試規范類、業務配置類和測試規范類。
三、基于缺陷預防的軟件開發流程改進的應用
缺陷預防一般分為事前預防和事后預防,事前預防常用的幾個階段分為需求階段、設計階段和編碼階段;事后預防主要是驗證即測試階段,測試階段可進行缺陷分析,進行下一迭代的缺陷預防。結合本文第二章節缺陷預防階段和缺陷分析技術,提出以下幾點措施:
(1)需求階段
①進行需求跟蹤,制定詳細的需求跟蹤矩陣;
②需求范圍要明確,囊括系統安全性、系統性能、兼容性等;
③需求可執行性,現有技術或框架可實現,需求描述步驟詳細具體,盡量做到一步了然;
④對需求變更管理進行控制,嚴格把控需求變更流程;
⑤用戶需求文檔避免技術語言,運用通俗易懂語言描述且用戶確認;
⑥需要考慮易用性和界面問題,分析漏測分類點。
(2)設計階段
①增加技術評審環節,概要設計評審、詳細設計評審;
②設計文檔規范可執行,包含詳細的業務邏輯覆蓋;
③每個功能或模塊有明確的輸入、輸出和過程功能,并輔助數據測試;
④包含用戶界面UI設計描述,接口設計說明以及結果圖。
(3)編碼階段
①統一編碼規范,制定詳盡的編碼規范文檔;
②增加代碼評審環節,提高代碼評審力度;
③開發必須執行單元測試,規定單元測試覆蓋率;
④增加代碼走查環節,靜態檢查一般采用工具完成;
⑤每次迭代注意上一階段缺陷類型分析,并著重進行代碼評審。
(4)測試階段
①缺陷模塊統計,計算各個模塊的缺陷比例,比例越高模塊功能開發質量越差,開發人員需要重點關注;
②缺陷類型統計,查看缺陷集中分布情況,集中的則反映了軟件問題發生的階段,比如易用性問題、界面問題則說明需求確認環節需要重新跟蹤;
③缺陷起因統計,根據缺陷發生的原因制定規避措施;
④運用缺陷預測模型比如Gompertz模型進行缺陷的預測,估算遺留的缺陷數量和測試時間,并分析測試有效性和充分性,調整測試進度。
⑤根據漏測缺陷分類,在測試階段進行漏測分析的經驗共享,將漏測分類的五大類加入測試案例中,在測試執行過程中避免類似缺陷發生,同時重點關注該類問題測試案例覆蓋點。
⑥常用度量指標統計,度量指標值可反映開發階段組內成員情況和開發質量,針對性進行組內培訓或提升技能。
缺陷預防是保證軟件質量其中一項最重要的活動,直接影響到項目成本的控制和高質量的軟件成果,因此實現軟件缺陷預防勢在必行。
參考文獻:
[1]雷挺.基于缺陷分類和缺陷預測的軟件缺陷預防[J].計算機工程與設計,2013,34(01):215-220.
[2]褚洪波.靜態軟件缺陷預測分析[J].農家參謀,2018(03):207.