摘 要: 介紹了Nelson模型及修改的條件/判定覆蓋的基本概念,,提出用Nelson模型來(lái)估計(jì)軟件模塊可靠性,,依據(jù)修改的條件/判定覆蓋劃分?jǐn)?shù)據(jù)輸入域。最終依據(jù)模塊可靠性算出系統(tǒng)可靠性,。
關(guān)鍵詞: Nelson模型 修改的條件/判定覆蓋 軟件可靠性 覆蓋測(cè)試
隨著軟件開(kāi)發(fā)由手工作坊型向軟件工廠型轉(zhuǎn)變,,軟件系統(tǒng)的規(guī)模和復(fù)雜性大大增加,對(duì)大型復(fù)雜軟件進(jìn)行可靠性分析也越加困難,。另外,,可靠性模型的基本假設(shè)不能完全成立,,從而使可靠性模型的估計(jì)值與實(shí)際統(tǒng)計(jì)值有較大差距。解決此問(wèn)題的方法之一是將復(fù)雜軟件系統(tǒng)按結(jié)構(gòu)特征分解到模塊層,。模塊的規(guī)模有限,,結(jié)構(gòu)簡(jiǎn)單,數(shù)據(jù)采集方便,,估算各模塊的可靠性相對(duì)要容易得多,,然后依據(jù)各模塊可靠性數(shù)據(jù)再對(duì)系統(tǒng)的可靠性進(jìn)行估算。
1 Nelson模型簡(jiǎn)介
將輸入數(shù)據(jù)域劃分為若干子集,,根據(jù)工程經(jīng)驗(yàn)或?qū)<乙庖?jiàn)估計(jì)出各個(gè)子集在運(yùn)行中被選用的概率,,然后按此概率分布隨機(jī)抽出n個(gè)輸入數(shù)據(jù),運(yùn)行n次程序,。如果運(yùn)行失效次數(shù)為nl,,則程序可靠度的估計(jì)是R=1-(nl/n)。
2 對(duì)模型輸入數(shù)據(jù)域劃分的分析
Nelson模型的應(yīng)用必須以程序的結(jié)構(gòu)分析為基礎(chǔ),,因此適用于結(jié)構(gòu)性測(cè)試的場(chǎng)合,。其輸入數(shù)據(jù)域一般是依據(jù)程序執(zhí)行路徑來(lái)劃分的。如圖1所示的程序流程,,有三個(gè)輸入變量A、B,、X,,四條路徑abd、ace,、abe,、acd,劃分成表1所示的輸入數(shù)據(jù)域,。
在諸Ei中規(guī)定了每個(gè)輸入變量的取值區(qū)間,,在取值區(qū)間內(nèi)任意抽取一個(gè)變量的實(shí)際取值。將各個(gè)變量按順序組合起來(lái)便生成了測(cè)試用例,,即程序運(yùn)行一次的數(shù)據(jù),。
這種劃分方法實(shí)際上是白盒測(cè)試中的全路徑覆蓋,是一種理想化的情況,。其缺點(diǎn)為:路徑是以分支的指數(shù)級(jí)別增加的,。例如:一個(gè)函數(shù)嵌套10個(gè)if語(yǔ)句,就有1 024條路徑,;程序中有循環(huán)體時(shí),,路徑數(shù)更是一個(gè)龐大的數(shù)字,何況還要從諸路徑的輸入數(shù)據(jù)域Ei中抽取若干樣本來(lái)運(yùn)行程序,,因此花費(fèi)的時(shí)間和成本相當(dāng)高,。
3 修改的條件/判定覆蓋
修改的條件/判定覆蓋(Modified Condition/Decision Coverage,,MC/DC)是白盒測(cè)試中邏輯覆蓋的一種。它繼承了多重條件覆蓋的優(yōu)點(diǎn),,線性地增加了測(cè)試用例的數(shù)量,,對(duì)操作數(shù)及非等式變化反應(yīng)敏感,具有更高的目標(biāo)覆蓋率,。其相關(guān)概念定義如下,。
(1)條件(Condition):不包含邏輯表達(dá)式,僅包含由關(guān)系操作符(如≥≤=等)構(gòu)成的布爾表達(dá)式,。
(2)判定(Decision):至少包含一個(gè)邏輯表達(dá)式(AND,、OR、XOR等)的布爾表達(dá)式,。
修改的條件/判定覆蓋:判定中每個(gè)條件的可能結(jié)果至少出現(xiàn)一次,,每個(gè)判定本身的可能結(jié)果至少出現(xiàn)一次,每個(gè)入口點(diǎn)和出口點(diǎn)至少要喚醒一次,,并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果,。
如果一個(gè)條件能單獨(dú)地確定判定的輸出值(判定中的其他條件保持不變),則稱該條件獨(dú)立地影響判定結(jié)果,。表明條件獨(dú)立影響結(jié)果的二組測(cè)試用例稱為獨(dú)立影響對(duì),。
從表2可以看出,(1),、(2),、(3)構(gòu)成了判定D1滿足修改的條件/判定覆蓋的最小測(cè)試用例集。從數(shù)據(jù)域E1和E2中各取一個(gè)測(cè)試用例構(gòu)成的獨(dú)立影響對(duì),,表明了條件C1的獨(dú)立性影響,。同樣,(2),、(3),、(4)構(gòu)成了判定D2滿足修改的條件/判定覆蓋的最小測(cè)試用例集。
4 基于MC/DC的模塊可靠性估計(jì)
Nelson模型中程序的輸入數(shù)據(jù)域Ei(i=1,,2,,……,N)的劃分是一個(gè)關(guān)鍵性步驟,。理想狀況下,,N是一個(gè)很大的數(shù)甚至是無(wú)窮大的數(shù),在實(shí)際工程應(yīng)用中,,N只能取有限值,。若依據(jù)全路徑覆蓋策略劃分Ei,則N將隨程序復(fù)雜度的增長(zhǎng)而呈指數(shù)增長(zhǎng)。所以提議依據(jù)修改的條件/判定覆蓋的最小測(cè)試用例集來(lái)劃分輸入空間,。例如,,綜合表2中的二個(gè)判定,可以取如表3所示的輸入數(shù)據(jù)域,。
這種覆蓋策略能覆蓋全部的條件取值和判定分支,,保證每一個(gè)語(yǔ)句都能至少執(zhí)行一次,有很高的代碼覆蓋率,。而當(dāng)程序復(fù)雜度增加時(shí),,N的增長(zhǎng)是線性的。文獻(xiàn)[1]論述了求MC/DC最小測(cè)試用例集的方法,。
劃分完輸入域后,,根據(jù)工程經(jīng)驗(yàn)和專家意見(jiàn)估計(jì)出各個(gè)子集在運(yùn)行中被選用的概率pi;按此概率進(jìn)行隨機(jī)抽樣,,得到m組測(cè)試用例,;運(yùn)行程序,最后根據(jù)公式得到模塊的可靠性,。
Thayer 給出了程序經(jīng)過(guò)結(jié)構(gòu)測(cè)試后用Nelson模型估計(jì)可靠性的經(jīng)驗(yàn)公式,。用ri表示程序第i條通路成功運(yùn)行的概率ri=ai pi,其中ai是經(jīng)驗(yàn)系數(shù),。
如果屬于Ei的測(cè)試用例數(shù)大于1,,則ai的經(jīng)驗(yàn)值是0.99。
如果屬于Ei的測(cè)試用例數(shù)為1,,則ai的經(jīng)驗(yàn)值是0.95,。
如果沒(méi)有屬于Ei的測(cè)試用例,但由Ei決定的通路中所有的程序單元和由程序單元構(gòu)成的順序?qū)υ跍y(cè)試中已經(jīng)全部被執(zhí)行,,則ai的經(jīng)驗(yàn)值是0.9。
如果沒(méi)有屬于Ei的測(cè)試用例,,但由Ei決定的通路中所有的程序單元已全部執(zhí)行,,但是程序單元的順序?qū)χ挥幸徊糠謭?zhí)行,則ai的經(jīng)驗(yàn)值是0.8,。
如果在測(cè)試中有m個(gè)程序單元(1≤m≤4)沒(méi)有執(zhí)行,,則ai的經(jīng)驗(yàn)值為0.8~0.2m。
如果有四個(gè)以上的程序單元在測(cè)試中沒(méi)有執(zhí)行,,則ai的經(jīng)驗(yàn)值為0,。
5 結(jié) 論
軟件模塊的成型往往處于軟件開(kāi)發(fā)的早期階段。在這個(gè)階段,,整個(gè)系統(tǒng)尚未集成和整合,,QA部門(mén)正在針對(duì)軟件設(shè)計(jì)的最小單位——程序模塊,進(jìn)行正確性檢驗(yàn)的單元測(cè)試。
以測(cè)試數(shù)據(jù)為基礎(chǔ)的預(yù)計(jì)模型因測(cè)試生命周期剛剛開(kāi)始而無(wú)法使用,。而覆蓋測(cè)試一般應(yīng)用在軟件測(cè)試的早期,,即單元測(cè)試階段,用它來(lái)估計(jì)模塊可靠性是適宜的,。
得到軟件各模塊的可靠性之后,,便可通過(guò)程序軟件邏輯流程來(lái)評(píng)估整個(gè)軟件系統(tǒng)的可靠性。Soistman和Regsdalo在文獻(xiàn)[3]中給出了一種硬/軟件復(fù)合系統(tǒng)結(jié)構(gòu)預(yù)計(jì)方法,。該方法在獲得各模塊的可靠性數(shù)據(jù)后,,通過(guò)識(shí)別運(yùn)行剖面,分析任務(wù)功能,,用馬爾可夫過(guò)程表示程序邏輯流程在模塊間的轉(zhuǎn)移,,最后計(jì)算出系統(tǒng)可靠性。
估計(jì)模塊可靠性的意義在于估計(jì)過(guò)程中所需的資料和數(shù)據(jù)都可在軟件開(kāi)發(fā)的早期獲得,。通過(guò)一定的預(yù)計(jì)方法,,人們?cè)谲浖_(kāi)發(fā)的早期就可以對(duì)整個(gè)系統(tǒng)進(jìn)行可靠性分析和預(yù)計(jì)。
參考文獻(xiàn)
1 張義德,,王國(guó)慶,,湯幼寧.更改的判定條件覆蓋測(cè)試技術(shù)研究.計(jì)算機(jī)工程與設(shè)計(jì),2003,;24(5)
2 黃錫滋.軟件可靠性,、安全性與質(zhì)量保證.北京:電子工業(yè)出版社,2002
3 Soistman E C,,Regsdalo K B.Impact of Hardware/Software Faults On System Reliability.Government Report AD A165231.USA,,1986
4 朱鴻.軟件可靠性估計(jì)與計(jì)算復(fù)雜性的關(guān)系淺析.軟件學(xué)報(bào),1998,;9(9)