《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 軟件可靠性測(cè)試及評(píng)估平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
軟件可靠性測(cè)試及評(píng)估平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
2014年微型機(jī)與應(yīng)用第15期
李建軍1,2,邵培南1,段曉峰1,晏新晃1,2,趙 輝1,2
1.華東計(jì)算技術(shù)研究所,上海 2.國(guó)家工程軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心
摘要: 設(shè)計(jì)并實(shí)現(xiàn)了軟件可靠性測(cè)試與評(píng)估平臺(tái),支持軟件可靠性測(cè)試用例自動(dòng)生成,便于可靠性數(shù)據(jù)收集以及軟件可靠性評(píng)估和預(yù)測(cè),解決了軟件可靠性測(cè)試難以有效開(kāi)展的問(wèn)題。通過(guò)與SMERFS預(yù)測(cè)結(jié)果對(duì)比,表明本平臺(tái)對(duì)軟件可靠性測(cè)試與評(píng)價(jià)具有較強(qiáng)的實(shí)用性。
Abstract:
Key words :

  摘  要: 設(shè)計(jì)并實(shí)現(xiàn)了軟件可靠性測(cè)試與評(píng)估平臺(tái),支持軟件可靠性測(cè)試用例自動(dòng)生成,便于可靠性數(shù)據(jù)收集以及軟件可靠性評(píng)估和預(yù)測(cè),解決了軟件可靠性測(cè)試難以有效開(kāi)展的問(wèn)題。通過(guò)與SMERFS預(yù)測(cè)結(jié)果對(duì)比,表明本平臺(tái)對(duì)軟件可靠性測(cè)試與評(píng)價(jià)具有較強(qiáng)的實(shí)用性。

  關(guān)鍵詞: 軟件可靠性測(cè)試;軟件可靠性測(cè)試平臺(tái);軟件可靠性評(píng)估

  隨著軟件核心地位日益突出,軟件越來(lái)越影響著整個(gè)系統(tǒng)裝備的可用性,軟件失效造成的故障已成為新的焦點(diǎn),軟件的質(zhì)量和可靠性已成為制約裝備質(zhì)量和性能的瓶頸。軟件可靠性是指軟件在規(guī)定的條件和時(shí)間內(nèi)正確完成規(guī)定功能的能力。開(kāi)展軟件可靠性的測(cè)試和評(píng)估工作對(duì)于提高武器裝備的軟件質(zhì)量具有重大意義。軟件可靠性的度量和預(yù)測(cè)一般是通過(guò)軟件可靠性模型來(lái)進(jìn)行的,軟件可靠性模型的應(yīng)用又是一個(gè)很復(fù)雜的過(guò)程,如果完全用手工來(lái)實(shí)現(xiàn)這一過(guò)程要花費(fèi)大量的人力物力,還不能保證準(zhǔn)確性。我國(guó)軟件可靠性測(cè)試和評(píng)價(jià)工作仍處于起步階段,參考文獻(xiàn)[1]、[2]主要分析了關(guān)于軟件可靠性測(cè)試的研究,大多數(shù)還停留在理論上,與國(guó)際先進(jìn)水平相比,還存在很大的差距,因此,迫切需要一個(gè)集成的工具來(lái)輔助軟件可靠性測(cè)試和可靠性模型的應(yīng)用。

  為此,本文分析了軟件可靠性測(cè)試技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了軟件可靠性測(cè)試和評(píng)估平臺(tái),通過(guò)基于UML順序圖的軟件可靠性測(cè)試用例生成技術(shù)生成測(cè)試用例,在執(zhí)行過(guò)程中自動(dòng)收集軟件可靠性數(shù)據(jù),結(jié)合軟件可靠性模型進(jìn)行評(píng)估,并通過(guò)將評(píng)估結(jié)果與SMERFS工具相對(duì)照,證明了該平臺(tái)的有效性,最終為軟件可靠性測(cè)試、評(píng)價(jià)提供了相應(yīng)的手段。

