• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            白盒測(cè)試中的六種覆蓋方法

            摘要:白盒測(cè)試作為測(cè)試人員常用的一種測(cè)試方法,越來(lái)越受到測(cè)試工程師的重視。白盒測(cè)試并不是簡(jiǎn)單的按照代碼設(shè)計(jì)用例,而是需要根據(jù)不同的測(cè)試需求,結(jié)合不同的測(cè)試對(duì)象,使用適合的方法進(jìn)行測(cè)試。因?yàn)閷?duì)于不同復(fù)雜度的代碼邏輯,可以衍生出許多種執(zhí)行路徑,只有適當(dāng)?shù)臏y(cè)試方法,才能幫助我們從代碼的迷霧森林中找到正確的方向。本文介紹六種白盒子測(cè)試方法:語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。

            白盒測(cè)試的概述

            由于邏輯錯(cuò)誤和不正確假設(shè)與一條程序路徑被運(yùn)行的可能性成反比。由于我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行, 而事實(shí)上,它可能在正常的情況下被執(zhí)行。由于代碼中的筆誤是隨機(jī)且無(wú)法杜絕的,因此我們要進(jìn)行白盒測(cè)試。

            白盒測(cè)試又稱結(jié)構(gòu)測(cè)試,透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。

            白盒的測(cè)試用例需要做到:

            ·保證一個(gè)模塊中的所有獨(dú)立路徑至少 被使用一次
            ·對(duì)所有邏輯值均需測(cè)試 true 和 false
            ·在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)
            ·檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性

            白盒測(cè)試的目的:通過(guò)檢查軟件內(nèi)部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測(cè)試;在程序不同地方設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。

            白盒測(cè)試的特點(diǎn):依據(jù)軟件設(shè)計(jì)說(shuō)明書進(jìn)行測(cè)試、對(duì)程序內(nèi)部細(xì)節(jié)的嚴(yán)密檢驗(yàn)、針對(duì)特定條件設(shè)計(jì)測(cè)試用例、對(duì)軟件的邏輯路徑進(jìn)行覆蓋測(cè)試。

            白盒測(cè)試的實(shí)施步驟:

            1.測(cè)試計(jì)劃階段:根據(jù)需求說(shuō)明書,制定測(cè)試進(jìn)度。
            2.測(cè)試設(shè)計(jì)階段:依據(jù)程序設(shè)計(jì)說(shuō)明書,按照一定規(guī)范化的方法進(jìn)行軟件結(jié)構(gòu)劃分和設(shè)計(jì)測(cè)試用例。
            3.測(cè)試執(zhí)行階段:輸入測(cè)試用例,得到測(cè)試結(jié)果。
            4.測(cè)試總結(jié)階段:對(duì)比測(cè)試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯(cuò)誤原因,找到并解決錯(cuò)誤。

            白盒測(cè)試的方法:總體上分為靜態(tài)方法和動(dòng)態(tài)方法兩大類。

            靜態(tài)分析是一種不通過(guò)執(zhí)行程序而進(jìn)行測(cè)試的技術(shù)。靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒(méi)有沖突或者沒(méi)有歧義。

            動(dòng)態(tài)分析的主要特點(diǎn)是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后 , 對(duì)軟件系統(tǒng)行為的分析。動(dòng)態(tài)分析包含了程序在受控的環(huán)境下使用特定的期望結(jié)果進(jìn)行正式的運(yùn)行。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測(cè)試。下面要介紹的六種覆蓋測(cè)試方法屬于動(dòng)態(tài)分析方法。

            白盒測(cè)試的優(yōu)缺點(diǎn)

            1. 優(yōu)點(diǎn)

            ·迫使測(cè)試人員去仔細(xì)思考軟件的實(shí)現(xiàn)
            ·可以檢測(cè)代碼中的每條分支和路徑
            ·揭示隱藏在代碼中的錯(cuò)誤
            ·對(duì)代碼的測(cè)試比較徹底
            ·最優(yōu)化

            2. 缺點(diǎn)

            ·昂貴
            ·無(wú)法檢測(cè)代碼中遺漏的路徑和數(shù)據(jù)敏感性錯(cuò)誤
            ·不驗(yàn)證規(guī)格的正確性

            六種覆蓋方法

            首先為了下文的舉例描述方便,這里先給出一張程序流程圖。(本文以1995年軟件設(shè)計(jì)師考試的一道考試題目為例,圖中紅色字母代表程序執(zhí)行路徑)。

            1、語(yǔ)句覆蓋

            1)主要特點(diǎn):語(yǔ)句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語(yǔ)句覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每條語(yǔ)句至少被執(zhí)行一次。

            2)用例設(shè)計(jì):(如果此時(shí)將A路徑上的語(yǔ)句1—〉T去掉,那么用例如下)

            X
            Y
            路徑
            1
            50
            50
            OBDE
            2
            90
            70
            OBCE

            3)優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無(wú)須細(xì)分每條判定表達(dá)式。

            4)缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語(yǔ)句,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無(wú)法測(cè)試的。在本例中去掉了語(yǔ)句1—〉T去掉,那么就少了一條測(cè)試路徑。在if結(jié)構(gòu)中若源代碼沒(méi)有給出else后面的執(zhí)行分支,那么語(yǔ)句覆蓋測(cè)試就不會(huì)考慮這種情況。但是我們不能排除這種以外的分支不會(huì)被執(zhí)行,而往往這種錯(cuò)誤會(huì)經(jīng)常出現(xiàn)。再如,在Do-While結(jié)構(gòu)中,語(yǔ)句覆蓋執(zhí)行其中某一個(gè)條件分支。那么顯然,語(yǔ)句覆蓋對(duì)于多分支的邏輯運(yùn)算是無(wú)法全面反映的,它只在乎運(yùn)行一次,而不考慮其他情況。

            2、判定覆蓋

            1)主要特點(diǎn):判定覆蓋又稱為分支覆蓋,它要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每個(gè)判定至少有一次為真值,有一次為假值,即:程序中的每個(gè)分支至少執(zhí)行一次。每個(gè)判斷的取真、取假至少執(zhí)行一次。

            2)用例設(shè)計(jì):

            X
            Y
            路徑
            1
            90
            90
            OAE
            2
            50
            50
            OBDE
            3
            90
            70
            OBCE

            3)優(yōu)點(diǎn):判定覆蓋比語(yǔ)句覆蓋要多幾乎一倍的測(cè)試路徑,當(dāng)然也就具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性,無(wú)須細(xì)分每個(gè)判定就可以得到測(cè)試用例。

            4)缺點(diǎn):往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成(如,判定語(yǔ)句中包含AND、OR、CASE),若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。

            3、條件覆蓋

            1)主要特點(diǎn):條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果,即每個(gè)條件至少有一次為真值,有一次為假值。

            2)用例設(shè)計(jì):

            X
            Y
            路徑
            1
            90
            70
            OBC
            2
            40
            OBD

            3)優(yōu)點(diǎn):顯然條件覆蓋比判定覆蓋,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑。

            4)缺點(diǎn):要達(dá)到條件覆蓋,需要足夠多的測(cè)試用例,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個(gè)條件至少有一次為真,而不考慮所有的判定結(jié)果。

            4、判定/條件覆蓋

            1)主要特點(diǎn):設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身所有可能結(jié)果也至少出現(xiàn)一次。

            2)用例設(shè)計(jì):

            X
            Y
            路徑
            1
            90
            90
            OAE
            2
            50
            50
            OBDE
            3
            90
            70
            OBCE
            4
            70
            90
            OBCE

            3)優(yōu)點(diǎn):判定/條件覆蓋滿足判定覆蓋準(zhǔn)則和條件覆蓋準(zhǔn)則,彌補(bǔ)了二者的不足。

            4)缺點(diǎn):判定/條件覆蓋準(zhǔn)則的缺點(diǎn)是未考慮條件的組合情況。

            5、組合覆蓋

            1)主要特點(diǎn):要求設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。

            2)用例設(shè)計(jì):

            X
            Y
            路徑
            1
            90
            90
            OAE
            2
            90
            70
            OBCE
            3
            90
            30
            OBDE
            4
            70
            90
            OBCE
            5
            30
            90
            OBDE
            6
            70
            70
            OBDE
            7
            50
            50
            OBDE

            3)優(yōu)點(diǎn):多重條件覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則。更改的判定/條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次。并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果。

            4)缺點(diǎn):線性地增加了測(cè)試用例的數(shù)量。

            6、路徑覆蓋

            1)主要特點(diǎn):設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。

            2)用例設(shè)計(jì):

            X
            Y
            路徑
            1
            90
            90
            OAE
            2
            50
            50
            OBDE
            3
            90
            70
            OBCE
            4
            70
            90
            OBCE

            3)優(yōu)點(diǎn):這種測(cè)試方法可以對(duì)程序進(jìn)行徹底的測(cè)試,比前面五種的覆蓋面都廣。

            4)缺點(diǎn):由于路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試(包括循環(huán)、條件組合、分支選擇等),那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長(zhǎng)。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如:
            If (!A)B++;
            If (!A)D--;

            這兩個(gè)語(yǔ)句實(shí)際只包括了2條執(zhí)行路徑,即A為真或假時(shí)候?qū)和D的處理,真或假不可能都存在,而路徑覆蓋測(cè)試則認(rèn)為是包含了真與假的4條執(zhí)行路徑。這樣不僅降低了測(cè)試效率,而且大量的測(cè)試結(jié)果的累積,也為排錯(cuò)帶來(lái)麻煩。

            總結(jié)

            白盒測(cè)試是一種被廣泛使用的邏輯測(cè)試方法,是由程序內(nèi)部邏輯驅(qū)動(dòng)的一種單元測(cè)試方法。只有對(duì)程序內(nèi)部十分了解才能進(jìn)行適度有效的白盒測(cè)試。但是貫穿在程序內(nèi)部的邏輯存在著不確定性和無(wú)窮性,尤其對(duì)于大規(guī)模復(fù)雜軟件。因此我們不能窮舉所有的邏輯路徑,即使窮舉也未必會(huì)帶來(lái)好運(yùn)(窮舉不能查出程序邏輯規(guī)則錯(cuò)誤,不能查出數(shù)據(jù)相關(guān)錯(cuò)誤,不能查出程序遺漏的路徑)。

            那么正確使用白盒測(cè)試,就要先從代碼分析入手,根據(jù)不同的代碼邏輯規(guī)則、語(yǔ)句執(zhí)行情況,選用適合的覆蓋方法。任何一個(gè)高效的測(cè)試用例,都是針對(duì)具體測(cè)試場(chǎng)景的。邏輯測(cè)試不是片面的測(cè)試正確的結(jié)果或是測(cè)試錯(cuò)誤的結(jié)果,而是盡可能全面地覆蓋每一個(gè)邏輯路徑。

            posted on 2009-11-29 15:55 abilitytao 閱讀(307) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            97热久久免费频精品99| 久久综合丁香激情久久| 欧美日韩精品久久久久| 久久精品三级视频| 2021国产精品久久精品| 久久久久99精品成人片欧美| 99久久婷婷免费国产综合精品| 久久中文字幕一区二区| 久久毛片一区二区| 久久精品国产精品国产精品污| 亚洲国产综合久久天堂| 精品久久人妻av中文字幕| 看全色黄大色大片免费久久久 | 日韩久久久久久中文人妻| 777米奇久久最新地址| 久久精品中文字幕一区| 99久久99这里只有免费费精品| 精品久久综合1区2区3区激情 | 国产∨亚洲V天堂无码久久久| 精品久久久久中文字| 色婷婷综合久久久久中文| 久久精品中文字幕一区| 久久精品国产精品青草| 久久婷婷五月综合国产尤物app | 久久亚洲国产精品123区| 久久精品夜夜夜夜夜久久| 综合久久精品色| 精品久久久久国产免费 | 性做久久久久久久久老女人| 久久人爽人人爽人人片AV| 亚洲精品美女久久久久99小说| 99久久亚洲综合精品成人| 久久超碰97人人做人人爱| 亚洲色大成网站www久久九| 久久婷婷色香五月综合激情| 久久久久亚洲精品男人的天堂| 国产99久久久国产精免费| 久久99热狠狠色精品一区| 成人国内精品久久久久一区| 久久久久人妻精品一区| 久久久久久夜精品精品免费啦|