蒙特卡羅方法在軟件可靠性測試中的應(yīng)用_第1頁
蒙特卡羅方法在軟件可靠性測試中的應(yīng)用_第2頁
蒙特卡羅方法在軟件可靠性測試中的應(yīng)用_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

蒙特卡羅方法在軟件可靠性

測試中的應(yīng)用ApplicationofMonteCarloMethodforSoftwareReliabilityTestingTechnology天水師范學(xué)院數(shù)信學(xué)院(甘肅天水741001)馬海云蘭州交通大學(xué)信息與電氣工程學(xué)院(蘭州730070)張忠林徐曉梅摘要:本文探索了運(yùn)用蒙特卡羅(Monte-carlo)方法進(jìn)行軟件可靠性測試的基本技術(shù),介紹了這一技術(shù)在軟件可靠性測試中的基本過程。通過實(shí)例證明了這種技術(shù)的實(shí)用性和有效性,提高了軟件測試的正確率,縮短了軟件測試的周期。Abstract:ExploringthebasictechnologytouseMonte-Carlomethodtotestsoftwarereliability,introducingthebasicprocessofthistechnologyintestingsoftwarereliability.Throughexampleitprovepracticabilityandvalidityofthisechnology,raisingthecorrectpercentageoftestingsoftware,shorteningtheperiodofsoftwaretesting.關(guān)鍵詞:軟件可靠性測試用例蒙特卡羅方法Keywords:SoftwarereliabilityTestingexampleMonte-carlomethod1引言軟件測試在軟件生存周期中占有重要地位,這不僅因?yàn)闇y試階段占用的時(shí)間、花費(fèi)的人力和成本占軟件開發(fā)的很大比重,而且直接影響著軟件的質(zhì)量,是保證軟件可靠性的重要方法之一,其目的是保證發(fā)現(xiàn)軟件缺陷(錯(cuò)誤)。目前,測試過程自動(dòng)化已經(jīng)成為測試的發(fā)展方向。在對(duì)傳統(tǒng)軟件可靠性測試方法學(xué)習(xí)的基礎(chǔ)上,本文探索出了一種實(shí)用性強(qiáng)的蒙特卡羅(Monte-carlo)測試方法。2Monte-carlo方法基本原理蒙特卡羅(Monte-carlo)方法以隨機(jī)模擬和統(tǒng)計(jì)試驗(yàn)為手段,是一種從隨機(jī)變量的概率分布中,通過隨機(jī)選擇數(shù)字的方法產(chǎn)生一種符合該隨機(jī)變量概率分布特性的隨機(jī)數(shù)值序列,作為輸入變量序列進(jìn)行特定的模擬試驗(yàn)、求解的方法。在應(yīng)用時(shí),要求產(chǎn)生的隨機(jī)數(shù)序列應(yīng)符合該隨機(jī)變量特定的概率分布。而產(chǎn)生各種特定的、不均勻的概率分布的隨機(jī)數(shù)序列,可行的方法是先產(chǎn)生一種均勻分布的隨機(jī)數(shù)序列,然后再設(shè)法轉(zhuǎn)換成特定要求的概率分布的隨機(jī)數(shù)序列,以此作為數(shù)字模擬試驗(yàn)的輸入變量序列進(jìn)行模擬求解。基本步驟如下:建立概率模型,即對(duì)所研究的問題構(gòu)造一個(gè)符合其特點(diǎn)的概率模型(隨機(jī)事件,隨機(jī)變量等),包括確定性問題,須把具體問題變?yōu)楦怕蕟栴},建立概率模型。產(chǎn)生隨機(jī)數(shù)序列,作為系統(tǒng)的抽樣輸入進(jìn)行大量的數(shù)字模擬試驗(yàn),得到大量的模擬試驗(yàn)值。對(duì)模擬試驗(yàn)結(jié)果進(jìn)行統(tǒng)計(jì)處理(計(jì)算頻率、均值等特征值),給出所求問題的解和解的精度的估計(jì)。3軟件可靠性測試過程測試分為3個(gè)過程:設(shè)計(jì)測試用例、測試、測試結(jié)果的分析。(1) 設(shè)計(jì)測試用例:測試用例控制著軟件測試的執(zhí)行過程,它是對(duì)測試大綱中每個(gè)測試項(xiàng)目的進(jìn)一步實(shí)例化。本文基于基本路徑測試方法設(shè)計(jì)測試用例,通過對(duì)所產(chǎn)生隨機(jī)數(shù)的篩選,形成最優(yōu)測試用例集,再用它進(jìn)行統(tǒng)計(jì)實(shí)驗(yàn)。在設(shè)計(jì)測試用例時(shí),對(duì)測試輸入數(shù)據(jù)給出預(yù)期的輸出數(shù)據(jù)結(jié)果,以提供檢驗(yàn)實(shí)測結(jié)果的基準(zhǔn)。(2) 對(duì)被測程序進(jìn)行測試時(shí),要按建立的測試流程進(jìn)行測試,其測試過程為:1) 單元測試:通過對(duì)單元內(nèi)部邏輯結(jié)構(gòu)和語句執(zhí)行過程的分析,利用基本路徑覆蓋設(shè)計(jì)思想,挑選優(yōu)化的測試用例進(jìn)行測試,得出測試數(shù)據(jù)。2) 任務(wù)測試:包括組裝集成測試、確認(rèn)測試、系統(tǒng)測試。(3) 輸出數(shù)據(jù):測試完成后輸出的測試值。(4) 評(píng)判準(zhǔn)則:測試結(jié)果數(shù)據(jù)與預(yù)期數(shù)據(jù)是否相符。(5) 測試結(jié)果的分析:看是否滿足評(píng)判準(zhǔn)則。通過對(duì)以上兩種概念的比較,可以看出兩種概念完全可以進(jìn)行融合,因此,本文提出了將蒙特卡羅方法應(yīng)用到軟件可靠性測試中的技術(shù)。4蒙特卡羅測試方法的測試策略蒙特卡羅測試方法側(cè)重于白盒測試,并能將白盒測試和黑盒測試有效的結(jié)合起來。先選取被測程序,通過對(duì)其內(nèi)部結(jié)構(gòu)的詳盡分析,將它劃分為若干結(jié)構(gòu)清晰、相互獨(dú)立的單元,建立不同的單元程序流程。然后基于對(duì)被測程序整體整合結(jié)構(gòu)的把握建立整合流程。再分別針對(duì)不同的單元程序流程和整合流程,基于基本路徑測試方法生成滿足測試條件的兩類測試用例集。先利用單元測試用例集驅(qū)動(dòng)單元程序運(yùn)行,獲得輸出數(shù)據(jù)后,進(jìn)行評(píng)判。如果測試數(shù)據(jù)與預(yù)期數(shù)據(jù)相符,則說明測試成功,可以停止測試。各單元測試完成后,還需進(jìn)行組裝集成測試和確認(rèn)測試,再用整合測試用例集對(duì)系統(tǒng)進(jìn)行整體測試。在進(jìn)行每一步的測試中,都應(yīng)滿足評(píng)判準(zhǔn)則。5實(shí)例分析5.1最優(yōu)測試用例集的產(chǎn)生用蒙特卡羅方法進(jìn)行軟件可靠性測試過程中,在測試流程建立的情況下,要先產(chǎn)生隨機(jī)抽樣值,即在給定運(yùn)行中各參數(shù)統(tǒng)計(jì)分布規(guī)律的條件下,在計(jì)算機(jī)上產(chǎn)生符合其分布規(guī)律的隨機(jī)數(shù)抽樣值,這個(gè)過程稱為偽隨機(jī)數(shù)的模擬。由于偽隨機(jī)數(shù)的特性會(huì)影響測試用例的覆蓋性,采用產(chǎn)生隨機(jī)數(shù)的另一種方法:類同余法。再對(duì)這些生成的隨機(jī)數(shù)通過程序進(jìn)行簡單的處理,組成初步的滿足測試目標(biāo)隨機(jī)數(shù)集。然后針對(duì)這個(gè)隨機(jī)數(shù)集采用貪心算法、啟發(fā)式算法或整數(shù)規(guī)劃等方法來進(jìn)行精簡,去掉一些冗余的隨機(jī)數(shù),生成最優(yōu)隨機(jī)數(shù)[6-8。它就是滿足評(píng)判準(zhǔn)則條件的測試用例]集的來源。5.2一個(gè)簡單的實(shí)例對(duì)兩個(gè)實(shí)數(shù)進(jìn)行加、減、乘、除的任意一種運(yùn)算,并輸出結(jié)果。在ti.t2中輸入兩個(gè)數(shù),在r中存放這兩個(gè)數(shù)的運(yùn)算結(jié)果,c中存放運(yùn)算符,e中存放結(jié)束標(biāo)志。可以根據(jù)這個(gè)需求,設(shè)計(jì)程序的測試流程圖(簡單模型),如圖1所示。對(duì)流程圖中的前3個(gè)分支節(jié)點(diǎn),需要設(shè)計(jì)足夠的測試用例測試每個(gè)分支節(jié)點(diǎn)的每條分支以及這些分支的組合。第1個(gè)分支節(jié)點(diǎn),可取『10.01、t2=xyz和『10.01、t2=23覆蓋它的兩個(gè)分支。第2個(gè)分支節(jié)點(diǎn),可取非法運(yùn)算符,覆蓋一個(gè)分支。第3個(gè)分支節(jié)點(diǎn),執(zhí)行“/”運(yùn)算,可取『10.02、t2=0和『10.03、t2=24覆蓋它的兩個(gè)分支。第4個(gè)分支節(jié)點(diǎn)形成了循環(huán),實(shí)際對(duì)循環(huán)執(zhí)行路徑覆蓋時(shí),通常只驗(yàn)證一次循環(huán)體,其中第一次應(yīng)先驗(yàn)證“/”運(yùn)算,以后的測試直接轉(zhuǎn)入“+”、"-”、“x”運(yùn)算的測試。測試完后,輸入結(jié)束標(biāo)志e="end”退出本次測試,然后按照評(píng)判準(zhǔn)則對(duì)測試結(jié)果進(jìn)行評(píng)判。根據(jù)測試流程圖設(shè)計(jì)測試用例,如表1所示。??1 Au^iumicJoumulKledrojitcPLibliShingIlouse.Ailrightsreserved.Iitl[4期06年第中[國儀器儀表結(jié)束結(jié)束6結(jié)論本文給出了一種如何利用蒙特卡羅方法進(jìn)行軟件可靠性測試的新嘗試。該方法提出了要對(duì)被測程序分別建立兩類不同的測試流程:單元程序流程和整合流程,這樣可以降低測試的復(fù)雜度,加速了測試用例的生成,解決了簡化測試用例集難度的問題。然后基于基本路徑測試方法生成兩類不同的測試用例集,再用它們對(duì)被測程序進(jìn)行測試。實(shí)踐證明,這種測試方法加速了軟件測試的進(jìn)程,縮短了測試的周期,是一種行之有效的軟件測試方法。軟件測試是一項(xiàng)復(fù)雜的任務(wù),是一門綜合的學(xué)科,需要不斷地進(jìn)行探索。該文提出的這種測試方法在這一領(lǐng)域中有所創(chuàng)新,達(dá)到了最大限度提高測試效率,降低軟件測試成本的目的。但隨著其應(yīng)用領(lǐng)域的拓展和新興技術(shù)的顯現(xiàn),仍然需要不斷的發(fā)展。參考文獻(xiàn)1周蘇,陳敏玲,陳根才.軟件工程及其應(yīng)用.科學(xué)技,1992234?236.術(shù)出版社:2 . . ,1985徐鐘濟(jì)蒙特卡羅方法上海科學(xué)技術(shù)出版社 :21?25.3賀平.軟件測試技術(shù).機(jī)械工業(yè)出版社,2004:239?242.4曾建潮.軟件工程.武漢理工大學(xué)出版社,2003:182圖1測試流程圖輸入數(shù)據(jù)運(yùn)算符T結(jié)束標(biāo)志預(yù)期發(fā)生的概率預(yù)測結(jié)果t]=10.01t2=xyz表/:測試月/J例1/8輸入非法數(shù)『10.01t2=23c="nc"/1/8輸入非法運(yùn)算符t|=10.02t2=0c="/"/1/8除數(shù)不能為0『10.03t2=24c="/"e="notend"1/80.4179…t1=10.03t2=24c="+"e="notend"1/824.03t1=10.03t2=24c="-"e="notend"1/8-13.97『10.03t2=24c="x"e="notend"1/8240.72//e="end"1/8結(jié)束

?183.5. .陸銀根用類同余法產(chǎn)生隨機(jī)數(shù)及其檢驗(yàn)數(shù)理統(tǒng)計(jì)與管理.2002,21(6)ChenTY,LauMF.Anewheuristicfortestsuitereduction.InformationandSoftwareTechnology.1998,40(5/6):347?354.ChenTY,LauMF.Asimulationstudyonsomeheuristicsfortestsuitereduction.InformationandSoftwareTechnology,1998,40(13):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論