1 總體架構(gòu)

  建立軟件可靠性測(cè)試與評(píng)估平臺(tái),首先要了解軟件可靠性測(cè)試的涵義、測(cè)試方法和測(cè)試過(guò)程等,而進(jìn)行軟件可靠性評(píng)估則需選取合適的可靠性指標(biāo)體系和評(píng)估模型。

  軟件可靠性測(cè)試是指在軟件的預(yù)期使用環(huán)境中,為進(jìn)行軟件可靠性評(píng)價(jià)而對(duì)軟件實(shí)施的一種測(cè)試。參考文獻(xiàn)[3]指出:為了滿足用戶對(duì)軟件的可靠性要求、評(píng)價(jià)軟件可靠性水平及驗(yàn)證軟件產(chǎn)品是否達(dá)到可靠性要求,開(kāi)展軟件可靠性測(cè)試是一個(gè)比較有效的方法。

  當(dāng)前軟件可靠性測(cè)試方法主要有兩種。(1)基于應(yīng)用場(chǎng)景模型的統(tǒng)計(jì)測(cè)試方法,其通過(guò)定義系統(tǒng)所有的典型應(yīng)用場(chǎng)景及其發(fā)生的概率,然后由該模型生成測(cè)試用例;(2)基于操作剖面的可靠性測(cè)試方法,其建立由操作集合和所對(duì)應(yīng)的概率組成的操作剖面。由于在目前裝備軟件開(kāi)發(fā)過(guò)程中大量使用Rational Rhapsody進(jìn)行軟件需求建模和軟件設(shè)計(jì)建模,而且使用UML模型比采用軟件運(yùn)行剖面更容易獲得。Musa指出,開(kāi)發(fā)一個(gè)由任務(wù)操作集合和任務(wù)操作所對(duì)應(yīng)的概率組成的運(yùn)行剖面在實(shí)際測(cè)試工作中不現(xiàn)實(shí)。而使用軟件應(yīng)用場(chǎng)景模型來(lái)建立系統(tǒng)的測(cè)試模型,可較容易確定軟件所處的狀態(tài)和該狀態(tài)可能出現(xiàn)的輸入,通過(guò)提取等價(jià)的輸入序列,可容易歸納出系統(tǒng)中有限的輸入組合[4]。統(tǒng)計(jì)測(cè)試被稱為最成功的基于模型的軟件測(cè)試[5]。本文采用了基于擴(kuò)展的UML順序圖的應(yīng)用場(chǎng)景模型測(cè)試方法進(jìn)行可靠性測(cè)試。

  軟件可靠性測(cè)試與評(píng)估的一般過(guò)程主要包括:構(gòu)造測(cè)試模型、選取測(cè)試用例、測(cè)試運(yùn)行、可靠性測(cè)試執(zhí)行、可靠性故障數(shù)據(jù)收集、軟件可靠性評(píng)估與可靠性增長(zhǎng)測(cè)試等。

  軟件可靠性測(cè)試和評(píng)價(jià)工作需要根據(jù)可靠性指標(biāo)體系選取合適的軟件可靠性參數(shù),業(yè)界提出的較常用的軟件可靠性參數(shù)主要包括:估計(jì)潛在的缺陷密度、已發(fā)現(xiàn)的失效密度、已發(fā)現(xiàn)的缺陷密度、平均失效時(shí)間(MTBF)、測(cè)試覆蓋率、防止失效能力、防止不正確操作能力、特定時(shí)間可用性、平均恢復(fù)時(shí)間及可恢復(fù)能力等。

  軟件可靠性測(cè)試和評(píng)估平臺(tái)由軟件可靠性測(cè)試控制臺(tái)和軟件可靠性測(cè)試運(yùn)行支撐環(huán)境組成[6],如圖1所示。

