楊貞祥,趙興奮,賀虎林
(蘇州桑泰海洋儀器研發(fā)有限責任公司,江蘇 蘇州 215125)
基于歷史數(shù)據(jù)的軟件測試數(shù)據(jù)統(tǒng)計分析研究
楊貞祥,趙興奮,賀虎林
(蘇州桑泰海洋儀器研發(fā)有限責任公司,江蘇 蘇州 215125)
從大數(shù)據(jù)的角度,利用軟件測試歷史數(shù)據(jù),分析和研究軟件開發(fā)及測試過程,為軟件質(zhì)量保證和項目管理及組織能力建設(shè)提供了新的思路。在組織內(nèi)部建立測試數(shù)據(jù)收集機制,對軟件測試相關(guān)數(shù)據(jù)進行收集,建立數(shù)據(jù)分析模型,從軟件開發(fā)過程、軟件測試過程、軟件缺陷數(shù)據(jù)等方面對測試數(shù)據(jù)進行分析,獲得多個具有實際意義的量化指標,將此指標反饋到軟件開發(fā)和軟件測試及項目管理等過程中,顯著提高了軟件產(chǎn)品質(zhì)量及工作效率,降低了過程風(fēng)險,提高了組織市場競爭能力。
軟件測試;測試歷史數(shù)據(jù);數(shù)據(jù)統(tǒng)計分析
技術(shù)高度發(fā)展的結(jié)果必然是各行業(yè)及行業(yè)內(nèi)精細化的社會分工。在軟件行業(yè)表現(xiàn)為計算機技術(shù)與其他行業(yè)相結(jié)合,向?qū)I(yè)化發(fā)展,意味著每個軟件開發(fā)組織開發(fā)的軟件越來越具備系列化、繼承性的特點,這一重要特征使得針對軟件測試歷史數(shù)據(jù)的數(shù)據(jù)分析具有了重要意義。楊旭等人將數(shù)據(jù)分析定義為:“數(shù)據(jù)分析是指用適當?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進行分析,為提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細研究和概括總結(jié)的過程”[1]。軟件測試是最主要的軟件質(zhì)量保證手段[2-3],研究者們在測試過程改進[4]、建立評估基準[5]及度量理論研究[6]方面已經(jīng)進行了深入研究。但這些研究或重點研究測試過程和技術(shù)、或傾向于理論研究,而對軟件測試歷史數(shù)據(jù)進行分析研究[7],則能夠從軟件開發(fā)和測試結(jié)果入手,從問題現(xiàn)象分析問題原因,有針對性地改進軟件開發(fā)、軟件測試、項目管理等過程,從而提高軟件質(zhì)量。由于該研究過程針對每個組織自身的實際問題,故在具體實施中具有很強的可操作性。
數(shù)據(jù)分析離不開數(shù)據(jù),而要收集具有分析價值的測試數(shù)據(jù),需要構(gòu)建測試數(shù)據(jù)收集系統(tǒng),包括測試數(shù)據(jù)庫的物理架構(gòu)和測試數(shù)據(jù)邏輯存儲結(jié)構(gòu)兩方面。
1.1 軟件測試數(shù)據(jù)庫系統(tǒng)
軟件測試數(shù)據(jù)存儲系統(tǒng)作為軟件測試管理系統(tǒng)的一部分,可以單獨架構(gòu),也可以作為項目配置管理系統(tǒng)的一部分,架構(gòu)在項目配置管理系統(tǒng)上。為了便于管理和運行,該系統(tǒng)采用B/S架構(gòu),部署在局域網(wǎng)上,考慮到項目數(shù)據(jù)安全性,該局域網(wǎng)與互聯(lián)網(wǎng)物理隔離,在系統(tǒng)中配備唯一的數(shù)據(jù)導(dǎo)入和導(dǎo)出終端。系統(tǒng)架構(gòu)圖如圖1所示。
圖1 測試數(shù)據(jù)庫系統(tǒng)架構(gòu)
圖1中,測試人員在測試終端機上上傳測試數(shù)據(jù),存儲到測試數(shù)據(jù)存儲服務(wù)器上,數(shù)據(jù)處理服務(wù)器與存儲服務(wù)器及用戶進行交互,運行自動化測試系統(tǒng)等處理操作。測試數(shù)據(jù)備份機存儲測試歷史數(shù)據(jù),并通過備份方式保證數(shù)據(jù)安全。
1.2 測試數(shù)據(jù)邏輯存儲結(jié)構(gòu)
為了有效收集數(shù)據(jù),對數(shù)據(jù)表的結(jié)構(gòu)進行了設(shè)計,如圖2所示。
圖2中測試用例表存儲了需要分析的基礎(chǔ)數(shù)據(jù),在數(shù)據(jù)庫中按照項目代號(或被測件標識)分類存儲。人員信息表中包括了開發(fā)人員信息和測試人員信息,作為人員工作分析的一部分,將在下一節(jié)描述。問題分類表、開發(fā)人員分類表、測試人員分類表及被測軟件分類表則根據(jù)檢索要求,在整個測試數(shù)據(jù)庫范圍進行信息檢索,給出相應(yīng)的視圖,以便進一步分析。
圖2 測試數(shù)據(jù)存儲結(jié)構(gòu)
2.1 被測試軟件數(shù)據(jù)集分析
基于被測試軟件數(shù)據(jù)進行分析,獲取相應(yīng)指標,對相似類別軟件或模塊進行結(jié)果對照,得到分析結(jié)論。
(1)軟件可測度
軟件可測度用同等難度系數(shù)下測試用例密度與平均用例密度差來反映。軟件可測度計算公式如下:
(1)
可測度值大于零,表示該項目用例密度高于平均密度,軟件可測試性較好,反之,則該項目用例密度小于平均密度,軟件可測試性較差。正常情況下,可測度值應(yīng)該是在零值上下波動,波動幅度不得超過平均用例密度的1/2。若上下波動幅度超過限定范圍,則有可能是該項目測試用例設(shè)計粒度太大或者太小,或者對該項目的難度等級估計不準確,使得公式(1)中的平均用例密度值選取不匹配。
(2)模塊復(fù)用率
模塊復(fù)用率可以通過統(tǒng)計各個項目對模塊的復(fù)用次數(shù)獲得。模塊復(fù)用率反映模塊或函數(shù)在組織內(nèi)部的復(fù)用情況。由于同一個組織內(nèi)部產(chǎn)品的相似性及系列性,使得核心模塊復(fù)用的概率較高,而復(fù)用模塊一般比新開發(fā)模塊具有更高的軟件可靠性和算法成熟性,故模塊復(fù)用率能夠間接反映軟件質(zhì)量情況。另一方面,對復(fù)用模塊的測試一般會復(fù)用以前的測試用例,減少測試難度和測試工作量。從而測試模塊復(fù)用率越高,軟件模塊越穩(wěn)定,軟件測試工作量越小。
2.2 測試用例數(shù)據(jù)集分析
基于測試用例數(shù)據(jù)的分析包括測試用例分布分析、用例通過率分析、用例效率分析。
(1)測試用例分布分析
測試用例分布分析指對測試用例在軟件各模塊中的分布情況進行分析。根據(jù)軟件測試經(jīng)驗,測試用例數(shù)隨著軟件模塊復(fù)雜度的增加而增加,而模塊中存在缺陷的概率也隨著模塊復(fù)雜度的增加而增大。軟件測試用例密度計算公式定義為:
(2)
若要計算模塊的測試用例密度,則軟件代碼行數(shù)是指該模塊行數(shù);若要計算整個軟件的測試用例密度,則軟件代碼行數(shù)是指整個軟件代碼行數(shù)。在同一個項目中,對各模塊測試用例密度進行比較,從而識別關(guān)鍵模塊,采取措施提高軟件質(zhì)量。也可以進行同難度系數(shù)下項目間的整體用例密度比較,獲得對各項目設(shè)計質(zhì)量的指標值。
(2)用例通過率分析
測試用例通過率定義為:
(3)
若剔除測試誤差、設(shè)計和測試人員水平因素、測試環(huán)境因素,測試用例通過率可以用來表征軟件的成熟性。反過來,測試用例通過率也可以用來對設(shè)計和測試情況進行估計,若一次測試的測試用例通過率顯著低于公司同類軟件平均水平,則需要深入分析該軟件設(shè)計人員的設(shè)計是否合理、測試人員的測試設(shè)計和執(zhí)行是否正?;蛘邷y試環(huán)境差異是否對測試結(jié)果造成嚴重影響等。
(3)用例效率分析
測試用例效率計算公式定義為:
(4)
上式中復(fù)雜度系數(shù)根據(jù)軟件邏輯復(fù)雜度的不同而不同,取值范圍大于0且小于1。對于軟件測試來說,測試覆蓋率為基本要求,在保證測試覆蓋率的前提下,測試用例效率能夠表征測試工作效率和測試用例設(shè)計水平。在實際使用時,該指標需要與測試用例粒度保持平衡,不能為了追求高測試用例效率而增大測試用例顆粒度,從而使得測試用例界限不合理,這樣的測試用例反而會降低測試執(zhí)行效率。
2.3 缺陷數(shù)據(jù)集分析
(1)缺陷在軟件模塊中的分布
軟件缺陷具有集群效應(yīng),即出現(xiàn)缺陷的模塊或程序段,再次發(fā)現(xiàn)軟件缺陷的可能性越大。據(jù)此,在軟件質(zhì)量分析和風(fēng)險應(yīng)對方案制定過程中,使用軟件缺陷分布,能夠有效預(yù)防缺陷再次發(fā)生,提高軟件質(zhì)量。
(2)組織的缺陷-能力曲線
將組織數(shù)據(jù)庫中的缺陷按照不同類別進行統(tǒng)計,根據(jù)不同類型缺陷分布情況,可以得到缺陷分布曲線,相應(yīng)地,根據(jù)缺陷分布曲線獲得組織軟件能力曲線。由于各個類別軟件的業(yè)務(wù)量有差別,因此對于統(tǒng)計獲得的缺陷數(shù)據(jù)應(yīng)該按照相應(yīng)類別在整個工作量中的占比進行加權(quán),獲得最終的權(quán)衡缺陷數(shù)。缺陷分布曲線與軟件能力曲線關(guān)系圖如圖3所示。
圖3 類別缺陷-能力曲線
圖3中橫坐標的類別為組織能力范圍,左側(cè)坐標為缺陷指數(shù)刻度值,右側(cè)坐標為能力曲線刻度值。實線為類別缺陷指數(shù)曲線,虛線則表示組織在類別能力指數(shù)曲線。缺陷-能力曲線圖說明缺陷指數(shù)越大,則給類別軟件缺陷越多,軟件質(zhì)量越差,表明組織在該類別軟件的開發(fā)能力越差。
2.4 開發(fā)人員數(shù)據(jù)集分析
從軟件測試角度,使用測試數(shù)據(jù)庫中積累的數(shù)據(jù)資源對開發(fā)人員數(shù)據(jù)進行分析,能夠獲得軟件開發(fā)人員開發(fā)質(zhì)量因子指標。該指標計算公式定義為:
(5)
上式中工作量以代碼行為單位,表示每個項目中該開發(fā)人員編寫的代碼行數(shù),難度系數(shù)是對該部分工作復(fù)雜度的評估值,缺陷總數(shù)指在測試數(shù)據(jù)庫中統(tǒng)計的該代碼范圍內(nèi)的缺陷數(shù)量。
對于同一個軟件開發(fā)組織來說,每個開發(fā)人員的質(zhì)量因子趨勢應(yīng)該是趨于相同的,若分析后發(fā)現(xiàn)相同組織內(nèi)部開發(fā)人員質(zhì)量因子曲線趨勢差別很大,則說明該組織在溝通、培訓(xùn)及交流學(xué)習(xí)中出現(xiàn)了問題,組員之間沒有共享技術(shù)和經(jīng)驗,這對組織發(fā)展是不利的。
2.5 測試人員數(shù)據(jù)集分析
從效率和質(zhì)量的角度,根據(jù)測試數(shù)據(jù)庫中的歷史數(shù)據(jù),對測試人員工作進行量化。本文從測試效率和漏測率兩方面進行描述。
(1)測試效率
測試效率可以用來對單個軟件測試人員一段時間內(nèi)的工作效率進行衡量。測試效率計算公式定義為:
(6)
上式中N代表該測試人員在測試數(shù)據(jù)庫中的任務(wù)數(shù)量;測試代碼行數(shù)為第n個任務(wù)的代碼行數(shù);難度系數(shù)為該任務(wù)的難度估計值;測試周期以天為單位,在公式中換算到小時數(shù)。
(2)缺陷漏測率
作為對軟件測試質(zhì)量的度量,項目經(jīng)理可以通過缺陷漏測率指標對產(chǎn)品質(zhì)量進行監(jiān)控,若某個測試人員一段時間的缺陷漏測率指標高于平均水平,則需要分析具體原因并采取相應(yīng)措施。
(7)
上式中N表示測試人員總數(shù),工作量占比表示該測試人員在整個測試組織中的工作比重值。
軟件測試是保證軟件質(zhì)量的主要手段,軟件測試能夠有效降低項目風(fēng)險,故在軟件行業(yè)中越來越受到重視。軟件測試數(shù)據(jù)也成為軟件開發(fā)組織重要的過程資產(chǎn),建立有效的測試數(shù)據(jù)收集數(shù)據(jù)庫,對測試過程和測試結(jié)果數(shù)據(jù)進行有效收集,并在軟件測試歷史數(shù)據(jù)基礎(chǔ)上對數(shù)據(jù)進行分析,獲得多個具有重要意義的量化指標,用其分析和研究軟件開發(fā)、測試、項目管理等過程,以求發(fā)現(xiàn)問題并解決問題,使得組織能力獲得提高。基于軟件測試歷史數(shù)據(jù)的分析統(tǒng)計方法在軟件項目實施過程中具有一定的實用價值。
[1] 楊旭,湯海京.數(shù)據(jù)科學(xué)導(dǎo)論[M].北京:北京理工大學(xué)出版社,2014.
[2] 鄭人杰.計算機軟件測試技術(shù)[M]. 北京:清華大學(xué)出版社,1992.
[3] 陳開顏,王希武,孫會珺,等.軟件質(zhì)量與軟件測試[J].河北省科學(xué)院學(xué)報,2004,21(2):18-22.
[4] EDWARD K.軟件測試過程改進[M].李新華,譯.北京:機械工業(yè)出版社,2003.
[5] JONES C.軟件評估、基準測試與最佳實踐[M].韓柯,等,譯.北京:機械工業(yè)出版社,2003.
[6] 邢大紅.面向?qū)ο筌浖亩攘繉W(xué)理論與工具實現(xiàn)[D].合肥:合肥工業(yè)大學(xué),1998.
[7] 王悠,羅燕京,易福華,等.基于用例的軟件復(fù)雜度估算及應(yīng)用[J].計算機技術(shù)與發(fā)展,2007,17(7):196-199.
Research on data statistics analysis based on historical data of software testing
Yang Zhenxiang, Zhao Xingfen, He Hulin
(Suzhou Soundtech Oceanic Instrument Ltd.,Suzhou 215125, China)
From the point of big data, the historical data of software testing is used to analysis and research on the process of software development and software testing. It provides a new idea for software quality assurance, project management and organizational capacity building. Software testing data collection mechanism is established in enterprise, collecting the relevant data of software testing and establishing data analysis statistical model. These data are analyzed from the aspects of software development process, testing process and defect distribution for quantitative indicators with practical significance. Then these indicators are fed back to the implementation of software engineering. It can significantly improve the quality of software products and work efficiently, and process risks can be reduced. In summary, it can improve the market competitiveness of enterprises.
software test;historical data of software testing; statistical analysis of data
TP301
A
10.19358/j.issn.1674- 7720.2017.04.007
楊貞祥,趙興奮,賀虎林.基于歷史數(shù)據(jù)的軟件測試數(shù)據(jù)統(tǒng)計分析研究[J].微型機與應(yīng)用,2017,36(4):22-24,28.
2016-09-22)
楊貞祥(1982-),男,碩士,工程師,主要研究方向:軟件測試質(zhì)量分析、軟件自動化測試。
趙興奮(1965-),男,工程師,主要研究方向:聲納信號處理及軟件實現(xiàn)、軟件質(zhì)量管理。
賀虎林(1982-),男,工程師,主要研究方向:聲納信號分析及軟件實現(xiàn)、軟件質(zhì)量管理。