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