001.jpg

  其中,軟件可靠性測(cè)試控制臺(tái)主要提供軟件可靠性使用模型建模,基于UML順序圖的可靠性測(cè)試用例生成,在根據(jù)測(cè)試用例生成測(cè)試腳本后,由集成的可靠性測(cè)試流程協(xié)同服務(wù)驅(qū)動(dòng)下發(fā)給框架代理執(zhí)行引擎執(zhí)行,在可靠性測(cè)試用例執(zhí)行過(guò)程中,部署在可靠性測(cè)試支撐環(huán)境中的代理會(huì)自動(dòng)對(duì)測(cè)試執(zhí)行結(jié)果進(jìn)行數(shù)據(jù)收集工作。測(cè)試用例執(zhí)行完畢后對(duì)所收集的軟件可靠性數(shù)據(jù)進(jìn)行可靠性評(píng)估,目前該框架支撐5種類型的軟件可靠性評(píng)估模型。另外,測(cè)試控制臺(tái)提供了軟件失效數(shù)據(jù)庫(kù)和可靠性模型參數(shù)庫(kù)的功能。

  軟件可靠性測(cè)試運(yùn)行支撐環(huán)境主要通過(guò)代理(Agent)集合實(shí)現(xiàn)在不同的運(yùn)行平臺(tái)(Windows、UNIX和Linux)對(duì)可靠性測(cè)試用例腳本的執(zhí)行。

  下面針對(duì)主要功能模塊進(jìn)行說(shuō)明。

 ?。?)軟件使用模型建模

  本文平臺(tái)采用基于UML2.0規(guī)范擴(kuò)展的UML順序圖結(jié)合OCL語(yǔ)言來(lái)描述軟件應(yīng)用場(chǎng)景模型,使用警戒條件表示發(fā)生的概率。

  (2)可靠性測(cè)試用例生成模塊

  軟件可靠性測(cè)試用例生成模塊實(shí)現(xiàn)從使用模型自動(dòng)或人工生成測(cè)試用例,其主要功能如下。

  ①可靠性測(cè)試用例自動(dòng)化生成。其主要根據(jù)基于UML順序圖的測(cè)試用例生成技術(shù)[7],由軟件使用場(chǎng)景模型自動(dòng)生成可靠性測(cè)試用例。

 ?、谌斯ど蓽y(cè)試用例。在根據(jù)軟件使用模型自動(dòng)化生成的測(cè)試用例不足時(shí),作為一種補(bǔ)充手段,提供用例設(shè)計(jì)界面輔助測(cè)試人員人工設(shè)計(jì)測(cè)試用例。

 ?。?)可靠性測(cè)試執(zhí)行引擎

  可靠性測(cè)試執(zhí)行引擎主要包括一系列服務(wù)。其中,腳本服務(wù)主要基于測(cè)試工具對(duì)腳本的錄制和回放。時(shí)統(tǒng)服務(wù)主要是為確保在可靠性測(cè)試活動(dòng)中,各節(jié)點(diǎn)所獲取、記錄的測(cè)量數(shù)據(jù)和事件都有嚴(yán)格統(tǒng)一的時(shí)間標(biāo)準(zhǔn),這樣采集的數(shù)據(jù)才具有使用價(jià)值;框架代理執(zhí)行引擎服務(wù)根據(jù)測(cè)試場(chǎng)景動(dòng)態(tài)部署相應(yīng)的代理(Agent),針對(duì)已有的測(cè)試運(yùn)行環(huán)境啟動(dòng)代理的執(zhí)行。測(cè)試流程協(xié)同服務(wù)根據(jù)可靠性測(cè)試流程,在分布式環(huán)境中協(xié)調(diào)和同步各個(gè)測(cè)試用例腳本的執(zhí)行。

 ?。?)軟件可靠性數(shù)據(jù)采集

  對(duì)于基于失效時(shí)間間隔可靠性評(píng)估模型數(shù)據(jù)收集主要包括:故障發(fā)生時(shí)刻、故障間隔時(shí)間、各間隔時(shí)間內(nèi)程序中的殘留錯(cuò)誤數(shù)及故障等級(jí)。

  對(duì)于基于缺陷計(jì)數(shù)可靠性評(píng)估模型需要收集:在每一測(cè)試區(qū)間的故障統(tǒng)計(jì)數(shù)、每個(gè)測(cè)試區(qū)間的完成時(shí)間及故障等級(jí)。

  基于輸入域評(píng)估模型需要收集如下數(shù)據(jù):每個(gè)輸入被選取的概率,輸入集中被隨機(jī)選中的輸入總數(shù),所有被選中的輸入導(dǎo)致程序失效的個(gè)數(shù)及故障等級(jí)。

 ?。?)軟件可靠性評(píng)估

  軟件可靠性評(píng)估模塊主要完成軟件可靠性數(shù)據(jù)選擇、數(shù)據(jù)變換、模型選擇與應(yīng)用、模型結(jié)果的圖形顯示和模型評(píng)估等功能。

2 軟件可靠性評(píng)估和預(yù)測(cè)模塊的設(shè)計(jì)

  軟件可靠性模型的應(yīng)用涉及到模型選擇、參數(shù)估計(jì)、可靠性評(píng)估及預(yù)測(cè)和模型評(píng)價(jià)。實(shí)現(xiàn)時(shí)首先采用MATLAB根據(jù)軟件可靠性模型算法進(jìn)行相關(guān)方程的求解,封裝成相關(guān)的API接口,再編譯成DLL文件供調(diào)用。

  該模塊主要包括以下部分。

 ?。?)模型選擇。可對(duì)當(dāng)前故障數(shù)據(jù)選擇應(yīng)用一個(gè)或多個(gè)可靠性模型。

  (2)參數(shù)估計(jì)。提供最大似然估計(jì)方法(默認(rèn)參數(shù)估計(jì))或最小二乘法兩種參數(shù)估計(jì)方法。

  (3)可靠性評(píng)估及預(yù)測(cè)。利用所選擇的模型和故障數(shù)據(jù)對(duì)軟件未來(lái)的可靠性進(jìn)行預(yù)測(cè)。軟件可靠性模型評(píng)估采用了5類模型,其中,基于失效時(shí)間間隔可靠性評(píng)估模型采用Jelinski-Moranda、Schick-Wolverton和L-V的貝葉斯模型;基于缺陷計(jì)數(shù)的軟件可靠性評(píng)估模型采用Goel-Okumoto的NHPP模型、Schneidewind模型和FC型J-M模型;基于輸入域可靠性評(píng)估模型采用Nelson模型和Brown-Lipow模型;基于錯(cuò)誤植入可靠性評(píng)估采用Mills-Basin模型;基于測(cè)試覆蓋軟件可靠性評(píng)估模型采用NHPP模型[8]。預(yù)測(cè)指標(biāo)如下。

 ?、賂BF預(yù)測(cè)。橫座標(biāo):故障號(hào)(Failure Number),縱座標(biāo):TBF值(Time Between Failures-時(shí)間單位)。

  ②累計(jì)故障數(shù)預(yù)測(cè)。橫座標(biāo):累計(jì)故障間隔時(shí)間(Cumulative Time Between Failures-時(shí)間單位),縱座標(biāo):總的故障數(shù)(Total Failures)。

  ③故障強(qiáng)度預(yù)測(cè)。橫座標(biāo):累計(jì)故障間隔時(shí)間(Cumulative Time Between Failures-時(shí)間單位),縱座標(biāo):每時(shí)間單位故障數(shù)(Failures Per TimeUnit)。

 ?、芸煽啃灶A(yù)測(cè)。橫座標(biāo):累計(jì)故障間隔時(shí)間(Cumulative Time Between Failures-時(shí)間單位),縱座標(biāo):可靠性(Reliability)。

  (4)模型評(píng)價(jià)。模型評(píng)價(jià)為故障數(shù)據(jù)選擇最合適的可靠性模型,主要通過(guò)模型排名(Ranking)方式,即根據(jù)模型的匹配程度,選擇匹配程度最高的模型進(jìn)行可靠性評(píng)估和預(yù)測(cè)。排名指標(biāo)包括:預(yù)測(cè)準(zhǔn)確性(基于PLR),偏移程度(Biasedness,基于U-Plot),走向(Trend,基于Y-Plot),預(yù)測(cè)噪聲(Noisiness of Prediction)[9]。

