楊貞祥,趙興奮,賀虎林
(蘇州桑泰海洋儀器研發有限責任公司,江蘇 蘇州 215125)
摘要:從大數據的角度,利用軟件測試歷史數據,分析和研究軟件開發及測試過程,為軟件質量保證和項目管理及組織能力建設提供了新的思路。在組織內部建立測試數據收集機制,對軟件測試相關數據進行收集,建立數據分析模型,從軟件開發過程、軟件測試過程、軟件缺陷數據等方面對測試數據進行分析,獲得多個具有實際意義的量化指標,將此指標反饋到軟件開發和軟件測試及項目管理等過程中,顯著提高了軟件產品質量及工作效率,降低了過程風險,提高了組織市場競爭能力。
關鍵詞:軟件測試;測試歷史數據;數據統計分析
中圖分類號:TP301文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.04.007
引用格式:楊貞祥,趙興奮,賀虎林.基于歷史數據的軟件測試數據統計分析研究[J].微型機與應用,2017,36(4):22-24,28.
0引言
技術高度發展的結果必然是各行業及行業內精細化的社會分工。在軟件行業表現為計算機技術與其他行業相結合,向專業化發展,意味著每個軟件開發組織開發的軟件越來越具備系列化、繼承性的特點,這一重要特征使得針對軟件測試歷史數據的數據分析具有了重要意義。楊旭等人將數據分析定義為:“數據分析是指用適當的統計分析方法對收集來的大量數據進行分析,為提取有用信息和形成結論而對數據加以詳細研究和概括總結的過程”[1]。軟件測試是最主要的軟件質量保證手段[23],研究者們在測試過程改進[4]、建立評估基準[5]及度量理論研究[6]方面已經進行了深入研究。但這些研究或重點研究測試過程和技術、或傾向于理論研究,而對軟件測試歷史數據進行分析研究[7],則能夠從軟件開發和測試結果入手,從問題現象分析問題原因,有針對性地改進軟件開發、軟件測試、項目管理等過程,從而提高軟件質量。由于該研究過程針對每個組織自身的實際問題,故在具體實施中具有很強的可操作性。
1數據準備
數據分析離不開數據,而要收集具有分析價值的測試數據,需要構建測試數據收集系統,包括測試數據庫的物理架構和測試數據邏輯存儲結構兩方面。
1.1軟件測試數據庫系統
軟件測試數據存儲系統作為軟件測試管理系統的一部分,可以單獨架構,也可以作為項目配置管理系統的一部分,架構在項目配置管理系統上。為了便于管理和運行,該系統采用B/S架構,部署在局域網上,考慮到項目數據安全性,該局域網與互聯網物理隔離,在系統中配備唯一的數據導入和導出終端。系統架構圖如圖1所示。
圖1中,測試人員在測試終端機上上傳測試數據,存儲到測試數據存儲服務器上,數據處理服務器與存儲服務器及用戶進行交互,運行自動化測試系統等處理操作。測試數據備份機存儲測試歷史數據,并通過備份方式保證數據安全。
1.2測試數據邏輯存儲結構
為了有效收集數據,對數據表的結構進行了設計,如圖2所示。
圖2中測試用例表存儲了需要分析的基礎數據,在數據庫中按照項目代號(或被測件標識)分類存儲。人員信息表中包括了開發人員信息和測試人員信息,作為人員工作分析的一部分,將在下一節描述。問題分類表、開發人員分類表、測試人員分類表及被測軟件分類表則根據檢索要求,在整個測試數據庫范圍進行信息檢索,給出相應的視圖,以便進一步分析。
2測試數據集分析
2.1被測試軟件數據集分析
基于被測試軟件數據進行分析,獲取相應指標,對相似類別軟件或模塊進行結果對照,得到分析結論。
(1)軟件可測度
軟件可測度用同等難度系數下測試用例密度與平均用例密度差來反映。軟件可測度計算公式如下:
可測度值大于零,表示該項目用例密度高于平均密度,軟件可測試性較好,反之,則該項目用例密度小于平均密度,軟件可測試性較差。正常情況下,可測度值應該是在零值上下波動,波動幅度不得超過平均用例密度的1/2。若上下波動幅度超過限定范圍,則有可能是該項目測試用例設計粒度太大或者太小,或者對該項目的難度等級估計不準確,使得公式(1)中的平均用例密度值選取不匹配。
(2)模塊復用率
模塊復用率可以通過統計各個項目對模塊的復用次數獲得。模塊復用率反映模塊或函數在組織內部的復用情況。由于同一個組織內部產品的相似性及系列性,使得核心模塊復用的概率較高,而復用模塊一般比新開發模塊具有更高的軟件可靠性和算法成熟性,故模塊復用率能夠間接反映軟件質量情況。另一方面,對復用模塊的測試一般會復用以前的測試用例,減少測試難度和測試工作量。從而測試模塊復用率越高,軟件模塊越穩定,軟件測試工作量越小。
2.2測試用例數據集分析
基于測試用例數據的分析包括測試用例分布分析、用例通過率分析、用例效率分析。
(1)測試用例分布分析
測試用例分布分析指對測試用例在軟件各模塊中的分布情況進行分析。根據軟件測試經驗,測試用例數隨著軟件模塊復雜度的增加而增加,而模塊中存在缺陷的概率也隨著模塊復雜度的增加而增大。軟件測試用例密度計算公式定義為:
若要計算模塊的測試用例密度,則軟件代碼行數是指該模塊行數;若要計算整個軟件的測試用例密度,則軟件代碼行數是指整個軟件代碼行數。在同一個項目中,對各模塊測試用例密度進行比較,從而識別關鍵模塊,采取措施提高軟件質量。也可以進行同難度系數下項目間的整體用例密度比較,獲得對各項目設計質量的指標值。
(2)用例通過率分析
測試用例通過率定義為:
若剔除測試誤差、設計和測試人員水平因素、測試環境因素,測試用例通過率可以用來表征軟件的成熟性。反過來,測試用例通過率也可以用來對設計和測試情況進行估計,若一次測試的測試用例通過率顯著低于公司同類軟件平均水平,則需要深入分析該軟件設計人員的設計是否合理、測試人員的測試設計和執行是否正常或者測試環境差異是否對測試結果造成嚴重影響等。
(3)用例效率分析
測試用例效率計算公式定義為:
上式中復雜度系數根據軟件邏輯復雜度的不同而不同,取值范圍大于0且小于1。對于軟件測試來說,測試覆蓋率為基本要求,在保證測試覆蓋率的前提下,測試用例效率能夠表征測試工作效率和測試用例設計水平。在實際使用時,該指標需要與測試用例粒度保持平衡,不能為了追求高測試用例效率而增大測試用例顆粒度,從而使得測試用例界限不合理,這樣的測試用例反而會降低測試執行效率。
2.3缺陷數據集分析
(1)缺陷在軟件模塊中的分布
軟件缺陷具有集群效應,即出現缺陷的模塊或程序段,再次發現軟件缺陷的可能性越大。據此,在軟件質量分析和風險應對方案制定過程中,使用軟件缺陷分布,能夠有效預防缺陷再次發生,提高軟件質量。
(2)組織的缺陷-能力曲線
將組織數據庫中的缺陷按照不同類別進行統計,根據不同類型缺陷分布情況,可以得到缺陷分布曲線,相應地,根據缺陷分布曲線獲得組織軟件能力曲線。由于各個類別軟件的業務量有差別,因此對于統計獲得的缺陷數據應該按照相應類別在整個工作量中的占比進行加權,獲得最終的權衡缺陷數。缺陷分布曲線與軟件能力曲線關系圖如圖3所示。
圖3中橫坐標的類別為組織能力范圍,左側坐標為缺陷指數刻度值,右側坐標為能力曲線刻度值。實線為類別缺陷指數曲線,虛線則表示組織在類別能力指數曲線。缺陷能力曲線圖說明缺陷指數越大,則給類別軟件缺陷越多,軟件質量越差,表明組織在該類別軟件的開發能力越差。
2.4開發人員數據集分析
從軟件測試角度,使用測試數據庫中積累的數據資源對開發人員數據進行分析,能夠獲得軟件開發人員開發質量因子指標。該指標計算公式定義為:
上式中工作量以代碼行為單位,表示每個項目中該開發人員編寫的代碼行數,難度系數是對該部分工作復雜度的評估值,缺陷總數指在測試數據庫中統計的該代碼范圍內的缺陷數量。
對于同一個軟件開發組織來說,每個開發人員的質量因子趨勢應該是趨于相同的,若分析后發現相同組織內部開發人員質量因子曲線趨勢差別很大,則說明該組織在溝通、培訓及交流學習中出現了問題,組員之間沒有共享技術和經驗,這對組織發展是不利的。
2.5測試人員數據集分析
從效率和質量的角度,根據測試數據庫中的歷史數據,對測試人員工作進行量化。本文從測試效率和漏測率兩方面進行描述。
(1)測試效率
測試效率可以用來對單個軟件測試人員一段時間內的工作效率進行衡量。測試效率計算公式定義為:
上式中N代表該測試人員在測試數據庫中的任務數量;測試代碼行數為第n個任務的代碼行數;難度系數為該任務的難度估計值;測試周期以天為單位,在公式中換算到小時數。
(2)缺陷漏測率
作為對軟件測試質量的度量,項目經理可以通過缺陷漏測率指標對產品質量進行監控,若某個測試人員一段時間的缺陷漏測率指標高于平均水平,則需要分析具體原因并采取相應措施。
上式中N表示測試人員總數,工作量占比表示該測試人員在整個測試組織中的工作比重值。
3結論
軟件測試是保證軟件質量的主要手段,軟件測試能夠有效降低項目風險,故在軟件行業中越來越受到重視。軟件測試數據也成為軟件開發組織重要的過程資產,建立有效的測試數據收集數據庫,對測試過程和測試結果數據進行有效收集,并在軟件測試歷史數據基礎上對數據進行分析,獲得多個具有重要意義的量化指標,
用其分析和研究軟件開發、測試、項目管理等過程,以求發現問題并解決問題,使得組織能力獲得提高。基于軟件測試歷史數據的分析統計方法在軟件項目實施過程中具有一定的實用價值。
參考文獻
[1] 楊旭,湯海京.數據科學導論[M].北京:北京理工大學出版社,2014.
[2] 鄭人杰.計算機軟件測試技術[M]. 北京:清華大學出版社,1992.
[3] 陳開顏,王希武,孫會珺,等.軟件質量與軟件測試[J].河北省科學院學報,2004,21(2):18-22.
[4] EDWARD K.軟件測試過程改進[M].李新華,譯.北京:機械工業出版社,2003.
[5] JONES C.軟件評估、基準測試與最佳實踐[M].韓柯,等,譯.北京:機械工業出版社,2003.
[6] 邢大紅.面向對象軟件的度量學理論與工具實現[D].合肥:合肥工業大學,1998.
[7] 王悠,羅燕京,易福華,等.基于用例的軟件復雜度估算及應用[J].計算機技術與發展,2007,17(7):196-199.