關 山
(北京信息職業技術學院,北京 100018)
軟件缺陷分析方法一般情況下是建立在軟件缺陷分類基礎上,軟件缺陷是存在于程序或者計算機系統中,是一種能夠對系統正常運行產生破壞的隱藏問題,在系統中以瑕疵、錯誤的方式存在,通常情況下,在軟件測試過程中就會被發現。通過對這些缺陷進行分析處理,有利于軟件測試工作人員制定科學的軟件測試方案,為今后軟件缺陷數據分析工作提供技術支持,可以對軟件進行預判,提高軟件預防工作,進而保證軟件產品質量。
現階段對軟件缺陷進行分類一般是對軟件屬性分類,常用的有缺陷標識/名稱、缺陷來源、缺陷程度、缺陷類型、缺陷狀態、缺陷可能性等原因,這其中一部分屬于定性屬性,一部分是定量屬性,還有一些分類是在基本分類之上進行更詳細的分類,如表1。

表1 軟件缺陷屬性分類
完成軟件測試一般包括三個方面,分別是驗證需求是否符合使用者要求、發現軟件中存在的錯誤、軟件質量評價。在進行軟件測試的過程中,實現軟件缺陷數據分類就需要建立在這三個方面基礎上,軟件缺陷基礎屬性分類已經不能夠滿足當下軟件質量評估不斷發展的需求。還需要結合軟件自身的屬性充分考慮軟件測試技術,以便于更好的收集軟件缺陷數據。促使軟件缺陷分類方法具有綜合性。對軟件實行缺陷分類主要目的就是為了分析軟件產生缺陷的原因、過程,并且從中找到解決的辦法,為軟件測試人員識別軟件缺陷提供輔助作用。結合軟件缺陷的發現途徑,完善軟件測試方案,進而提高軟件測試效果,保證軟件具有更高質量。在對軟件進行數據管理時,還需要添加能夠對軟件缺陷加以描述的內容,比如,缺陷描述、軟件描述、測試環境和時間描述等內容。
軟件缺陷數據分析最基本的依據就是數據收集與整體,只有保證收集的數據真實、完整、整理出來的結果才可靠、有用,進而提高分析效果。軟件缺陷數據主要包括定性和定量兩種數據,只采用其中一種數據對軟件缺陷數據進行整理都不能夠滿足所有軟件。為此,本文采用了多種數據整理方式,如散布圖、直方圖、排列圖、折線圖、因果圖、控制圖、檢查表方式開展軟件缺陷數據整理工作[1]。
直方圖是統計報告圖中的一種,也被稱之為質量分布圖,通常情況下,都是由橫坐標來展示統計數據的類型,縱坐標展示數據分布情況。能夠以圖形的方式展示出軟件缺陷分類分析數據,能夠呈現出軟件缺陷嚴重程度、狀態、類型、原因等,通過對直方圖可以直觀的掌握軟件缺陷整體分布情況。如圖一所示。在軟件缺陷數據分析過程中,使用直方圖可以將各屬性分布狀態與標準軟件缺陷數值之間的關系充分展示出來,通過直方圖可以直接對軟件質量進行評估,是軟件測試組用來掌握軟件缺陷數據定量分布狀態的一種手段。
散布圖是一種可以了解相互關系的圖,主要用于呈現兩種變量存在的關系和關聯程度,可以直觀的看出是否存在異常數據。通過直方圖展示出的數據并不能夠滿足測試組的全部需求,對于測試組而言,更在乎軟件缺陷等級、嚴重程度、缺陷類型、缺陷原因等各種因素之間的關系,下面提供散布圖是以缺陷類型和原因之間的關系為例,賦予它們一定數值,以便于更直觀、清晰展示出他們之間的聯系。
軟件缺陷類型與原因存在一定關系,導致軟件缺陷主要因素是由于需求不清楚,其次是人員疏忽導致缺陷問題出現。根據這個結果,軟件測試組相關工作人員就需要深入分析軟件需求這個影響因素,重視容易導致人員疏忽的過程。
排列圖數據主要是將軟件缺陷原因和內容進行分層,按照一定順序將其表示出來,是檢測人員發現問題、選擇問題、確認問題和改進問題的一種辦法。軟件測試工作并不是反復測試同一個軟件,換言之,采集軟件缺陷數據是通過多種不同產品進行測試得來的結果[2]。可以針對類似產品進行測試,收集、整理這些產品出現缺陷的概率,觀察類似軟件產品容易產生什么種類的缺陷,進而為測試組提供參考依據。
除上述整理方式還有其他整理法,如折線圖、控制圖、因果圖、檢查表等。其中控制圖是一種控制接線的圖形,主要用在分析和判斷軟件使用期間是否一直保持在穩定狀態,是用來了解軟件隨工序變化而變化的過程。在軟件使用壽命期限內,可以運用控制圖整理出軟件缺陷處于各階段變化的狀態,可以針對同一軟件進行階段性測試。但是對于上述總表二中軟件分類并不是適用控制圖來表現。同理,折線圖是用來表示隨時間變化而產生變量的數據,在同一個軟件中開展階段測試軟件缺陷數據并不受時間變化限制,因此針對同一個軟件階段性測試也不適用折線圖進行分析。因果圖是一種樹狀型圖,呈現出的是因果關系,這種方法可以用了解軟件缺陷產生原因,可以提供數據分析基礎依據,但是對于軟件缺陷分布實用性不高,同樣檢查表主要是提供現場檢查工作,對數據分析工作幫助不大,不適用數據分析中。
綜上所述,軟件缺陷有很多種分類,分析軟件缺陷數據對軟件管理和應用具有重要作用。針對軟件缺陷數據整理方法本文主要研究了直方圖整理法、散布圖整理法、排列圖整理法等,通過這三種方式實現軟件缺陷數據分析整理工作。在軟件測試的基礎上,采用合適的軟件缺陷數據分析方法,可以準確找到軟件存在問題的地方,進行針對性解決,進而優化軟件產品質量,提高軟件使用率,為今后發展提供保障。