版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
教學(xué)重點:
教學(xué)難點:
教學(xué)方法:多媒體
教學(xué)課時:6課時白盒測試的覆蓋測試法和路徑測試法白盒測試案例應(yīng)用白盒測試什么是白盒測試白盒測試的常用方法白盒測試案例運用一、什么是白盒測試
1、白盒測試的定義白盒測試(White-boxTesting)也稱作結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是知道產(chǎn)品的內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行。按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯覆蓋、基本路徑測試等,主要用于軟件驗證。一、什么是白盒測試
2、為什么不采用窮舉路徑測試法窮舉路徑測試法無法檢查出程序本身是否違反了設(shè)計規(guī)范,即程序是否是一個錯誤的程序。窮舉路徑測試不能查出程序因為遺漏路徑而出錯。窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤。一、什么是白盒測試
3、白盒測試方法遵循的原則確保一個模塊中的所有獨立路徑至少被測試一次。所有邏輯值均需測試真(true)和假(false)兩種情況。檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu),保證其結(jié)構(gòu)的有效性。在取值上、下邊界即可操作范圍內(nèi)運行所有循環(huán)。一、什么是白盒測試
4、控制流圖白盒測試是針對軟件產(chǎn)品內(nèi)部邏輯結(jié)構(gòu)進行測試的,測試人員必須對測試中的軟件有深入的理解,包括其內(nèi)部結(jié)構(gòu)、各單元部分及之間的內(nèi)在聯(lián)系,還有程序運行原理等等。因而這是一項龐大并且復(fù)雜的工作。為了更加突出程序的內(nèi)部結(jié)構(gòu),便于測試人員理解源代碼,可以對程序流程圖進行簡化,生成控制流圖(ControlFlowGraph)。簡化后的控制流圖是由節(jié)點和控制邊組成的。一、什么是白盒測試
4、控制流圖控制流圖的特點:具有唯一入口節(jié)點,即源節(jié)點,表示程序段的開始語句;具有唯一出口節(jié)點,即匯節(jié)點,表示程序段的結(jié)束語句;節(jié)點由帶有標號的圓圈表示,表示一個或多個無分支的源程序語句;控制邊由帶箭頭的直線或弧表示,代表控制流的方向。常見的控制流圖如圖3-1所示。包含條件的節(jié)點被稱為判斷節(jié)點(也稱謂詞結(jié)點),由判斷節(jié)點發(fā)出的邊必須終止于某一個節(jié)點。由邊和結(jié)點所限定的范圍稱為區(qū)域。圖3-1常見的控制流圖一、什么是白盒測試4、控制流圖將一個典型的程序流程圖轉(zhuǎn)換成控制流圖一、什么是白盒測試4、控制流圖圖3-2控制流圖示例對于復(fù)合條件,可將其分解為多個單個條件,并映射成控制流圖。一、什么是白盒測試4、控制流圖控制流圖的矩陣表示形式,其維數(shù)等于流圖的結(jié)點數(shù),矩陣元素對應(yīng)于結(jié)點的邊。若矩陣記為M,則M(4,1)=“d”。一、什么是白盒測試5、圖矩陣流圖對應(yīng)的矩陣圖結(jié)點12341a2b3c4d二、白盒測試的常用方法1、覆蓋率測試白盒測試技術(shù)的常見方法之一就是覆蓋測試,它是利用程序的邏輯結(jié)構(gòu)設(shè)計相應(yīng)的測試用例。測試人員要深入了解被測程序的邏輯結(jié)構(gòu)特點,完全掌握源代碼的流程,才能設(shè)計出恰當(dāng)?shù)挠美?。根?jù)不同的測試要求,覆蓋測試可以分為語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋和路徑覆蓋。二、白盒測試的常用方法1、覆蓋率測試下面是一段簡單的C語言程序,作為公共程序段來說明五種覆蓋測試的各自特點。程序3-1:1 If(A>1&&B==0)then2 X=X/A3 If(A>2||X>1)then4 X=X+1邏輯運算符“&&”表示“與”的關(guān)系,邏輯運算符“||”表示“或”的關(guān)系。其程序控制流圖如圖3-3所示。二、白盒測試的常用方法1、覆蓋率測試圖3-3示例程序流程圖及流圖二、白盒測試的常用方法2、語句覆蓋語句覆蓋(StatementCoverage)是指設(shè)計若干個測試用例,程序運行時每個可執(zhí)行語句至少被執(zhí)行一次。在保證完成要求的情況下,測試用例的數(shù)目越少越好。以下是針對公共程序段設(shè)計的測試用例:測試用例A,B,X(A>1)and(B=0)(A=2)or(X>1)執(zhí)行路徑TestCase12,0,3TrueTrueace(BCEF)程序按路徑a,c,e(流圖上的路徑BCEF或1-2-3-4-5)順序執(zhí)行,程序中的4個語句都被執(zhí)行一次,符合語句覆蓋的要求。二、白盒測試的常用方法2、語句覆蓋從表面上看,語句覆蓋用例測試了程序中的每一個語句行,好像對程序覆蓋得很全面,但實際上語句覆蓋測試是最弱的邏輯覆蓋方法。例如,第一個判斷的邏輯運算符“&&”錯誤寫成“||”,或者第二個判斷的邏輯運算符“||”錯誤地寫成“&&”,這時如果仍采用TestCase1測試用例則程序仍按流程圖上的路徑ace執(zhí)行;當(dāng)?shù)诙€條件語句中X>1誤寫成X>0時,上述的測試用例也不能發(fā)現(xiàn)這一錯誤。根據(jù)上述分析可知,語句覆蓋測試只是表面上的覆蓋程序流程,沒有針對源程序各個語句間的內(nèi)在關(guān)系,設(shè)計更為細致的測試用例。二、白盒測試的常用方法3、判斷覆蓋判斷覆蓋(BranchCoverage)是指設(shè)計若干個測試用例,執(zhí)行被測試程序時,程序中每個判斷條件的真值分支和假值分支至少被執(zhí)行一遍。在保證完成要求的情況下,測試用例的數(shù)目越少越好。判斷覆蓋又稱為分支覆蓋。對上述示例程序段,設(shè)計兩個測試用例,使它們能通過路徑ace和abd或通過路徑acd及ade,即可達到“判定覆蓋”的標準。二、白盒測試的常用方法3、判斷覆蓋測試用例A,B,X(A>1)and(B=0)(A=2)or(X>1)執(zhí)行路徑TestCase12,0,3TrueTrueaceTestCase21,0,1FalseFalseabd采用這一組測試用例,公共程序段的4個判斷分支b,c,d,e都被覆蓋到了。二、白盒測試的常用方法3、判斷覆蓋測試用例A,B,X(A>1)and(B=0)(A=2)or(X>1)執(zhí)行路徑TestCase33,0,1TrueFalseacdTestCase42,1,3FalseTrueabe采用這一組測試用例,公共程序段的4個判斷分支b,c,d,e也都被覆蓋到了。需要注意的是,上述兩組測試用例在滿足判定覆蓋的同時,還完成了語句覆蓋,因此判定覆蓋要比語句覆蓋更強一些。但是,此時如果程序段中的第二個判定條件X>1誤寫成X<1,執(zhí)行上述測試用例,原路徑abe執(zhí)行而不影響結(jié)果。二、白盒測試的常用方法4、條件覆蓋在實際程序代碼中,一個判定中通常都包含了若干個條件,如上述示例程序段,判定(A>1)and(B=0)包含了兩個條件(A>1)和(B=0),此時,一個更強的覆蓋標準是條件覆蓋。條件覆蓋(ConditionCoverage)是指設(shè)計若干個測試用例,執(zhí)行被測試程序時,程序中每個判斷條件中的每個判斷式的真值和假值至少被執(zhí)行一遍。二、白盒測試的常用方法4、條件覆蓋因此,在第一個判定(A>1)AND(B=0)中應(yīng)考慮到各種條件取值的情況:A>1為true,記為T1;A>1為false,記為-T1;B=0為true,記為T2;B=0為false,記為-T2;同樣,對于第二個判定(A=2)OR(X>1)應(yīng)考慮到:A=2為true,記為T3;A=2為false,記為-T3;X>1為true,記為T4;X>1為false,記為-t4;二、白盒測試的常用方法4、條件覆蓋這兩個測試用例不但覆蓋了4個條件的全部8種情況,而且將兩個判定的4個分支b、c、d、e也同時覆蓋了,即同時達到了條件覆蓋和判定覆蓋。測試用例A,B,X執(zhí)行路徑覆蓋條件TestCase12,0,3aceT1,T2,T3,T4TestCase51,1,1abd-T1,-T2,-T3,-T4二、白盒測試的常用方法4、條件覆蓋但是并不可以說判斷覆蓋是條件覆蓋的子集。上表中雖然覆蓋了4個內(nèi)部判斷式的8種真假值情況。但是這組測試用例的執(zhí)行路徑是abe,僅是覆蓋了判斷條件的4個真假分支中的2個。所以,需要設(shè)計一種能同時滿足判斷覆蓋和條件覆蓋的覆蓋測試方法,即判斷/條件覆蓋測試。測試用例A,B,X執(zhí)行路徑覆蓋條件TestCase61,0,3abe-T1,T2,-T3,T4TestCase41,1,1abeT1,-T2,T3,-T4二、白盒測試的常用方法5、判定/條件覆蓋判斷/條件覆蓋是指設(shè)計若干個測試用例,執(zhí)行被測試程序時,程序中每個判斷條件的真假值分支至少被執(zhí)行一遍,并且每個判斷條件的內(nèi)部判斷式的真假值分支也要被執(zhí)行一遍。上表雖然滿足了判斷覆蓋和條件覆蓋,但是沒有對每個判斷條件的內(nèi)部判斷式的所有真假值組合進行測試。條件組合判斷是必要的,因為條件判斷語句中的“與”和“或”,即“&&”和“||”,會使內(nèi)部判斷式之間產(chǎn)生抑制作用。例如,C=A&&B中,如果A為假值,那么C就為假值,測試程序就不檢測B了,B的正確與否就無法測試了。同樣,C=A||B中,如果A為真值,那么C就為真值,測試程序也不檢測B了,B的正確與否也就無法測試了。測試用例A,B,X執(zhí)行路徑覆蓋條件(A>1)and(B=0)(A=2)or(X>1)TestCase12,0,3ace-T1,T2,-T3,T4TrueTrueTestCase51,1,1abdT1,-T2,T3,-T4FalseFalse二、白盒測試的常用方法6、組合覆蓋條件組合覆蓋是指設(shè)計若干個測試用例,執(zhí)行被測試程序時,程序中每個判斷條件的的內(nèi)部判斷式的各種真假組合可能都至少被執(zhí)行一遍。可見,滿足條件組合覆蓋的測試用例組一定滿足判斷覆蓋、條件覆蓋和判斷/條件覆蓋。在上述示例程序段中,每個判定各包含有兩個條件,這兩個條件在判定中有8種可能的組合:A>1,B=0,記為T1,T2; A>1,B<>0,記為T1,-T2;A<=1,B=0,記為-T1,T2;A<=1,B<>0,記為-T1,-T2;A=2,X>1,記為T3,T4; A=2,X<=1,記為T3,-T4;A<>2,X>1,記為-T3,T4;A<>2,X<=1,記為-T3,-T4;二、白盒測試的常用方法6、組合覆蓋上述測試用例雖然同時覆蓋了全部條件組合的4個分支,但是卻僅覆蓋了3條路徑,漏掉了路徑acd。測試用例A,B,X執(zhí)行路徑覆蓋條件覆蓋組合號TestCase12,0,3aceT1,T2,T3,T41,5TestCase42,1,1abeT1,-T2,T3,-T42,6TestCase51,1,1abd-T1,-T2,-T3,-T44,8TestCase61,0,3abe-T1,T2,-T3,T43,7二、白盒測試的常用方法7、路徑覆蓋路徑覆蓋(PathCoverage)要求設(shè)計若干測試用例,執(zhí)行被測試程序時,能夠覆蓋程序中所有的可能路徑。從流程圖和流圖中都可以看出,本例有4條可能的路徑。路徑1:ace 記為L1路徑2:abd 記為L2路徑3:abe 記為L3路徑4:acd 記為L4二、白盒測試的常用方法7、路徑覆蓋實際問題中,一個不太復(fù)雜的程序,其路徑都是一個龐大的數(shù)字,要在測試中覆蓋這樣多的路徑是無法實現(xiàn)的。所以,路徑覆蓋測試是相對的,要盡可能把路徑數(shù)壓縮到一個可承受范圍。當(dāng)然,即便對某個簡短的程序段做到了路徑覆蓋測試,也不能保證源代碼不存在其他軟件問題了。其他的軟件測試手段也必要的,它們之間是相輔相成的。沒有一個測試方法能夠找盡所有軟件缺陷,只能說是盡可能多地查找軟件缺陷。測試用例A,B,X執(zhí)行路徑TestCase12,0,3ace(L1)TestCase21,0,1abd(L2)TestCase32,1,1abe(L3)TestCase43,0,3acd(L4)二、白盒測試的常用方法8、基本路徑測試方法從上幾節(jié)中可知,對于一個較為復(fù)雜的程序要做到完全的路徑覆蓋測試是不可能實現(xiàn)的。既然路徑覆蓋測試無法達到,那么可以對某個程序的所有獨立路徑進行測試,也就是說檢驗了程序的每一條語句,從而達到語句覆蓋,這種測試方法就是獨立路徑測試方法。某一程序的獨立路徑是指從入口到程序出口的多次執(zhí)行中,每次至少有一個語句集(包括運算、賦值、輸入/輸出或判斷)是新的和未被重復(fù)的。從控制流圖來看,一條獨立路徑是至少包含有一條在其它獨立路徑中從未有過的邊的路徑。路徑可以用控制流圖中的節(jié)點序列來表示。二、白盒測試的常用方法8、基本路徑測試方法獨立路徑測試的步驟包括4個方面:畫出控制流圖求出程序環(huán)形復(fù)雜度導(dǎo)出測試用例(TestCase)設(shè)計測試用例下面通過一個C語言程序?qū)嵗齺砭唧w說明獨立路徑測試的設(shè)計流程。二、白盒測試的常用方法8、基本路徑測試方法voidsort(intirecordnum,intitype){intx=0;inty=0;while(irecordnum-->0){if(itype==0)break;else if(itype==1) x=x+10; else y=y+20;}}①②③④⑤⑥⑦⑧⑨⑩⑾⑿⒀⒁二、白盒測試的常用方法8、基本路徑測試方法第一步:畫出控制流圖:圖中每一個圓稱做流圖的結(jié)點,代表一條或多條語句。流圖中的箭頭稱作邊或連接,代表控制流。二、白盒測試的常用方法8、基本路徑測試方法第二步:求出程序環(huán)形復(fù)雜度根據(jù)程序環(huán)形復(fù)雜度的計算公式,求出程序路徑集合中的獨立路徑數(shù)目。公式1:V(G)=10-8+2,其中10是控制流圖G中邊的數(shù)量,8是控制流圖中節(jié)點的數(shù)目。公式2:V(G)=3+1,其中3是控制流圖G中判斷節(jié)點的數(shù)目。公式3:V(G)=4,其中4是控制流圖G中區(qū)域的數(shù)目。因此,控制流圖G的環(huán)形復(fù)雜度是4。就是說至少需要4條獨立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語句的測試用例。二、白盒測試的常用方法8、基本路徑測試方法第三步:導(dǎo)出測試用例(TestCase)可得出程序的基本路徑集中有4條獨立路徑:路徑1:4->14路徑2:4->6->7->14路徑3:4->6->9->10->13->4->14路徑4:4->6->9->12->13->4->14二、白盒測試的常用方法8、基本路徑測試方法第四步:設(shè)計測試用例(TestCase)根據(jù)第三步中的獨立路徑,設(shè)計測試用例的輸入數(shù)據(jù)和預(yù)期輸出。測試用例輸入數(shù)據(jù)預(yù)期輸出TestCase1Irecordnum=0Itype=0x=0y=0TestCase2Irecordnum=1Itype=0x=0y=0TestCase3Irecordnum=1Itype=1x=10y=0TestCase4Irecordnum=1Itype=2x=0y=20例如:程序3-3:
1 if(aorb) 2 then3 procedurex4 else5
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年蘇州托普信息職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025年中圖版九年級物理下冊月考試卷含答案
- 2025年度有機大米種植技術(shù)培訓(xùn)及合作合同3篇
- 2024年股權(quán)轉(zhuǎn)讓個人協(xié)商協(xié)議版B版
- 2025年度物業(yè)企業(yè)保密協(xié)議(客戶投訴處理流程)3篇
- 二零二五年度裝配式建筑裝修施工合同2篇
- 2024施工合同協(xié)議書(含工程質(zhì)量保證)
- 2025年新科版必修2語文上冊階段測試試卷含答案
- 2025年冀教新版高三生物下冊階段測試試卷含答案
- 二零二五年度股權(quán)激勵計劃股權(quán)信息保密與保密合同3篇
- 員工食品安全培訓(xùn)內(nèi)容
- 矩形磚砌渠道施工方案
- 大數(shù)據(jù)與人工智能ppt
- 中醫(yī)科特色診療規(guī)范
- 建筑工程一切險條款版
- PEP小學(xué)六年級英語上冊選詞填空專題訓(xùn)練
- 古建筑修繕項目施工規(guī)程(試行)
- GA 844-2018防砸透明材料
- 化學(xué)元素周期表記憶與讀音 元素周期表口訣順口溜
- 非人力資源經(jīng)理的人力資源管理培訓(xùn)(新版)課件
- 鉬氧化物還原過程中的物相轉(zhuǎn)變規(guī)律及其動力學(xué)機理研究
評論
0/150
提交評論