![coverageAnalysis.ppt_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/6/16bc2550-69fa-426f-a971-96df595fc4a1/16bc2550-69fa-426f-a971-96df595fc4a11.gif)
![coverageAnalysis.ppt_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/6/16bc2550-69fa-426f-a971-96df595fc4a1/16bc2550-69fa-426f-a971-96df595fc4a12.gif)
![coverageAnalysis.ppt_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/6/16bc2550-69fa-426f-a971-96df595fc4a1/16bc2550-69fa-426f-a971-96df595fc4a13.gif)
![coverageAnalysis.ppt_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/6/16bc2550-69fa-426f-a971-96df595fc4a1/16bc2550-69fa-426f-a971-96df595fc4a14.gif)
![coverageAnalysis.ppt_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/6/16bc2550-69fa-426f-a971-96df595fc4a1/16bc2550-69fa-426f-a971-96df595fc4a15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、0C202 Software Testing,4-1,第四講:軟件測試覆蓋分析,Lian Yu The School of Software and Microelectronics Peking University No.24 Jinyuan RD, Beijing 102600,0C202 Software Testing,4-2,提綱,軟件測試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(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,軟件測試覆蓋分析,我們分別學(xué)習(xí)了白盒測試與黑盒測試技術(shù)。我們可能會提出一個問題,就是“測試執(zhí)行到何時是足夠的?”我們需要一種方式來知道測試已經(jīng)執(zhí)行的程度。 測試覆蓋是一種可以憑經(jīng)驗確定軟件質(zhì)量的方法。 每種測試覆蓋意味著一種針對特定種類的程序缺陷的測試技術(shù)。,0C202 Software Testing,4-4,軟件測試覆蓋分析(續(xù)),測試覆蓋分析可以在測試計劃階段與測試執(zhí)行階段進行。 在測試計劃階段,我們須確定用何種測試覆蓋分析及相應(yīng)的覆蓋率。覆蓋率通常表示為百分比,但是百分比的意義取決于使用了什么測試覆蓋分析。
3、在測試執(zhí)行階段,我們將根據(jù)既定的覆蓋率來檢查是否進行了足夠的測試。,0C202 Software Testing,4-5,基于測試覆蓋分析的測試過程,0C202 Software Testing,4-6,本章將主要地介紹面向白盒測試技術(shù)的代碼覆蓋分析,并簡要地介紹幾種面向黑盒測試技術(shù)的覆蓋分析。,0C202 Software Testing,4-7,提綱,軟件測試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(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,代碼覆蓋分析,代碼覆蓋是測試軟件的一種量度標(biāo)準(zhǔn)。它描述程序的源代碼被測試了的程度。 代碼覆蓋是一種直接觀測代碼而進行的測試,因而歸于白盒測試。 代碼覆蓋技術(shù)是最早的系統(tǒng)性軟件測試技術(shù)中的成員。 第一篇參考文獻是由Miller and Maloney于1963年發(fā)表于“Communications of the ACM”雜志上。,0C202 Software Testing,4-9,代碼覆蓋分析(續(xù)),基于代碼覆蓋測試工具(方法)的輸入是一個程序和一個覆蓋標(biāo)準(zhǔn);輸出是一組滿足該覆蓋標(biāo)準(zhǔn)路徑有限集,稱作測試組
5、(Suite)。 基于代碼覆蓋測試的兩個主要步驟是 識別滿足覆蓋標(biāo)準(zhǔn)的一組實體, 然后選擇一組覆蓋該組實體的有限路徑。,0C202 Software Testing,4-10,代碼覆蓋分析(續(xù)),有很多種不同的代碼覆蓋標(biāo)準(zhǔn)及量度代碼覆蓋方法,介紹兩種代碼覆蓋類型:控制流覆蓋與數(shù)據(jù)流覆蓋。 控制流覆蓋是選擇一組實體以滿足覆蓋標(biāo)準(zhǔn):語句覆蓋、判定覆蓋、條件覆蓋、多條件覆蓋、條件判定組合覆蓋、修正條件/判定覆蓋及路徑覆蓋;然后選擇一組覆蓋該組實體的有限路徑。 數(shù)據(jù)流覆蓋是選擇一組滿足變量的定義與引用間的某種關(guān)聯(lián)關(guān)系實體;然后選擇一組覆蓋該組實體的有限路徑。,0C202 Software Testin
6、g,4-11,代碼覆蓋分析(續(xù)),無論是哪種覆蓋類型,它們都遵循如下的測試過程: 由被測程序的源代碼,構(gòu)造程序圖。如基本路徑法的流圖,數(shù)據(jù)流法的定義使用關(guān)聯(lián)圖等。 根據(jù)程序圖,生成測試用例。如基本路徑法中,先算出環(huán)形復(fù)雜度,再據(jù)此找出基本路徑集,生成測試用例。 編譯被測源程序,生成可執(zhí)行代碼(假設(shè)源程序無語法錯誤)。 生成的可執(zhí)行代碼,用測試用例的輸入條件驅(qū)動,以執(zhí)行程序測試。 計算測試結(jié)果的實際覆蓋率,如果達不到既定覆蓋率,則返回第2步,否則結(jié)束測試。 對于測試結(jié)果,除了進行代碼覆蓋分析外,還可以進行其他方面的分析,如測試通過率,失敗率,可靠性等。,0C202 Software Testin
7、g,4-12,0C202 Software Testing,4-13,提綱,軟件測試覆蓋分析 代碼覆蓋分析 控制流覆蓋 語句覆蓋 、判定覆蓋 、條件覆蓋 、條件判定組合覆蓋 、多條件覆蓋 、修正條件/判定覆蓋 、路徑覆蓋 數(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,控制流覆蓋,控制流覆蓋是選擇一組實體以滿足覆蓋標(biāo)準(zhǔn): 語句覆蓋、判定覆蓋、條件覆蓋、多條件覆蓋、條件判定組合覆蓋、修正條件/判定覆蓋及路徑覆蓋;然后選擇一組覆蓋該組實體的有限路徑。,0C20
8、2 Software Testing,4-15,語句覆蓋,語句覆蓋(StatementCoverage)度量報告每個可執(zhí)行語句是否被執(zhí)行,即每行源代碼是否都被執(zhí)行了并且被測試了。 其含義是選擇足夠多的測試數(shù)據(jù),使被測程序中每條語句至少執(zhí)行一次。 語句覆蓋亦稱為線覆蓋面(linecoverage)或段覆蓋面(segmentcoverage)。,0C202 Software Testing,4-16,語句覆蓋(續(xù)),要達到100%覆蓋可能相當(dāng)難的。 也許有的代碼片斷被設(shè)計用來處理錯誤條件,如果這種錯誤不出現(xiàn),這段代碼無法執(zhí)行也就無法測試; 或很少發(fā)生的事件,例如在代碼的一個片斷接受某一信號,這種情
9、況也給測試此段代碼造成困難。,0C202 Software Testing,4-17,語句覆蓋(續(xù)),也有可能有的代碼永遠都不會被執(zhí)行到,例如以下代碼段:,0C202 Software Testing,4-18,語句覆蓋(續(xù)),這種類型的覆蓋是比較弱的,因為即使通過100%語句覆蓋的程序也許仍然有嚴重的問題,而這些問題通過其他的測試方法可能被發(fā)現(xiàn)??聪旅娴囊欢未a:,0C202 Software Testing,4-19,語句覆蓋(續(xù)),這是語句覆蓋的一個嚴重的缺點,因為If語句在程序中普遍存在。 即使如此,對于一個任何合理大小軟件開發(fā),首先使用語句覆蓋是可以發(fā)現(xiàn)錯誤的。,0C202 Soft
10、ware Testing,4-20,語句覆蓋(續(xù)),語句覆蓋的優(yōu)點是: 它可以直接地被應(yīng)用于目標(biāo)代碼,并且不需要處理源代碼; 缺陷是: 它對一些控制結(jié)構(gòu)是不敏感的,對程序執(zhí)行邏輯的覆蓋很低,往往發(fā)現(xiàn)不了判斷中邏輯運算符出現(xiàn)的錯誤。,0C202 Software Testing,4-21,語句覆蓋(續(xù)),語句覆蓋計算代碼的每一行作為一個可能的語句。這是個好的近似值,但是可能會有各種各樣的潛在的曲解和濫用,因為理論上每個記號(例如“If”)都可以占一行。 每一行安置一個記號(這一定不是好的編程樣式), 代碼行數(shù)(LOC)可以是無謂地加大。同樣,程序員可以將多條語句放在同一行中(很明顯,這也不是一個
11、好的編程實踐), 但這樣做法使得所需測試用例數(shù)量大大地減少,因為一行中的任一語句被執(zhí)行,都認為此行被執(zhí)行了。,0C202 Software Testing,4-22,判定覆蓋,判定覆蓋(DecisionCoverage)度量報告在控制結(jié)構(gòu)中(例如if語句和while語句)是否測試了布爾表達式取值分別為真和假的情況。 整個布爾型的表達式取值是true和false,而不考慮內(nèi)部是否包含了邏輯與(logical-and)或邏輯或(logical-or)操作符。,0C202 Software Testing,4-23,判定覆蓋 (續(xù)),判定覆蓋保證只要程序能跳轉(zhuǎn),它能跳轉(zhuǎn)到所有可能的目的語句。 其含義
12、是:設(shè)計足夠的測試用例,使得每個判定至少都獲得一次“真”和“假”,或使得每一個取“真”分支和取“假”分支至少經(jīng)歷一次。 判定覆蓋亦稱為分支覆蓋、 所有邊覆蓋。,0C202 Software Testing,4-24,判定覆蓋 (續(xù)),判定覆蓋有語句覆蓋的優(yōu)點簡單性,但是沒有語句覆蓋的問題。 缺點是判定覆蓋忽略了在布爾表達式內(nèi)的分支,這是由短路操作(short-circuit) 符引起的。 考慮以下代碼段:,0C202 Software Testing,4-25,判定覆蓋 (續(xù)),我們已提到判定覆蓋的優(yōu)點是簡單的但沒有語句覆蓋的問題。它是語句覆蓋的超集,比語句句覆蓋要強。 判定覆蓋缺點是它忽略有
13、短路操作符的布爾表達式的分支。當(dāng)程序中分支的判定是由幾個條件組合構(gòu)成時,它未必能發(fā)現(xiàn)每個條件的錯誤。,0C202 Software Testing,4-26,條件覆蓋,條件覆蓋(Condition Coverage )報告每個布爾型子表達式的結(jié)果是真或假是否都被執(zhí)行和測試了。 子表達式是用輯與(logical-and)運算符和邏輯或(logical-or)運算符分離開。條件覆蓋檢查每個評估點(例如真/假的判定)是否被執(zhí)行和測試了。 其含義是:構(gòu)造一組測試用例,使得每一判定語句中每個子邏輯條件的可能值至少滿足一次。,0C202 Software Testing,4-27,條件覆蓋(續(xù)),考慮以下
14、C+/Java代碼段: 這種情況下判定覆蓋率只能達到50。然而,如果您用b和c所有可能的取值組合來運行這段代碼,條件覆蓋報告全部覆蓋,即條件覆蓋率卻能達到100。,0C202 Software Testing,4-28,條件覆蓋(續(xù)),條件覆蓋與判定覆蓋是相似的,但關(guān)于控制流有更好的敏感性。 但是完全的條件覆蓋并不能保證完全的判定覆蓋。,0C202 Software Testing,4-29,條件判定組合覆蓋,條件判定組合覆蓋(Condition/DecisionCoverage)是條件覆蓋(conditioncoverage)和判定覆蓋(decisioncoverage)的一個混合。 它有兩
15、者的簡單性但是沒有兩者的缺點。條件判定組合覆蓋的含義是設(shè)計足夠的測試用例,使得判定中每個布爾型子表達式條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。,0C202 Software Testing,4-30,條件判定組合覆蓋示例,2組測試用例的判定組合覆蓋率為100。,0C202 Software Testing,4-31,條件判定組合覆蓋 (續(xù)),但是判定組合覆蓋也存在一定的缺陷。例如,判定條件a & (b|c)中的第一個運算符“&”錯寫成運算符“|”或第二個運算符“|” ”錯寫成運算符“&”時,使用表中的2組測試用例無法發(fā)現(xiàn)這類錯誤。,0C202
16、Software Testing,4-32,條件判定組合覆蓋的缺陷示例,0C202 Software Testing,4-33,多條件覆蓋,多條件覆蓋(MultipleConditionCoverage)報告每一種可能的布爾型子表達式的組合是否發(fā)生了。和條件覆蓋一樣,子表達式出現(xiàn)時是用輯與(logical-and)運算符和邏輯或(logical-or)運算符分離開。 它的含義是:生成足夠的測試用例,使得每個判定中的條件的各種可能組合都至少出現(xiàn)一次。 和條件覆蓋一樣,多條件覆蓋不包括判定覆蓋。,0C202 Software Testing,4-34,多條件覆蓋 (續(xù)),對于VisualBasic
17、和Pascal等不含有短路操作符(shortcircuitoperators)的語言,多條件覆蓋實際上是對于邏輯表達式的路徑覆蓋,和路徑覆蓋具有相同的優(yōu)缺點??紤]下列的VisualBasic代碼段: 多條件覆蓋需要4個測試用例,a和b分別取值真(T)和假(F)每一個組合。和路徑覆蓋相同,每增加一個的邏輯操作符就需要加倍測試用例的數(shù)量。,0C202 Software Testing,4-35,多條件覆蓋示例,0C202 Software Testing,4-36,多條件覆蓋 (續(xù)),對于C,C+和Java等具有短路操作符(shortcircuitoperators)的語言,多條件覆蓋的所要求的一
18、些組合測試執(zhí)行時無法達到。 尋求這樣一個最小測試用例集可能是非常冗長乏味工作,尤其是對于非常復(fù)雜的布爾型表達式。,0C202 Software Testing,4-37,多條件覆蓋 (續(xù)),多條件覆蓋所需要的測試用例的數(shù)目對于具有相似的復(fù)雜性的條件卻有非常大的不同。 例如,考慮如下兩個C/C+/Java的條件:,0C202 Software Testing,4-38,多條件覆蓋 (續(xù)),多條件覆蓋具有短路操作例(1)條件,0C202 Software Testing,4-39,多條件覆蓋 (續(xù)),多條件覆蓋具有短路操作例(2)條件,0C202 Software Testing,4-40,多條件
19、覆蓋 (續(xù)),注意, 上述兩個條件有相同的操作數(shù)和操作符,由于短路操作符起作用,要達到完全的多條件覆蓋,第一個需要6個測試用例,而第二個需要11個測試用例。,0C202 Software Testing,4-41,修正條件/判定覆蓋,修正條件/判定覆蓋(ModifiedCondition/DecisionCoverage)也被稱為MC/DC和MCDC,最早是由波音公司創(chuàng)建。 當(dāng)前在歐美,MC/DC 是“空運系統(tǒng)與設(shè)備認證軟件考慮事項” (RCTA/DO-178B)中作為必要的測試方法。,0C202 Software Testing,4-42,修正條件/判定覆蓋 (續(xù)),它要求生成足夠測試用例以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- SHMT-IN-3-生命科學(xué)試劑-MCE-3565
- 2025年度知識產(chǎn)權(quán)合同變更補充協(xié)議書
- 2025年度員工股份激勵與股權(quán)鎖定協(xié)議
- 二零二五年度荒山承包造林生態(tài)保護合同
- 二零二五年度教育投資銀行擔(dān)保協(xié)議
- 施工現(xiàn)場施工防事故制度
- 父母如何培養(yǎng)孩子的批判性思維與決策能力
- 科技領(lǐng)域安全風(fēng)險評估及保障措施
- DB6528T 074-2024庫爾勒香梨人工授粉技術(shù)規(guī)程
- XX市幼兒園學(xué)生家長安全責(zé)任合同2025
- 人教版一年級下冊數(shù)學(xué)第五單元認識人民幣練習(xí)
- 學(xué)校安全工作計劃及行事歷
- 《GMP基礎(chǔ)知識培訓(xùn)》課件
- 2025屆江蘇省無錫市天一中學(xué)高一上數(shù)學(xué)期末質(zhì)量檢測試題含解析
- 數(shù)學(xué)家華羅庚課件
- 貴州茅臺酒股份有限公司招聘筆試題庫2024
- 《納米技術(shù)簡介》課件
- 血液透析高鉀血癥的護理查房
- 思政課國內(nèi)外研究現(xiàn)狀分析
- 2024年青海省西寧市選調(diào)生考試(公共基礎(chǔ)知識)綜合能力題庫帶答案
- HYT 235-2018 海洋環(huán)境放射性核素監(jiān)測技術(shù)規(guī)程
評論
0/150
提交評論