一種缺陷關(guān)聯(lián)系數(shù)的度量方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種軟件工程中系數(shù)度量方法,具體涉及一種缺陷關(guān)聯(lián)系數(shù)的度量方 法。本發(fā)明屬于軟件工程中軟件測(cè)試技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 計(jì)算機(jī)軟件技術(shù)的發(fā)展不斷促進(jìn)著計(jì)算機(jī)應(yīng)用領(lǐng)域的深入發(fā)展,尤其是一些關(guān)鍵 應(yīng)用系統(tǒng)的開(kāi)發(fā)和使用,軟件已經(jīng)逐步成為影響國(guó)計(jì)民生的重要因素,而軟件質(zhì)量已經(jīng)成 為軟件產(chǎn)品最重要的屬性之一。隨著應(yīng)用軟件規(guī)模不斷擴(kuò)大,復(fù)雜性也相應(yīng)增強(qiáng),進(jìn)行軟件 測(cè)試、評(píng)估軟件可靠建立開(kāi)發(fā)人員對(duì)軟件的信心,已經(jīng)成為軟件開(kāi)發(fā)過(guò)程中的主要目標(biāo)。而 軟件缺陷(Defect)普遍存在并具有極大危害性,會(huì)造成重大的經(jīng)濟(jì)損失,危及人身安全。在 實(shí)際測(cè)試過(guò)程中,很多軟件缺陷并不是相互獨(dú)立的,它們存在著某種關(guān)聯(lián)關(guān)系,即失效關(guān)聯(lián) (Failure Correlation)。從缺陷自身方面來(lái)分析,造成這種關(guān)聯(lián)關(guān)系存在是因?yàn)樗鼈冎g 存在控制流和數(shù)據(jù)流所綜合導(dǎo)致的。軟件關(guān)聯(lián)缺陷是一種普遍存在的現(xiàn)象,"傳統(tǒng)可靠性理 論失效"的原因之一就是沒(méi)有考慮到這種關(guān)聯(lián)關(guān)系,其存在直接影響其它缺陷檢測(cè)的效率, 缺陷的關(guān)聯(lián)關(guān)系是造成軟件失效的根源之一。
[0003] 失效關(guān)聯(lián)普遍存在而且直接影響其它缺陷檢測(cè)效率,軟件可靠性評(píng)估失真,但目 前僅有少數(shù)出版的論文中考慮到了失效關(guān)聯(lián)。工程領(lǐng)域內(nèi)關(guān)聯(lián)缺陷的應(yīng)用比較稀少,目前 只有上海微創(chuàng)軟件有限公司的BMS XP中提供了關(guān)聯(lián)缺陷管理功能,定義了5種關(guān)聯(lián)(包括軟 件缺陷的依賴關(guān)聯(lián)、缺陷點(diǎn)修復(fù)后重新出現(xiàn)缺陷的重復(fù)關(guān)聯(lián)、缺陷相關(guān)關(guān)聯(lián)、重復(fù)出現(xiàn)導(dǎo)致 的關(guān)聯(lián)以及缺陷相關(guān)的附件)來(lái)刻畫(huà)缺陷之間和缺陷與其相關(guān)的文件間的關(guān)聯(lián)。BMS XP整 個(gè)管理以"BUG"為中心,將所有未完成的任務(wù)均作為軟件缺陷來(lái)進(jìn)行開(kāi)發(fā)修復(fù),并將與此缺 陷所有的相關(guān)信息作為關(guān)聯(lián)缺陷來(lái)進(jìn)行管理。
[0004] 關(guān)聯(lián)缺陷的表現(xiàn)形式多種多樣,可以是基于業(yè)務(wù)邏輯的關(guān)聯(lián)缺陷,也可以是分布 在不同系統(tǒng)模塊間具有共性的關(guān)聯(lián)缺陷,此外程序員固有的編程風(fēng)格也會(huì)導(dǎo)致產(chǎn)生的缺陷 具有相似性。研究表明,覆蓋相同或相似測(cè)試需求的測(cè)試用例往往會(huì)檢測(cè)出相同或相似的 軟件缺陷。以上文獻(xiàn)都是從關(guān)聯(lián)缺陷對(duì)軟件可靠性所帶來(lái)的負(fù)面影響進(jìn)行研究,其目的是 為了消除關(guān)聯(lián)缺陷,從而減少由此發(fā)生的軟件失效。軟件缺陷數(shù)據(jù)的關(guān)聯(lián)規(guī)則挖掘、統(tǒng)計(jì)分 析等對(duì)提高軟件質(zhì)量起到了一定的幫助作用。分析缺陷關(guān)聯(lián)系數(shù)的目的就是為了找出某個(gè) 缺陷被觸發(fā)時(shí),其他缺陷被觸發(fā)的可能性,作為缺陷管理和剔除的依據(jù)。利用缺陷關(guān)聯(lián)記載 各缺陷之間的關(guān)聯(lián)關(guān)系,可以通過(guò)關(guān)聯(lián)關(guān)系快速查找和排除相關(guān)缺陷,提高缺陷排除效率 和質(zhì)量。
[0005] 總的來(lái)說(shuō),人們已經(jīng)認(rèn)識(shí)到了軟件失效之間存在關(guān)聯(lián)關(guān)系,但對(duì)這一現(xiàn)象還缺乏 深入的研究,沒(méi)有從軟件失效的根源,也就是軟件缺陷的角度來(lái)分析關(guān)聯(lián)的原因。研究測(cè)試 模型基本上是假設(shè)關(guān)聯(lián)系數(shù)矩陣已知,缺陷間關(guān)聯(lián)則系數(shù)值為1,否則值為0。但是在實(shí)際的 測(cè)試環(huán)境中,不同軟件的缺陷關(guān)聯(lián)特性是不同的,對(duì)于缺陷排除的準(zhǔn)確性和效率都有不同 的影響,因此需要更準(zhǔn)確的估計(jì)關(guān)聯(lián)缺陷系數(shù)方法。
【發(fā)明內(nèi)容】
[0006] 為解決現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種缺陷關(guān)聯(lián)系數(shù)的度量方法, 以解決現(xiàn)有技術(shù)缺陷關(guān)聯(lián)系數(shù)的度量方法。
[0007] 為了實(shí)現(xiàn)上述目標(biāo),本發(fā)明采用如下的技術(shù)方案:
[0008] -種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,包括如下步驟:
[0009] 步驟一:從缺陷管理系統(tǒng)中抽象出來(lái)需要計(jì)算關(guān)聯(lián)度的缺陷信息建立抽象的缺陷 關(guān)聯(lián)t吳型;
[00?0]步驟二:計(jì)算缺陷的數(shù)據(jù)相似度;
[0011] 步驟三:計(jì)算缺陷間的耦合度;
[0012] 步驟四:根據(jù)缺陷的數(shù)據(jù)相似度、缺陷間的耦合度計(jì)算缺陷關(guān)聯(lián)系數(shù);
[0013] 步驟五:根據(jù)缺陷傳播特性更新缺陷關(guān)聯(lián)系數(shù)矩陣。
[0014] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述缺陷關(guān)聯(lián)模型包括:與缺 陷管理系統(tǒng)對(duì)應(yīng)的0DC屬性、缺陷所在組件屬性以及缺陷之間的調(diào)用關(guān)系。
[0015] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,包括如下步驟:
[0016]步驟2a:提取缺陷的基本屬性;
[0017] 步驟2b:建立缺陷的特征維度;
[0018] 步驟2c:實(shí)現(xiàn)缺陷數(shù)據(jù)相似性的計(jì)算,并基于該相似值來(lái)建立缺陷關(guān)聯(lián)。
[0019] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟2c包括:步驟2cl:將 缺陷特征集數(shù)據(jù)進(jìn)行量化處理;
[0020] 步驟2c2:計(jì)算缺陷間數(shù)據(jù)相似度;
[0021]步驟2c3:建立缺陷的數(shù)據(jù)相似度關(guān)聯(lián),當(dāng)發(fā)現(xiàn)某個(gè)缺陷時(shí),將與該缺陷關(guān)聯(lián)的缺 陷按照缺陷數(shù)據(jù)相似度由高到低逐個(gè)列出,由測(cè)試人員進(jìn)一步測(cè)試并排除對(duì)應(yīng)的缺陷。
[0022] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟2cl包括量化方法如 下:
[0023]
[0024] 其中,X,為缺陷特征向量X中某個(gè)特征的類標(biāo)識(shí),y缺陷特征向量Υ中某個(gè)特征的類 標(biāo)識(shí)。
[0025] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟2c2包括缺陷間數(shù)據(jù) 相似度的計(jì)算方法如下:
[0028] 其中,dsim(X,Y)表示兩個(gè)缺陷向量之間缺陷特征不相同的個(gè)數(shù),dsim表示兩個(gè)缺 陷間的數(shù)據(jù)相似度。
[0026]
[0027]
[0029] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,步驟三包括:
[0030] 步驟3a:利用面向?qū)ο蟮睦^承性將缺陷間耦合度的度量轉(zhuǎn)換為組件之間耦合度的 度量;
[0031]步驟3b:通過(guò)量化組件之間的類之間的需求和提供的程度,來(lái)計(jì)算組件之間耦合 度。
[0032] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟3b包括量化方法如 下:
[0033]
[0034]其中,c向外提供的方法集為MP(c),c需求外界的方法集為MR(c),P (a,b)表示組件 b需要接口交互的組件a提供方法集合,對(duì)于一個(gè)組件ceC,則有paricm(c)c_C :,child(C)二(:
[0035] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,步驟四包括:根據(jù)實(shí)際情況來(lái) 調(diào)整缺陷間數(shù)據(jù)相似度、缺陷間耦合度的權(quán)重,使得適應(yīng)不同情況下的應(yīng)用;缺陷間數(shù)據(jù)相 似度、缺陷間耦合度的權(quán)重分別用α,β表示,缺陷關(guān)聯(lián)系數(shù)DCC計(jì)算公式為:
[0036] DCC(x,y) =α · dsim(x,y)+P · Depd(x,y),其中0<α< 1,〇<β< 1且 α+β=1。
[0037] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟五包括:
[0038] 步驟5a:將缺陷關(guān)聯(lián)系數(shù)矩陣轉(zhuǎn)化為帶權(quán)的無(wú)向連通網(wǎng),得到各個(gè)缺陷節(jié)點(diǎn)的父 節(jié)點(diǎn)和子節(jié)點(diǎn);
[0039]步驟5b:利用缺陷傳播性,計(jì)算非直接關(guān)聯(lián)缺陷之間的缺陷關(guān)聯(lián)系數(shù);
[0040] 步驟5c:針對(duì)兩個(gè)缺陷節(jié)點(diǎn)之間有多條可達(dá)路徑的情況,計(jì)算得到兩者的缺陷關(guān) 聯(lián)系數(shù),并實(shí)時(shí)更新缺陷關(guān)聯(lián)矩陣。
[0041] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟5b包括量化方法如 下:
[0042]
其中,X為節(jié)點(diǎn)X'的同級(jí)節(jié)點(diǎn)j,k為節(jié)點(diǎn)X,Y'之間簡(jiǎn)單路徑的條數(shù),nj為第j條簡(jiǎn)單路徑 經(jīng)過(guò)的節(jié)點(diǎn)數(shù),j為簡(jiǎn)單路徑序號(hào),i為簡(jiǎn)單路徑中的節(jié)點(diǎn)序號(hào),DCC(i,i + l)為第j條路徑中 節(jié)點(diǎn)i與節(jié)點(diǎn)i + Ι之間的關(guān)聯(lián)系數(shù),DCC(X,X')為節(jié)點(diǎn)X'與節(jié)點(diǎn)X之間的關(guān)聯(lián)系數(shù);DCC(X', Y')為祖先節(jié)點(diǎn)(設(shè)為X')與其非直系的后代節(jié)點(diǎn)(設(shè)為Y')之間的關(guān)聯(lián)系數(shù)。
[0043] 前述的一種缺陷關(guān)聯(lián)系數(shù)的度量方法,其特征在于,所述步驟5c包括:
[0044] 步驟5cl:根據(jù)缺陷關(guān)聯(lián)矩陣建立有向圖網(wǎng)絡(luò).求缺陷節(jié)點(diǎn)的父節(jié)點(diǎn)、子節(jié)點(diǎn);
[0045] 步驟5c2:采用遞歸和鏈?zhǔn)疥?duì)列從指定的節(jié)點(diǎn)開(kāi)始,逐級(jí)搜索各個(gè)缺陷節(jié)點(diǎn)的所有 父節(jié)點(diǎn),并將搜索結(jié)果依次入列,按先進(jìn)先出順序?qū)㈥?duì)列中的節(jié)點(diǎn)出隊(duì)列,搜索當(dāng)前隊(duì)列的 節(jié)點(diǎn)的所有缺陷的父節(jié)點(diǎn)并入隊(duì)列,依次循環(huán),直至隊(duì)列為空時(shí)停止;
[0046]步驟5c3:根據(jù)上述搜索結(jié)果,采用結(jié)構(gòu)體鏈表來(lái)表達(dá)缺陷節(jié)點(diǎn)的父子關(guān)系,鏈表 的缺陷節(jié)點(diǎn)采用結(jié)構(gòu)體變量;結(jié)構(gòu)體中包含三個(gè)變量Data,Parent和No.;其中,Data存放缺 陷節(jié)點(diǎn)的代