版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、0C202 Software Testing,4-1,第四講:軟件測(cè)試覆蓋分析,Lian Yu The School of Software and Microelectronics Peking University No.24 Jinyuan RD, Beijing 102600,0C202 Software Testing,4-2,提綱,軟件測(cè)試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語(yǔ)句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(shù)據(jù)流覆蓋 Rapps和Weyuker的標(biāo)準(zhǔn) 、Ntafos的標(biāo)準(zhǔn) 、Ural的標(biāo)準(zhǔn) 、Laski和Kore
2、l的標(biāo)準(zhǔn) 其它覆蓋標(biāo)準(zhǔn),0C202 Software Testing,4-3,軟件測(cè)試覆蓋分析,我們分別學(xué)習(xí)了白盒測(cè)試與黑盒測(cè)試技術(shù)。我們可能會(huì)提出一個(gè)問(wèn)題,就是“測(cè)試執(zhí)行到何時(shí)是足夠的?”我們需要一種方式來(lái)知道測(cè)試已經(jīng)執(zhí)行的程度。 測(cè)試覆蓋是一種可以憑經(jīng)驗(yàn)確定軟件質(zhì)量的方法。 每種測(cè)試覆蓋意味著一種針對(duì)特定種類的程序缺陷的測(cè)試技術(shù)。,0C202 Software Testing,4-4,軟件測(cè)試覆蓋分析(續(xù)),測(cè)試覆蓋分析可以在測(cè)試計(jì)劃階段與測(cè)試執(zhí)行階段進(jìn)行。 在測(cè)試計(jì)劃階段,我們須確定用何種測(cè)試覆蓋分析及相應(yīng)的覆蓋率。覆蓋率通常表示為百分比,但是百分比的意義取決于使用了什么測(cè)試覆蓋分析。
3、在測(cè)試執(zhí)行階段,我們將根據(jù)既定的覆蓋率來(lái)檢查是否進(jìn)行了足夠的測(cè)試。,0C202 Software Testing,4-5,基于測(cè)試覆蓋分析的測(cè)試過(guò)程,0C202 Software Testing,4-6,本章將主要地介紹面向白盒測(cè)試技術(shù)的代碼覆蓋分析,并簡(jiǎn)要地介紹幾種面向黑盒測(cè)試技術(shù)的覆蓋分析。,0C202 Software Testing,4-7,提綱,軟件測(cè)試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語(yǔ)句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(shù)據(jù)流覆蓋 Rapps和Weyuker的標(biāo)準(zhǔn) 、Ntafos的標(biāo)準(zhǔn) 、Ural的標(biāo)準(zhǔn) 、Lask
4、i和Korel的標(biāo)準(zhǔn) 其它覆蓋標(biāo)準(zhǔn),0C202 Software Testing,4-8,代碼覆蓋分析,代碼覆蓋是測(cè)試軟件的一種量度標(biāo)準(zhǔn)。它描述程序的源代碼被測(cè)試了的程度。 代碼覆蓋是一種直接觀測(cè)代碼而進(jìn)行的測(cè)試,因而歸于白盒測(cè)試。 代碼覆蓋技術(shù)是最早的系統(tǒng)性軟件測(cè)試技術(shù)中的成員。 第一篇參考文獻(xiàn)是由Miller and Maloney于1963年發(fā)表于“Communications of the ACM”雜志上。,0C202 Software Testing,4-9,代碼覆蓋分析(續(xù)),基于代碼覆蓋測(cè)試工具(方法)的輸入是一個(gè)程序和一個(gè)覆蓋標(biāo)準(zhǔn);輸出是一組滿足該覆蓋標(biāo)準(zhǔn)路徑有限集,稱作測(cè)試組
5、(Suite)。 基于代碼覆蓋測(cè)試的兩個(gè)主要步驟是 識(shí)別滿足覆蓋標(biāo)準(zhǔn)的一組實(shí)體, 然后選擇一組覆蓋該組實(shí)體的有限路徑。,0C202 Software Testing,4-10,代碼覆蓋分析(續(xù)),有很多種不同的代碼覆蓋標(biāo)準(zhǔn)及量度代碼覆蓋方法,介紹兩種代碼覆蓋類型:控制流覆蓋與數(shù)據(jù)流覆蓋。 控制流覆蓋是選擇一組實(shí)體以滿足覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、多條件覆蓋、條件判定組合覆蓋、修正條件/判定覆蓋及路徑覆蓋;然后選擇一組覆蓋該組實(shí)體的有限路徑。 數(shù)據(jù)流覆蓋是選擇一組滿足變量的定義與引用間的某種關(guān)聯(lián)關(guān)系實(shí)體;然后選擇一組覆蓋該組實(shí)體的有限路徑。,0C202 Software Testin
6、g,4-11,代碼覆蓋分析(續(xù)),無(wú)論是哪種覆蓋類型,它們都遵循如下的測(cè)試過(guò)程: 由被測(cè)程序的源代碼,構(gòu)造程序圖。如基本路徑法的流圖,數(shù)據(jù)流法的定義使用關(guān)聯(lián)圖等。 根據(jù)程序圖,生成測(cè)試用例。如基本路徑法中,先算出環(huán)形復(fù)雜度,再據(jù)此找出基本路徑集,生成測(cè)試用例。 編譯被測(cè)源程序,生成可執(zhí)行代碼(假設(shè)源程序無(wú)語(yǔ)法錯(cuò)誤)。 生成的可執(zhí)行代碼,用測(cè)試用例的輸入條件驅(qū)動(dòng),以執(zhí)行程序測(cè)試。 計(jì)算測(cè)試結(jié)果的實(shí)際覆蓋率,如果達(dá)不到既定覆蓋率,則返回第2步,否則結(jié)束測(cè)試。 對(duì)于測(cè)試結(jié)果,除了進(jìn)行代碼覆蓋分析外,還可以進(jìn)行其他方面的分析,如測(cè)試通過(guò)率,失敗率,可靠性等。,0C202 Software Testin
7、g,4-12,0C202 Software Testing,4-13,提綱,軟件測(cè)試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語(yǔ)句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(shù)據(jù)流覆蓋 Rapps和Weyuker的標(biāo)準(zhǔn) 、Ntafos的標(biāo)準(zhǔn) 、Ural的標(biāo)準(zhǔn) 、Laski和Korel的標(biāo)準(zhǔn) 其它覆蓋標(biāo)準(zhǔn),0C202 Software Testing,4-14,控制流覆蓋,控制流覆蓋是選擇一組實(shí)體以滿足覆蓋標(biāo)準(zhǔn): 語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、多條件覆蓋、條件判定組合覆蓋、修正條件/判定覆蓋及路徑覆蓋;然后選擇一組覆蓋該組實(shí)體的有限路徑。,0C20
8、2 Software Testing,4-15,語(yǔ)句覆蓋,語(yǔ)句覆蓋(StatementCoverage)度量報(bào)告每個(gè)可執(zhí)行語(yǔ)句是否被執(zhí)行,即每行源代碼是否都被執(zhí)行了并且被測(cè)試了。 其含義是選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語(yǔ)句至少執(zhí)行一次。 語(yǔ)句覆蓋亦稱為線覆蓋面(linecoverage)或段覆蓋面(segmentcoverage)。,0C202 Software Testing,4-16,語(yǔ)句覆蓋(續(xù)),要達(dá)到100%覆蓋可能相當(dāng)難的。 也許有的代碼片斷被設(shè)計(jì)用來(lái)處理錯(cuò)誤條件,如果這種錯(cuò)誤不出現(xiàn),這段代碼無(wú)法執(zhí)行也就無(wú)法測(cè)試; 或很少發(fā)生的事件,例如在代碼的一個(gè)片斷接受某一信號(hào),這種情
9、況也給測(cè)試此段代碼造成困難。,0C202 Software Testing,4-17,語(yǔ)句覆蓋(續(xù)),也有可能有的代碼永遠(yuǎn)都不會(huì)被執(zhí)行到,例如以下代碼段:,0C202 Software Testing,4-18,語(yǔ)句覆蓋(續(xù)),這種類型的覆蓋是比較弱的,因?yàn)榧词雇ㄟ^(guò)100%語(yǔ)句覆蓋的程序也許仍然有嚴(yán)重的問(wèn)題,而這些問(wèn)題通過(guò)其他的測(cè)試方法可能被發(fā)現(xiàn)??聪旅娴囊欢未a:,0C202 Software Testing,4-19,語(yǔ)句覆蓋(續(xù)),這是語(yǔ)句覆蓋的一個(gè)嚴(yán)重的缺點(diǎn),因?yàn)镮f語(yǔ)句在程序中普遍存在。 即使如此,對(duì)于一個(gè)任何合理大小軟件開發(fā),首先使用語(yǔ)句覆蓋是可以發(fā)現(xiàn)錯(cuò)誤的。,0C202 Soft
10、ware Testing,4-20,語(yǔ)句覆蓋(續(xù)),語(yǔ)句覆蓋的優(yōu)點(diǎn)是: 它可以直接地被應(yīng)用于目標(biāo)代碼,并且不需要處理源代碼; 缺陷是: 它對(duì)一些控制結(jié)構(gòu)是不敏感的,對(duì)程序執(zhí)行邏輯的覆蓋很低,往往發(fā)現(xiàn)不了判斷中邏輯運(yùn)算符出現(xiàn)的錯(cuò)誤。,0C202 Software Testing,4-21,語(yǔ)句覆蓋(續(xù)),語(yǔ)句覆蓋計(jì)算代碼的每一行作為一個(gè)可能的語(yǔ)句。這是個(gè)好的近似值,但是可能會(huì)有各種各樣的潛在的曲解和濫用,因?yàn)槔碚撋厦總€(gè)記號(hào)(例如“If”)都可以占一行。 每一行安置一個(gè)記號(hào)(這一定不是好的編程樣式), 代碼行數(shù)(LOC)可以是無(wú)謂地加大。同樣,程序員可以將多條語(yǔ)句放在同一行中(很明顯,這也不是一個(gè)
11、好的編程實(shí)踐), 但這樣做法使得所需測(cè)試用例數(shù)量大大地減少,因?yàn)橐恍兄械娜我徽Z(yǔ)句被執(zhí)行,都認(rèn)為此行被執(zhí)行了。,0C202 Software Testing,4-22,判定覆蓋,判定覆蓋(DecisionCoverage)度量報(bào)告在控制結(jié)構(gòu)中(例如if語(yǔ)句和while語(yǔ)句)是否測(cè)試了布爾表達(dá)式取值分別為真和假的情況。 整個(gè)布爾型的表達(dá)式取值是true和false,而不考慮內(nèi)部是否包含了邏輯與(logical-and)或邏輯或(logical-or)操作符。,0C202 Software Testing,4-23,判定覆蓋 (續(xù)),判定覆蓋保證只要程序能跳轉(zhuǎn),它能跳轉(zhuǎn)到所有可能的目的語(yǔ)句。 其含義
12、是:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定至少都獲得一次“真”和“假”,或使得每一個(gè)取“真”分支和取“假”分支至少經(jīng)歷一次。 判定覆蓋亦稱為分支覆蓋、 所有邊覆蓋。,0C202 Software Testing,4-24,判定覆蓋 (續(xù)),判定覆蓋有語(yǔ)句覆蓋的優(yōu)點(diǎn)簡(jiǎn)單性,但是沒有語(yǔ)句覆蓋的問(wèn)題。 缺點(diǎn)是判定覆蓋忽略了在布爾表達(dá)式內(nèi)的分支,這是由短路操作(short-circuit) 符引起的。 考慮以下代碼段:,0C202 Software Testing,4-25,判定覆蓋 (續(xù)),我們已提到判定覆蓋的優(yōu)點(diǎn)是簡(jiǎn)單的但沒有語(yǔ)句覆蓋的問(wèn)題。它是語(yǔ)句覆蓋的超集,比語(yǔ)句句覆蓋要強(qiáng)。 判定覆蓋缺點(diǎn)是它忽略有
13、短路操作符的布爾表達(dá)式的分支。當(dāng)程序中分支的判定是由幾個(gè)條件組合構(gòu)成時(shí),它未必能發(fā)現(xiàn)每個(gè)條件的錯(cuò)誤。,0C202 Software Testing,4-26,條件覆蓋,條件覆蓋(Condition Coverage )報(bào)告每個(gè)布爾型子表達(dá)式的結(jié)果是真或假是否都被執(zhí)行和測(cè)試了。 子表達(dá)式是用輯與(logical-and)運(yùn)算符和邏輯或(logical-or)運(yùn)算符分離開。條件覆蓋檢查每個(gè)評(píng)估點(diǎn)(例如真/假的判定)是否被執(zhí)行和測(cè)試了。 其含義是:構(gòu)造一組測(cè)試用例,使得每一判定語(yǔ)句中每個(gè)子邏輯條件的可能值至少滿足一次。,0C202 Software Testing,4-27,條件覆蓋(續(xù)),考慮以下
14、C+/Java代碼段: 這種情況下判定覆蓋率只能達(dá)到50。然而,如果您用b和c所有可能的取值組合來(lái)運(yùn)行這段代碼,條件覆蓋報(bào)告全部覆蓋,即條件覆蓋率卻能達(dá)到100。,0C202 Software Testing,4-28,條件覆蓋(續(xù)),條件覆蓋與判定覆蓋是相似的,但關(guān)于控制流有更好的敏感性。 但是完全的條件覆蓋并不能保證完全的判定覆蓋。,0C202 Software Testing,4-29,條件判定組合覆蓋,條件判定組合覆蓋(Condition/DecisionCoverage)是條件覆蓋(conditioncoverage)和判定覆蓋(decisioncoverage)的一個(gè)混合。 它有兩
15、者的簡(jiǎn)單性但是沒有兩者的缺點(diǎn)。條件判定組合覆蓋的含義是設(shè)計(jì)足夠的測(cè)試用例,使得判定中每個(gè)布爾型子表達(dá)式條件的所有可能(真/假)至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。,0C202 Software Testing,4-30,條件判定組合覆蓋示例,2組測(cè)試用例的判定組合覆蓋率為100。,0C202 Software Testing,4-31,條件判定組合覆蓋 (續(xù)),但是判定組合覆蓋也存在一定的缺陷。例如,判定條件a & (b|c)中的第一個(gè)運(yùn)算符“&”錯(cuò)寫成運(yùn)算符“|”或第二個(gè)運(yùn)算符“|” ”錯(cuò)寫成運(yùn)算符“&”時(shí),使用表中的2組測(cè)試用例無(wú)法發(fā)現(xiàn)這類錯(cuò)誤。,0C202
16、Software Testing,4-32,條件判定組合覆蓋的缺陷示例,0C202 Software Testing,4-33,多條件覆蓋,多條件覆蓋(MultipleConditionCoverage)報(bào)告每一種可能的布爾型子表達(dá)式的組合是否發(fā)生了。和條件覆蓋一樣,子表達(dá)式出現(xiàn)時(shí)是用輯與(logical-and)運(yùn)算符和邏輯或(logical-or)運(yùn)算符分離開。 它的含義是:生成足夠的測(cè)試用例,使得每個(gè)判定中的條件的各種可能組合都至少出現(xiàn)一次。 和條件覆蓋一樣,多條件覆蓋不包括判定覆蓋。,0C202 Software Testing,4-34,多條件覆蓋 (續(xù)),對(duì)于VisualBasic
17、和Pascal等不含有短路操作符(shortcircuitoperators)的語(yǔ)言,多條件覆蓋實(shí)際上是對(duì)于邏輯表達(dá)式的路徑覆蓋,和路徑覆蓋具有相同的優(yōu)缺點(diǎn)??紤]下列的VisualBasic代碼段: 多條件覆蓋需要4個(gè)測(cè)試用例,a和b分別取值真(T)和假(F)每一個(gè)組合。和路徑覆蓋相同,每增加一個(gè)的邏輯操作符就需要加倍測(cè)試用例的數(shù)量。,0C202 Software Testing,4-35,多條件覆蓋示例,0C202 Software Testing,4-36,多條件覆蓋 (續(xù)),對(duì)于C,C+和Java等具有短路操作符(shortcircuitoperators)的語(yǔ)言,多條件覆蓋的所要求的一
18、些組合測(cè)試執(zhí)行時(shí)無(wú)法達(dá)到。 尋求這樣一個(gè)最小測(cè)試用例集可能是非常冗長(zhǎng)乏味工作,尤其是對(duì)于非常復(fù)雜的布爾型表達(dá)式。,0C202 Software Testing,4-37,多條件覆蓋 (續(xù)),多條件覆蓋所需要的測(cè)試用例的數(shù)目對(duì)于具有相似的復(fù)雜性的條件卻有非常大的不同。 例如,考慮如下兩個(gè)C/C+/Java的條件:,0C202 Software Testing,4-38,多條件覆蓋 (續(xù)),多條件覆蓋具有短路操作例(1)條件,0C202 Software Testing,4-39,多條件覆蓋 (續(xù)),多條件覆蓋具有短路操作例(2)條件,0C202 Software Testing,4-40,多條件
19、覆蓋 (續(xù)),注意, 上述兩個(gè)條件有相同的操作數(shù)和操作符,由于短路操作符起作用,要達(dá)到完全的多條件覆蓋,第一個(gè)需要6個(gè)測(cè)試用例,而第二個(gè)需要11個(gè)測(cè)試用例。,0C202 Software Testing,4-41,修正條件/判定覆蓋,修正條件/判定覆蓋(ModifiedCondition/DecisionCoverage)也被稱為MC/DC和MCDC,最早是由波音公司創(chuàng)建。 當(dāng)前在歐美,MC/DC 是“空運(yùn)系統(tǒng)與設(shè)備認(rèn)證軟件考慮事項(xiàng)” (RCTA/DO-178B)中作為必要的測(cè)試方法。,0C202 Software Testing,4-42,修正條件/判定覆蓋 (續(xù)),它要求生成足夠測(cè)試用例以
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職化妝品技術(shù)(質(zhì)量檢驗(yàn)技術(shù))試題及答案
- 2025年中職第二學(xué)年(建筑工程施工)屋面工程施工試題及答案
- 2025年中職水文與工程地質(zhì)(水文勘察實(shí)操)試題及答案
- 2025年大學(xué)語(yǔ)文(技巧應(yīng)用寫作)試題及答案
- 2025年中職(電氣技術(shù)應(yīng)用)電氣設(shè)備安裝階段測(cè)試題及答案
- 2025年高職第一學(xué)年(電氣自動(dòng)化)專業(yè)基礎(chǔ)綜合測(cè)試卷
- 2025年大學(xué)本科(航海技術(shù))船舶貨運(yùn)組織試題及答案
- 2025年高職市政工程施工技術(shù)(市政施工實(shí)務(wù))試題及答案
- 2025年高職建筑工程技術(shù)(建筑工程測(cè)量)試題及答案
- 2025年中職(航空攝影測(cè)量)航空攝影基礎(chǔ)試題及答案
- 提優(yōu)點(diǎn)7 衍生數(shù)列問(wèn)題
- 2025-2030中國(guó)制藥工業(yè)AGV行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 工程造價(jià)審計(jì)服務(wù)投標(biāo)方案(技術(shù)方案)
- 工程質(zhì)量通病防治手冊(cè)(房建類)
- 采購(gòu)石粉合同協(xié)議
- 駕考試題100道及答案
- 2025濰坊護(hù)理職業(yè)學(xué)院輔導(dǎo)員考試題庫(kù)
- 麻醉科工作總結(jié)
- 彈塑性力學(xué)完整版本
- 小學(xué)生預(yù)防寄生蟲
- 洛必 達(dá)法則課件
評(píng)論
0/150
提交評(píng)論