亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        軟件覆蓋測(cè)試技術(shù)研究

        2012-05-03 09:13:36尹黨輝于佳偉
        中國(guó)測(cè)試 2012年1期
        關(guān)鍵詞:測(cè)試用例覆蓋率表達(dá)式

        尹黨輝,于佳偉,李 虎

        (總后后勤科學(xué)研究所,北京 100071)

        0 引 言

        覆蓋測(cè)試,也稱(chēng)為邏輯覆蓋測(cè)試,是軟件白盒測(cè)試的主要方法[1-3]。在一個(gè)軟件產(chǎn)品中,如果存在某些從來(lái)沒(méi)有被執(zhí)行過(guò)的代碼,那么這個(gè)軟件的質(zhì)量是不可靠的[4],在從來(lái)沒(méi)有被執(zhí)行過(guò)的代碼中可能存在著使整個(gè)軟件崩潰的BUG而沒(méi)有被發(fā)現(xiàn)[5]。

        覆蓋測(cè)試就是讓軟件的所有代碼都被執(zhí)行過(guò)至少一次,力爭(zhēng)在測(cè)試過(guò)程中發(fā)現(xiàn)那些非常隱秘的BUG,從一定程度上確保軟件的可靠性。

        衡量覆蓋測(cè)試好壞的標(biāo)準(zhǔn)就是覆蓋率,覆蓋率越高,則認(rèn)為測(cè)試所達(dá)到的效果越好。足夠高的覆蓋率可以增強(qiáng)對(duì)被測(cè)軟件的信心[6]。覆蓋率代表測(cè)試過(guò)程中被執(zhí)行的程序?qū)ο蟮陌俜直?,其?jì)算公式為

        覆蓋率=(已執(zhí)行的程序?qū)ο蟮臄?shù)量/程序中可執(zhí)行程序?qū)ο蟮目倲?shù))×100%

        1 軟件覆蓋測(cè)試

        1.1 語(yǔ)句覆蓋

        語(yǔ)句覆蓋(statement coverage,SC)的含義是:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語(yǔ)句至少執(zhí)行一次。語(yǔ)句覆蓋報(bào)告每個(gè)可執(zhí)行語(yǔ)句是否都被執(zhí)行過(guò)。這種測(cè)試準(zhǔn)則的主要優(yōu)點(diǎn)是可以直接被用于對(duì)目標(biāo)代碼進(jìn)行測(cè)試,不要求對(duì)源代碼進(jìn)行處理;語(yǔ)句覆蓋的主要缺點(diǎn)是它對(duì)某些控制機(jī)構(gòu)不敏感。

        可以通過(guò)語(yǔ)句所在文件的行號(hào)來(lái)唯一標(biāo)識(shí)一條語(yǔ)句,語(yǔ)句是以行為單位的可以執(zhí)行代碼。如下面的代碼所示,如果第1行的代碼被執(zhí)行,則認(rèn)為該語(yǔ)句被覆蓋。

        語(yǔ)句覆蓋是衡量一個(gè)測(cè)試所達(dá)到的覆蓋率的最基本也是最簡(jiǎn)單的方法。語(yǔ)句覆蓋率代表測(cè)試過(guò)程中被執(zhí)行的語(yǔ)句在被測(cè)程序中所占的百分比,其計(jì)算公式為

        語(yǔ)句覆蓋率=(至少執(zhí)行了一次的語(yǔ)句總數(shù)/可執(zhí)行的語(yǔ)句總數(shù))×100%

        語(yǔ)句覆蓋是最弱的邏輯覆蓋準(zhǔn)則,即便語(yǔ)句覆蓋率達(dá)到了100%,也不能完全保證被測(cè)程序100%的被覆蓋。還是以上面一行程序?yàn)槔?,程序中如果if語(yǔ)句中的條件表達(dá)式不成立,則“j++”不可能被執(zhí)行,但在語(yǔ)句覆蓋來(lái)看,這一行語(yǔ)句是被覆蓋了的。

        1.2 判定覆蓋

        比語(yǔ)句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋(decision coverage,DC)。判定覆蓋的含義是:設(shè)計(jì)足夠多的測(cè)試用例,使得程序中的每個(gè)判定至少都獲得一次“真值”或“假值”,因此判定覆蓋又稱(chēng)為分支覆蓋。該測(cè)試準(zhǔn)則只報(bào)告控制結(jié)構(gòu)中被測(cè)試的布爾表達(dá)式為真或假。整個(gè)布爾表達(dá)式看作為一個(gè)trueor-false謂詞,不管他是否含有邏輯“and”或邏輯“or”。它的缺點(diǎn)是該測(cè)試值忽略布爾表達(dá)式內(nèi)的分支,特別是當(dāng)布爾表達(dá)式簡(jiǎn)化時(shí)。

        從程序運(yùn)行流程的角度來(lái)看,程序有順序、分支和循環(huán)3種基本流程,從一定意義上說(shuō)循環(huán)也是分支的一種。最典型的分支就是if語(yǔ)句,以下面的程序?yàn)槔?/p>

        由于if語(yǔ)句,使得程序流程產(chǎn)生了兩個(gè)明顯的分支,一支是“j++;”,另一支是“k++;”。

        以上面的程序?yàn)槔?,共有如?個(gè)分支:1→2;3→4;2→5;4→5。判定覆蓋是衡量一個(gè)測(cè)試所達(dá)到的覆蓋率的比較可靠的方法,如果一個(gè)程序的所有分支都被執(zhí)行過(guò)一遍,那么可以認(rèn)為程序中所有的代碼毫無(wú)遺漏的被執(zhí)行過(guò)一遍。判定覆蓋率代表被執(zhí)行的分支在被測(cè)程序的所有分支中所占的百分比,其計(jì)算公式為

        判定覆蓋率=(至少執(zhí)行了一次的分支總數(shù)/可執(zhí)行的分支總數(shù))×100%

        雖然判定覆蓋是覆蓋測(cè)試中比較可靠的方法,但是判定覆蓋的代價(jià)很高,達(dá)到很高的覆蓋率非常困難;不過(guò)分支覆蓋有一個(gè)優(yōu)點(diǎn)是可以實(shí)現(xiàn)對(duì)go_to,switch語(yǔ)句以及函數(shù)調(diào)用等復(fù)雜程序邏輯的覆蓋。

        1.3 條件覆蓋

        在設(shè)計(jì)程序中,一個(gè)判定語(yǔ)句往往是由多個(gè)條件組合而成的復(fù)合判定。這樣,為了更徹底地實(shí)現(xiàn)邏輯覆蓋,可以采用條件覆蓋(condition coverage,CC)的標(biāo)準(zhǔn)。條件覆蓋的含義是:構(gòu)造一組測(cè)試用例,使得每一判定語(yǔ)句中每個(gè)邏輯條件的可能值至少滿足一次。條件覆蓋報(bào)告每個(gè)布爾子表達(dá)式的真假結(jié)果,這些子表達(dá)式是由邏輯and和邏輯or組成的,條件覆蓋測(cè)試相互獨(dú)立的子表達(dá)式。此測(cè)試準(zhǔn)則值類(lèi)似于判定覆蓋,但對(duì)控制流更敏感。然而,完全的條件覆蓋并不保證完全的判定覆蓋。

        1.4 條件判定組合覆蓋

        條件判定組合覆蓋(condition decision coverage,CDC)的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得判定中每個(gè)條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。

        1.5 多條件覆蓋

        多條件覆蓋(multiple condition coverage,MCC)也稱(chēng)條件組合覆蓋,它的含義是:設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件的可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測(cè)試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。當(dāng)一個(gè)程序中判定語(yǔ)句較多時(shí),其條件取值的組合數(shù)目是非常大的。

        1.6 修正條件/判定覆蓋

        修正條件判定覆蓋(modified condition/decision coverage,MCDC)是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運(yùn)輸和裝備系統(tǒng)軟件認(rèn)證標(biāo)準(zhǔn)”,目前在國(guó)外的國(guó)防、航空航天領(lǐng)域應(yīng)用廣泛。這個(gè)覆蓋度量需要足夠的測(cè)試用例來(lái)確定各個(gè)條件能夠影響到包含的判定結(jié)果。它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至少要被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過(guò)邏輯操作符(and、or)連接的bool條件,每個(gè)條件對(duì)于判定的結(jié)果是獨(dú)立的。此測(cè)試準(zhǔn)則要求用足夠的測(cè)試用例,驗(yàn)證每個(gè)可能影響判斷的條件。

        修正條件判定覆蓋可以發(fā)現(xiàn)3類(lèi)錯(cuò)誤:“與”、“或”被誤寫(xiě);一個(gè)變量被誤寫(xiě)為它的否定;一個(gè)表達(dá)式被誤寫(xiě)為它的否定。

        例如,A and(B or C)是一個(gè)判定,A、B、C 均為條件,其全部的條件組合見(jiàn)表1。

        表1 條件組合表1)

        測(cè)試用例對(duì)(1,5),(2,6),(3,7)都可表明條件 A獨(dú)立地影響判定結(jié)果;測(cè)試用例對(duì)(2,4)可表明條件B獨(dú)立地影響判定結(jié)果;測(cè)試用例(3,4)可表明條件C獨(dú)立地影響判定結(jié)果;因此,測(cè)試用例集(1,2,3,4,5)可滿足上述判定的修正的條件判定覆蓋率。

        1.7 路徑覆蓋

        路徑覆蓋(path coverage,PC)報(bào)告函數(shù)中每個(gè)可能的路徑是否走過(guò)。一個(gè)路徑是唯一的一個(gè)分支序列,從函數(shù)入口到退出。由于循環(huán)體引入很大的路徑個(gè)數(shù),此測(cè)試準(zhǔn)則僅考慮有限循環(huán)的可能性。此測(cè)試準(zhǔn)則的大量變體與循環(huán)是有關(guān)的。邊界-內(nèi)部路徑測(cè)試考慮循環(huán)的兩種可能性:零次循環(huán)和多于零次的循環(huán)。對(duì)于do-while循環(huán),兩種可能性是一次循環(huán)和多于一次循環(huán)。

        從以上介紹可看出,這7種覆蓋策略的嚴(yán)格順序如圖1所示[7]。

        圖1 覆蓋策略的嚴(yán)格順序

        2 C++test中覆蓋測(cè)試

        本測(cè)試的測(cè)試環(huán)境是C++test 9.0,加載的是Virtual C++6.0工程,測(cè)試用例由C++test測(cè)試工具自動(dòng)生成。主要驗(yàn)證了C++test對(duì)判定“A and(B or C)”的邏輯覆蓋測(cè)試。

        程序源碼如圖2,覆蓋測(cè)試結(jié)果如圖3。在圖3中,C++test對(duì)語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、修正條件1判定覆蓋、路徑覆蓋進(jìn)行了統(tǒng)計(jì)分析。

        3 結(jié)束語(yǔ)

        在現(xiàn)實(shí)應(yīng)用中,通常一個(gè)工程的源程序都遠(yuǎn)比本文所列舉的源程序復(fù)雜的多,要實(shí)現(xiàn)上面任一個(gè)覆蓋準(zhǔn)則的100%的覆蓋率都是不可行的[8]。通常都用覆蓋測(cè)試工具來(lái)自動(dòng)實(shí)施,即測(cè)試人員只負(fù)責(zé)測(cè)試用例的編寫(xiě)與執(zhí)行,測(cè)試工具自動(dòng)記錄程序的覆蓋執(zhí)行范圍并給出覆蓋率,這就大大降低了測(cè)試人員的勞動(dòng)強(qiáng)度。測(cè)試由于其本身的復(fù)雜性仍然是非常繁瑣的?,F(xiàn)在的一些商品化工具還提供一些案例的自動(dòng)生成,可以進(jìn)一步降低測(cè)試人員的勞動(dòng)強(qiáng)度。

        圖2 程序源碼

        圖3 覆蓋測(cè)試結(jié)果

        [1]Jorgensen P C.軟件測(cè)試[M].2版.韓柯,杜旭濤,譯.北京:機(jī)械工業(yè)出版社,2003.

        [2]鄭人杰.計(jì)算機(jī)軟件測(cè)試技術(shù)[M].北京:清華大學(xué)出版社,1992.

        [3]尹黨輝.嵌入式軟件測(cè)試技術(shù)研究[J].中國(guó)測(cè)試技術(shù),2011(8):74-77.

        [4]朱少民.軟件質(zhì)量保證和管理[M].北京:清華大學(xué)出版社,2007.

        [5]姚礪,束永安,葉澄清.面向?qū)ο筌浖采w量度的研究和軟件測(cè)試工具的實(shí)現(xiàn)[J].計(jì)算機(jī)研究與發(fā)展,2002,39(8):1017-1022.

        [6]黎連生,王華,李淑春.軟件測(cè)試與測(cè)試技術(shù)[M].北京:清華大學(xué)出版社,2009.

        [7]陳麗蓉,熊光澤,羅蕾,等.嵌入式軟件的覆蓋測(cè)試[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(11):8-11.

        [8]柳純錄.軟件評(píng)測(cè)師教程[M].北京:清華大學(xué)出版社,2005.

        猜你喜歡
        測(cè)試用例覆蓋率表達(dá)式
        民政部等16部門(mén):到2025年村級(jí)綜合服務(wù)設(shè)施覆蓋率超80%
        我國(guó)全面實(shí)施種業(yè)振興行動(dòng) 農(nóng)作物良種覆蓋率超過(guò)96%
        基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
        一個(gè)混合核Hilbert型積分不等式及其算子范數(shù)表達(dá)式
        表達(dá)式轉(zhuǎn)換及求值探析
        淺析C語(yǔ)言運(yùn)算符及表達(dá)式的教學(xué)誤區(qū)
        基于混合遺傳算法的回歸測(cè)試用例集最小化研究
        基于噴丸隨機(jī)模型的表面覆蓋率計(jì)算方法
        基于依賴(lài)結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
        基于覆蓋率驅(qū)動(dòng)的高性能DSP指令集驗(yàn)證方法
        白嫩丰满少妇av一区二区| 欧美精品videossex少妇| 国产小受呻吟gv视频在线观看| 国内视频偷拍一区,二区,三区| 色婷婷久久免费网站| 一区二区激情偷拍老牛视频av| 国产一区二区三区视频在线观看 | 久久久久99精品国产片| 偷拍熟女亚洲另类| 亚洲av一区二区网址| 国产精品成人有码在线观看| 成人影院视频在线免费观看| 中文字幕肉感巨大的乳专区| 精品久久亚洲中文无码| 国产欧美日韩综合在线一区二区| 日韩最新av一区二区| 少妇人妻一区二区三飞| 999zyz玖玖资源站永久| 中文字幕av免费专区| 国产精品综合日韩精品第一页| 天堂AV无码AV毛片毛| 国产一区二区三区porn | 欧美亚洲国产精品久久久久| 午夜视频一区二区三区播放| 国产丶欧美丶日本不卡视频| 国产亚洲情侣一区二区无| 亚洲乱码少妇中文字幕| 看大陆男女真人草逼视频| 美女免费视频观看网址| 亚洲av鲁丝一区二区三区黄| 亚洲黄色一级毛片| av成人资源在线观看| 91伦理片视频国产精品久久久| 一本精品99久久精品77| 久久99精品久久久久久久清纯| 久久久久久久久中文字幕| 亚洲三级中文字幕乱码| 日韩av高清在线观看| 日日摸夜夜添狠狠添欧美| 国产真实二区一区在线亚洲| 中国国产不卡视频在线观看 |