專利名稱:基于貝葉斯方法的軟件運行剖面獲取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件運行剖面獲取技術(shù),特別是一種基于貝葉斯方法的軟件運行剖面獲取技術(shù)。
背景技術(shù):
隨著軟件功能的增強,軟件規(guī)模的增大,軟件的質(zhì)量越來越重要,軟件可靠性評估就是衡量軟件質(zhì)量的有力手段。軟件可靠性是軟件無失效運行的定量的度量。在對軟件進行可靠性分析時,軟件運行剖面直接影響了軟件的可靠性。軟件運行剖面(software operational profile)是指軟件的數(shù)據(jù)環(huán)境,指軟件數(shù)據(jù)輸入域以及各種輸入數(shù)據(jù)的組合使用的機會(概率)。
把軟件看作是輸入數(shù)據(jù)域到輸出數(shù)據(jù)的映射,由于軟件輸入數(shù)據(jù)很復(fù)雜,所以把軟件的輸入數(shù)據(jù)域劃分成等價的幾類輸入,這些輸入等價類在軟件運行過程中被使用的概率就可以近似看成軟件運行剖面。
軟件運行剖面對于軟件開發(fā)的整個過程都具有指導(dǎo)意義。在設(shè)計時,基于運行剖面的分析、設(shè)計使得軟件開發(fā)目標(biāo)更明確;在開發(fā)完成后,軟件運行剖面可用于指導(dǎo)軟件測試過程,集中精力對使用概率較高的等價類進行測試。同時,也可以使開發(fā)人員之間交流,開發(fā)人員與用戶交流,對客戶培訓(xùn)更有的放矢。同樣,軟件運行剖面的考慮也可以提高管理人員的管理效率。
對于軟件運行剖面的獲取,已經(jīng)出現(xiàn)多種方法,其中有的假設(shè)軟件運行剖面為靜態(tài)的、時齊次的概率分布模型,也有的假設(shè)軟件運行剖面為離散的馬爾科夫鏈的模型,還有的將軟件運行剖面看成是連續(xù)時間的馬爾科夫鏈的模型,以及將軟件運行剖面看作是泊松過程的模型等。其中,目前使用較多的是靜態(tài)分布模型。但在測試用例樣本較少時,使用靜態(tài)模型得出的結(jié)果不能正確反映運行剖面。
發(fā)明內(nèi)容
本發(fā)明技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供一種基于貝葉斯方法的軟件運行剖面獲取方法,該方法不僅可以提高軟件運行剖面獲取的精度,而且還可以提高軟件運行剖面獲取的穩(wěn)定性。
本發(fā)明的技術(shù)解決方案是基于貝葉斯方法的軟件運行剖面獲取方法,其特點在于按下列步驟獲取軟件運行剖面(1)確定軟件運行剖面的先驗分布;先驗分布的獲取主要有三種方法一是根據(jù)專家經(jīng)驗來確定各節(jié)點先驗分布,二是根據(jù)歷史數(shù)據(jù)估計各節(jié)點先驗分布,三是當(dāng)既無專家經(jīng)驗也無歷史數(shù)據(jù)時,可以采用無信息的先驗分布,一般采用均勻分布做先驗分布;(2)軟件運行和軟件測試,軟件測試采用分區(qū)測試方法;(3)由先驗分布和軟件測試的當(dāng)前數(shù)據(jù),利用貝葉斯公式得到后驗分布;(4)由步驟(3)中后驗分布計算軟件運行剖面的期望,得到軟件運行剖面的估計值;(5)如果滿足某停止準(zhǔn)則就轉(zhuǎn)至步驟(6),如不是則以得到的后驗分布為下一輪試驗的先驗分布,轉(zhuǎn)至步驟(2)。停止準(zhǔn)則一般有兩種一種是根據(jù)連續(xù)若干次的估計穩(wěn)定在預(yù)先給定的變化范圍內(nèi),另一種達(dá)到預(yù)先規(guī)定的測試步數(shù);(6)輸出結(jié)果。
本發(fā)明的原理假設(shè)D表示軟件的輸入域,Ci是軟件的第i個測試等價類。
D=Yi=1mCi]]>其中CiICj=φ,i≠j這里輸入域包含了m個不相交的測試等價類。
假設(shè)q={q1,q2,Λ,qm} 并且Σi=1mqi=1]]>其中qi表示一個輸入選自第i個測試等價類的概率。
此時,軟件運行剖面就定義為SOP={D,q}={<Ci,qi>,i=1,2,Λ,m}將軟件輸入域D,劃分成測試等價類Ci,i=1,2,Λ,m,用qi來表示一個輸入選自第i個測試等價類的概率。則軟件運行剖面為(q1,q2,Λ,qm)??梢园衍浖\行剖面看成是隨機向量Q。
首先是選擇先驗分布,假設(shè)Q的先驗分布為π(θ),其中θ是相關(guān)的參數(shù);然后根據(jù)當(dāng)前選擇的測試輸入方案Zi=(n1,n2,Λ,nm),其中ni表示在測試時取自第i個測試等價類的測試用例數(shù)。修改Q的先驗分布,得出后驗分布。
由于Dirichlet分布是公認(rèn)的擬合度較好的多元分布。假設(shè)Q的先驗分布為Dirichlet分布。Dirichlet分布定義如下Q={q1,q2,Λ,qm}是一個隨機向量,如果它滿足(1)對于任意的1≤i≤m,有0≤qi≤1,且Σi=1mqi=1;]]>(2)(q1,q2,Λ,qm)的分布密度為 其中α0=Σi=1mαi,]]>對任意的αi,αi>0。
記成(q1,q2,Λ,qm-1)~Dir(q|α1,Λ,αm-1;αm)或(q1,q2,Λ,qm)~Dir(q|α1,α2,Λ,αm)。
記Q~Dir(Q|α),其中參數(shù)向量α=(α1,α2,Λ,αm)。
使用測試用例進行軟件測試,各測試用例的概率分布服從多項式分布,假設(shè)有m個測試等價類,其概率分布為Q=(q1,q2,Λ,qm),若進行測試時,可能有N次測試用例選擇,其中落入第1個等價類的有n1次,落入第2個等價類的有n2次,...,落入第m個等價類的有nm次,分布函數(shù)為
f(n1,n2,Λ,nm)=(N!n1!×n2!×Λ×nm!)×q1n1×q2n2×Λ×qmnm]]>其中Σi=1mni=N]]>選擇Dirichlet分布作為Q的先驗分布,那麼Q的后驗分布為h(q|n1,n2,Λ,nm)∝Πi=1mqi(α1-1)×q1n1×q2n2×Λ×qmnm]]>∝q1(α1-1+n1)×q2(α2-1+n2)×Λ×qm(αm-1+nm)]]>∝Πi=1mqi(αi-1+ni)]]>確定出先驗分布一般采用下面三種方法①咨詢領(lǐng)域?qū)<襾泶_定如何選取先驗分布;②通過歷史數(shù)據(jù)估計先驗分布中參數(shù);③沒有先驗信息時,選取無信息先驗分布。
由于Dirichlet分布與多項式分布是共軛分布,Q的后驗分布也是Dirichlet分布。隨著測試(使用)過程進行,特定的輸入測試用例被選擇使用。當(dāng)一組測試用例被選擇使用后,可以得到其分布。假設(shè)有m個測試等價類,其概率分布為Q=(q1,q2,Λ,qm),進行測試時,有N次測試用例選擇,其中屬于第1個等價類的有n1個,屬于第2個等價類的有n2個,...,屬于第m個等價類的有nm個。
后驗分布的參數(shù)使用下面公式調(diào)整αi(j)=αi(j-1)+ni,i=1,2,Λ,m,j=1,2,Λ,k其中k是測試用例的組數(shù)。
最后,采用隨機變量qi的期望E(qi)來對其進行估計,得到運行剖面。
本發(fā)明采用貝葉斯方法建模軟件運行剖面,將先驗信息和試驗數(shù)據(jù)有機的結(jié)合起來利用貝葉斯方法獲取軟件運行剖面,可以隨著軟件運行利用貝葉斯理論在線獲取軟件運行剖面。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(1)由于考慮了先驗信息,提高運行剖面獲取的精度;(2)由于采用了貝葉斯技術(shù),提高了穩(wěn)定性。貝葉斯方法較之傳統(tǒng)的頻率估計要穩(wěn)定,特別是在小樣本的情況下。
圖1為本發(fā)明的方法步驟示意圖。
實施例1以Space軟件為例。Space軟件是一個公認(rèn)的軟件測試對象,它是為歐洲航天局開發(fā)的一個矩陣描述語言(ADL)解釋器,從文件中讀取ADL描述語句并檢查文件內(nèi)容是否合乎語法規(guī)則。如果ADL文件解釋正確,Space將輸出一個矩陣數(shù)據(jù)文件,包含矩陣元素信息、位置、激勵,否則將輸出錯誤提示。Space軟件包含9564行C語言代碼。
試驗設(shè)軟件有3個測試等價類,測試用的實際運行剖面為(q1,q2,q3)=(0.3243675,0.2981678,0.3774648)。
(1)確定軟件運行剖面的先驗分布。由于Dirichlet分布是公認(rèn)的擬合度較好的多元分布。假設(shè)Q的先驗分布為Dirichlet分布。通過分析,本實施例選取α1=α2=α3=40。
(2)軟件運行和軟件測試,本實施例采用分區(qū)隨機測試方法,即按運行剖面為(q1,q2,q3)=(0.3243675,0.2981678,0.3774648)產(chǎn)生測試用例。
(3)由先驗分布和軟件測試的當(dāng)前數(shù)據(jù),利用貝葉斯公式得到后驗分布。
(4)由上述步驟(3)中后驗分布計算軟件運行剖面的期望,得到軟件運行剖面的估計值。
(5)如果測試步數(shù)達(dá)到50則轉(zhuǎn)至步驟(6),如不是則以得到的后驗分布為下一輪試驗的先驗分布,轉(zhuǎn)至步驟(2)。
(6)輸出結(jié)果。
50步后Bayes估計和頻率估計的運行剖面分別是(0.370926,0.313036,0.316038)和(0.372966,0.311935,0.315099),它們和實際運行剖面的誤差 分別是0.125868和0.174956。因此可以看出使用Bayes方法的產(chǎn)生的數(shù)據(jù)有機的結(jié)合了原有的對運行剖面的認(rèn)識經(jīng)驗,和測試用例的信息,比傳統(tǒng)的頻率估計更好的逼近了運行剖面值。
實施例2以一個度量軟件SESS(Software Environment for Software ScienceData Collection)為例。該軟件使用VC6編寫,能夠讀取C語言源程序,統(tǒng)計源代碼行數(shù)、操作符、操作數(shù)的種類和個數(shù)并顯示,是進行部分重復(fù)性理論研究的工具。共有源代碼17807行,源文件106個。
試驗設(shè)軟件有4個測試等價類,測試用的實際運行剖面為(q1,q2,q3,q4)=(0.2570,0.1740,0.3580,0.2110)。
(1)確定軟件運行剖面的先驗分布。由于Dirichlet分布是公認(rèn)的擬合度較好的多元分布。假設(shè)Q的先驗分布為Dirichlet分布。通過分析,本實施例選取α1=α2=α3=α3=α4=50。
(2)軟件運行和軟件測試,本實施例采用分區(qū)隨機測試方法,即按運行剖面為(q1,q2,q3,q4)=(0.2570,0.1740,0.3580,0.2110)產(chǎn)生測試用例。
(3)由先驗分布和軟件測試的當(dāng)前數(shù)據(jù),利用貝葉斯公式得到后驗分布。
(4)由步驟(3)中后驗分布計算軟件運行剖面的期望,得到軟件運行剖面的估計值。
(5)如果測試步數(shù)達(dá)到50轉(zhuǎn)至步驟(6),如不是則以得到的后驗分布為下一輪試驗的先驗分布,轉(zhuǎn)至步驟(2)。
(6)輸出結(jié)果。
50步后Bayes估計和頻率估計的運行剖面分別是(0.2731,0.1838,0.3128,0.2303)和(0.2904,0.2147,0.2863,0.2086),它們和實際運行剖面的誤差 分別是0.0028和0.0079。
因此實施例也可以看出使用Bayes方法比傳統(tǒng)的頻率估計更好的逼近了運行剖面值。
權(quán)利要求
1.基于貝葉斯方法的軟件運行剖面獲取方法,其特征在于將貝葉斯方法應(yīng)用到軟件運行剖面獲取中,具體包括下列步驟(1)確定軟件運行剖面的先驗分布;(2)軟件運行和軟件測試;(3)由先驗分布和軟件測試的當(dāng)前數(shù)據(jù),利用貝葉斯公式得到后驗分布;(4)由步驟(3)中后驗分布計算軟件運行剖面的期望,得到軟件運行剖面的估計值;(5)如果滿足某停止準(zhǔn)則就轉(zhuǎn)至步驟(6),如不是則以得到的后驗分布為下一輪試驗的先驗分布,轉(zhuǎn)至步驟(2);(6)輸出結(jié)果。
2.根據(jù)權(quán)利要求1所述的基于貝葉斯方法的軟件運行剖面獲取方法,其特征在于所述的先驗分布的獲取主要有三種方法一是根據(jù)專家經(jīng)驗來確定各節(jié)點先驗分布,二是根據(jù)歷史數(shù)據(jù)估計各節(jié)點先驗分布,三是當(dāng)既無專家經(jīng)驗也無歷史數(shù)據(jù)時,可以采用無信息的先驗分布,一般采用均勻分布做先驗分布。
3.根據(jù)權(quán)利要求1所述的基于貝葉斯方法的軟件運行剖面獲取方法,其特征在于所述的停止準(zhǔn)則有兩種一種是根據(jù)連續(xù)若干次的估計穩(wěn)定在預(yù)先給定的變化范圍內(nèi),另一種達(dá)到預(yù)先規(guī)定的測試步數(shù)。
4.根據(jù)權(quán)利要求1所述的基于貝葉斯方法的軟件運行剖面獲取方法,其特征在于所述的軟件測試方法為分區(qū)測試方法。
全文摘要
一種基于貝葉斯方法的軟件運行剖面獲取方法,它是將貝葉斯方法應(yīng)用到軟件運行剖面獲取中,具體包括下列步驟(1)確定軟件運行剖面的先驗分布;(2)軟件運行和測試;(3)由先驗分布,得到后驗分布;(4)計算后驗分布的期望,得到軟件運行剖面的估計值;(5)如果滿足某停止準(zhǔn)則就轉(zhuǎn)入步驟(6),如不是則以得到的后驗分布為下一輪試驗的先驗分布,轉(zhuǎn)步驟(2);(6)輸出結(jié)果。本發(fā)明根據(jù)充分利用了專家經(jīng)驗等先驗信息,提高軟件獲取軟件運行剖面的精度和穩(wěn)定性。
文檔編號G06F11/36GK1667588SQ200510011550
公開日2005年9月14日 申請日期2005年4月11日 優(yōu)先權(quán)日2005年4月11日
發(fā)明者白成剛, 李宗民, 劉玉杰, 胡德斌, 蔡開元 申請人:北京航空航天大學(xué)