3 試驗(yàn)及驗(yàn)證

  在某型號(hào)軟件測(cè)評(píng)中,通過(guò)使用本平臺(tái)進(jìn)行測(cè)試,自動(dòng)生成可靠性測(cè)試用例,并通過(guò)測(cè)試運(yùn)行平臺(tái)驅(qū)動(dòng)執(zhí)行后采集到一組軟件故障數(shù)據(jù),數(shù)據(jù)為TBF類型的,如表1所示。

003.jpg

  使用Jelinski-Moranda模型的最小二乘法進(jìn)行計(jì)算,與美軍可靠性評(píng)估軟件SMERFS的計(jì)算結(jié)果進(jìn)行對(duì)比的具體情況如表2所示。

004.jpg

  圖2是采用本平臺(tái)與SMERFS預(yù)測(cè)平均失效前時(shí)間間隔的曲線圖,可看到兩條預(yù)測(cè)曲線非常接近(標(biāo)準(zhǔn)偏差為0.138 9),圖中離散點(diǎn)為原始數(shù)據(jù)。

002.jpg

  本文實(shí)現(xiàn)了軟件可靠性測(cè)試和評(píng)估平臺(tái),并結(jié)合一個(gè)實(shí)例與美國(guó)SMERFS工具預(yù)測(cè)結(jié)果相對(duì)照,證明本平臺(tái)對(duì)開(kāi)展軟件可靠性測(cè)試和評(píng)估工作的有效性和實(shí)用性。本研究成果已被用于某國(guó)家級(jí)軟件質(zhì)量監(jiān)督檢驗(yàn)中心的可靠性測(cè)試工作中,取得了良好的效果。

  參考文獻(xiàn)

  [1] 陳春秀,馬力.軟件可靠性測(cè)試技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(21):4628-4631.

  [2] 劉志方,鐘德明,曾福萍,等.軟件可靠性測(cè)試的理論分析[J].測(cè)控技術(shù),2008,27(10):62-64.

  [3] LYU MICHAELR.軟件可靠性工程手冊(cè)[M].劉喜成,譯.北京:電子工業(yè)出版社,1996.

  [4] MUSA J D. Software reliability engineering: more reliable software, faster development and testing[M]. New York: The McGraw-Hill, 1999.

  [5] 顏炯,王戟,陳火旺.基于模型的軟件測(cè)試綜述[J].計(jì)算機(jī)科學(xué),2004,31(2):184-186.

  [6] 朱敏,李建軍,王莉華,等.分布式系統(tǒng)綜合集成測(cè)試技術(shù)[J].計(jì)算機(jī)工程,2008,34(S1):57-59.

  [7] 李建軍,朱敏,劉曉娟,等.基于UML順序圖測(cè)試用例的生成[J].計(jì)算機(jī)工程,2008,34(21):73-75.

  [8] 袁春如,廖泰安,賀紅衛(wèi).基于測(cè)試覆蓋的嵌入式軟件可靠性評(píng)估[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(9):2198-2200.

  [9] 騰靈靈,邵棟,榮國(guó)平.軟件可靠性模型選擇研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(6):128-130.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。