白盒測試控制結(jié)構(gòu)的變種_第1頁
白盒測試控制結(jié)構(gòu)的變種_第2頁
白盒測試控制結(jié)構(gòu)的變種_第3頁
白盒測試控制結(jié)構(gòu)的變種_第4頁
白盒測試控制結(jié)構(gòu)的變種_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

白盒2白盒測白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,是一種測試用例設(shè)計 應(yīng)用白盒法時,手頭必須有程序的規(guī)格說明以及程 白盒測優(yōu)對代碼的測試比較徹缺昂測試覆蓋標(biāo)5測試覆蓋標(biāo)6測試覆蓋標(biāo)假使測試程序?qū)γ恳粭l路徑進(jìn)試需1毫秒,假定一天工作24小時,一年工作365天,那么要想所有路徑測試完,需3170年 窮舉路徑測試不可能查出程序因為遺漏路徑而出錯窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤7測試覆蓋標(biāo)量化指標(biāo)的依據(jù),測試覆蓋率越高效果越好8測試覆蓋標(biāo)語句覆蓋SC(Statement它是最弱的邏輯覆蓋,效果有限,必須與其它方法交互使用 判定覆蓋(也稱為分支覆蓋)DC(Decisioncoverage)次9測試覆蓋標(biāo)條件覆蓋CC(Condition判定/條件覆蓋CDC(Condition/Decision測試覆蓋標(biāo)條件組合覆蓋MCC(MultipleCondition路徑覆設(shè)計足夠多的測試用例,要求覆蓋程序中所有可能的路徑測試覆蓋標(biāo)概語句覆判定覆蓋(分支覆蓋條件覆判定/條件覆修正條件判定覆條件組合覆綜合舉 白盒測試的主要方語句判定覆蓋(也稱為分支覆蓋條件判定/條件覆條件組合路徑。這是最強的覆蓋準(zhǔn)則。但在路徑數(shù)目很大時,真正做 是 的,必須把覆蓋路徑數(shù)目壓縮到一定限度 語句覆如,例PROCEDUREM(VARA,B,X:REAL);IF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR THEN 語句覆 語句覆的錯誤,即它并不是一種充分的檢驗方法PROCEDUREM(VARA,B,X:REAL);IF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR THENEND.

例voidDoWork(intx,inty,int{int }if((x=}

//語句塊 語句覆為了滿足語句覆蓋率,只要設(shè)計一個測試就可把三個執(zhí)行語句塊中的語句覆蓋x=4、y=5、程序執(zhí)行的路徑是:abdvoidDoWork(intx,inty,int{int j=sqrt(k);if((x=

a b執(zhí)行語句塊執(zhí)行語句塊e(x= 執(zhí)行語句塊執(zhí)行語句塊}

執(zhí)行語句塊執(zhí)行語句塊語句覆voidDoWork(intx,inty,int{int j=sqrt(k);}if((x=

分支覆 分支覆①A=3,B=0,X=1(沿路徑acd執(zhí)行②A=2,B=1,X=3(沿路徑abe執(zhí)行

分支覆

A=3,B=0,X=1沿路徑acd執(zhí)行)A=2,B=1,X=3沿路徑abe執(zhí)行 分支覆針對語句覆蓋中不能檢測的錯,在分支覆蓋中①A=3,B=0,X=1(沿路徑acd執(zhí)行②A=2,B=1,X=3(沿路徑abe執(zhí)行) 所以,“分支覆蓋”還很不夠 分支覆對例2,如設(shè)計兩個測試用例則可x=4、y=5、z=5(沿路徑abd執(zhí)行x=2、y=5、z=5(沿路徑ace執(zhí)行

a執(zhí)行語句塊執(zhí)行語句塊(x==4)||(y>5)

執(zhí)行語句塊執(zhí)行語句塊 分支覆6627153849條件覆一個判定中往往包含若干個條件,如例1,判定(A>1)AND(B=0)包含了兩個條件A>1以及B=0,所以可引進(jìn)一個 條件覆例1的程序有四個條件A>1、B=0、A=2、A>1、A≤1、B=0、等各種結(jié)果出現(xiàn),以及在bA=2、A≠2、X>1、等各種結(jié)果出現(xiàn)①A=2,B=0,X=4沿路徑ace執(zhí)行 (沿路徑abd執(zhí)行) 條件覆

A=2,B=0,X=4(沿路徑ace執(zhí)行)A=1,B=1,X=1(沿路徑abd執(zhí)行 條件覆條件x>3取真值為T1,取假值為-T1對于第二個判條件x=4取真值為T3,取假值為-T3條件y>5取真值為T4,取假值為-

b執(zhí)行語句塊執(zhí)行語句塊執(zhí)行語句塊(x==4)||(y>5)執(zhí)行語句塊

執(zhí)行語句塊執(zhí)行語句塊 條件覆則可以設(shè)計測試用例

a測試用測試用條件取覆蓋分-T1、T2、-T3-T1、-T2、T3-

執(zhí)行語句塊執(zhí)行語句塊(x==4)||(y>5)

執(zhí)行語句塊執(zhí)行語句塊執(zhí)行語句塊執(zhí)行語句塊 條件覆如對語IF(AANDB)THEN設(shè)計2個測試用例,使其滿足“條件覆蓋使A為真并使B為使A為假而且B為但是它們都未能使語句S得以執(zhí)行 條件覆

a b執(zhí)行語句塊執(zhí)行語句塊測試通測試通過路條件覆蓋分T1、-T2、T3-d

執(zhí)行語句塊執(zhí)行語句塊 分支/條件覆針對上面問題引出了另一種覆蓋標(biāo)準(zhǔn)——“對例1的程序,前面的兩個例分支/條件覆兩個測試用例便可以覆蓋8個條

a執(zhí)行語句塊執(zhí)行語句塊

No以及4個判斷分支

e(x==4)||(y>5)執(zhí)行語句塊執(zhí)行語句塊執(zhí)行語句塊執(zhí)行語句塊測試測試用路條件取分-T1、-T2、--、 分支/條件覆如對于條件表(x>3&&z<10來說,必須兩個條件都滿足才 條件組合覆針對上述問題又提出了另一種標(biāo)準(zhǔn)——“條件組合覆蓋 條件組合覆1)A>1, 2)A>1,3)A≤1, 4)A≤1,5)A=2, 6)7)A≠2, 8)A≠2,5)、6)、7)、8)四種情況是第二個 條件組合覆①②③④ 條件組合覆 條件組合覆對例2中的各個判斷的條件取值組合加以標(biāo)記如下

1、2、3、

記做T1T2,第一個判斷的取真分記做T1T2,第一個判斷的取假分支記做-T1T2,第一個判斷的取假分

執(zhí)執(zhí)行語句塊執(zhí)行語句塊4、x<=3,z>=10記做-T1-T2,第一個判斷執(zhí)行語句塊

5、6、7、8、

記做T3T4,第二個判斷的取真分支記做T3-T4,第二個判斷的取真分支記做-T3T4,第二個判斷的取真分支記做-T3-T4

執(zhí)行語句塊執(zhí)行語句塊出 條件組合覆測試用例通過路徑條件取值覆蓋組合x=4、y=6、T1、T2、T3、1和x=4、y=5、T1、-T2、T3、-2和x=2、y=6、-T1、T2、-T3、3和x=2、y=5、-T1、-T2、-T3、-4和 修正條件判定覆修正條件判定覆對例1的第一個判定,全部組合條件如下測試用結(jié)1TTT2TFF3FTF4FFF1和3說明條件“A>1”獨立影響判定的輸出例3:工資管理程序BONUS的輸入數(shù)據(jù)是職員表(EmployeeTable)和部門表(DepartmentTable)(如圖)。職員表由 (Name)、職務(wù)(JobCode)、部門工作,則輸出出錯碼2” BEGINMAXSALERS:=0;IF(ESIZE≤0)OR BEGINFORI:=1TODSIZEIFTHENFORJ:=1TODSIZEIFBEGINFORK:=1TOESIZEIFBEGIN IFORTHENELSEIF(NOTFOUND)THEN IF(ESIZE≤0)OR(DSIZE≤0) (SALARY(K)≥15000.00)ORIF(NOT21 使得上述6個判定都取到兩種結(jié)果,這就需要以下12種情況。判定條件結(jié)果為“真”結(jié)果為“假”2(ESIZE≤0)69EMPTAB.DEPT(K)=0.00)NOT設(shè)計下面的兩個測試用例可以滿足“判定覆蓋(圖中“職務(wù)”例輸入 1 2ESIZE,DSIZE,DEPTTABJONESED42D42SMITHED32D32JONESED42LORINED42D95SMITHED32LORINED42 白盒法測試舉例-工資管理程序測判 真假226SALES(I)總會出9SALES(J)量最大的部門工SALARY(K)工資小于15000NOT蓋”。例輸入 1 2ESIZE,DSIZE,DEPTTABJONESED42D42SMITHED32D32JONESED42LORINMD42D95SMITHED32LORINED42 (ESIZE=O)AND(DSIZE=0),這個錯誤也不能被發(fā)現(xiàn)。 LORIN不是經(jīng)理,則判定16就可取到兩種結(jié)果,語句19因而 例輸入 1 2ESIZE,DSIZE,DEPTTABJONESMD42D42SMITHED32D32JONESED42LORINED42D95SMITHED32LORINED42 能檢查到JOB(K)=“M”這一部分。 本例中判定6、9、1321各有兩種組合,判定2和164種組 例輸入 1 2ESIZE=0,3ESIZE>0,4ESIZE=5,ESIZE,DSIZE,DEPTTABJONESMD42D42WARNSMD95D32JONESMD42LORINED42D95WARNSMD95 ED95D44LORINED42SMITHED32 ED95SMITHD32 ERRORCODE:=0;被遺漏了就查不出; “條件組合覆蓋”標(biāo)準(zhǔn)比其他標(biāo)準(zhǔn)優(yōu)越 白盒法和黑盒法各有長短每種方法都可提供一組有用的測試用例,這組測試用例容易發(fā)現(xiàn)某種類型的錯誤,然而沒有 法能提供一組完整的測試用例因此實際軟件測試方案設(shè)計是不同方法的綜合應(yīng)用。一個參考的黑盒法補充策略是。必要的話,再用等價分類法補充一些測試用例如果功能說明中含有輸入條件的組合情況,則一開始就可先用 果圖(判定表)法 以工資管理為例:(用黑盒法補充測試用例EMPTAB具有1個記錄2*)EMPTAB具有最大個數(shù)的記錄(如65535個記錄)EMPTAB具有零個記錄DEPTAB具有1個記錄5*)DEPTTAB具有65535個記錄DEPTTAB具有零個記錄銷售量最大的部門有1個職員 黑盒法補充測試用例-工資管理程序測8*)銷售量最大的部門有65535個職員銷售量最大的部門沒有職員所有部門的銷售量相等DEPTTAB中,第一個部門的銷售量最大DEPTTAB中,最后一個部門的銷售量最大EMPTAB中,第一個職員在銷售量最大的部門工作EMPTAB中,最后一個職員在銷售量最大的部門工作銷售量最大的部門中有一個職員是經(jīng)理銷售量最大的部門中有一個職員不是經(jīng)理銷售量最大的部門中有一個職員(不是經(jīng)理)的工資是999.99 黑盒法補充測試用例-工資管理程序測000.00銷售量最大的部門中有一個職員(不是經(jīng)理)的工資是000.01輸出的邊緣情況是ERRCODE=0ERRCODE=1增加后的工資為99999.99(即數(shù)據(jù)項SALARY的最大允許 黑盒法補充測試用例-工資管理程序測再用錯誤推測法還可增加一個測試用例上述、、再將用白盒法設(shè)計的測試用例與余下的2種情況作比較,可以看出許多情況巳包括在這、、、、、、、、、和4等11種。因此再增加的測試用例如下 例 5ESIZE=3ESIZE,DSIZE,DEPTTAB不 ED36 ED33 CELTOED33 6ESIZE=1ESIZE,DSIZE,DEPTAB不CHIEFMD99 CHIEF 7 ESIZE,DSIZE,DEPTAB不 E E E E 習(xí) X>8AND X>0OR

X>16OR

路徑覆蓋測路徑測測試通過路A=2、B=0、A=2、B=1、A=3、B=0、ace(x= 執(zhí)行語句塊ace(x= 執(zhí)行語句塊測試測試用通過路覆蓋x=4、y=6、T1、T2、T3、x=4、y=5、T1、-T2、T3、-x=2、y=5、-T1、-T2、-T3、x=5、y=5、T1、T2、-T3、-執(zhí)行語句塊路徑覆 雖然前面一組測試用例滿足了路徑覆蓋但并沒有覆蓋程序中所有的條件組合(丟失了組合37:-T1T2和T3、T4),即滿足路徑覆蓋的測試用例并不一定 合覆蓋?;韭窂綔y 基本路徑測畫出程序的控制流圖:描述程序控制流的一種圖計算程序圈復(fù)雜度:復(fù)雜性度量。從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨立路徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。導(dǎo)出測試用例:根據(jù)圈復(fù)雜度和程序結(jié)構(gòu)設(shè)計測試用例準(zhǔn)備測試用例:確保基本路徑集中的每一條路徑的執(zhí)行

控制流圖的符 順序結(jié)

ifwhile結(jié) until結(jié)

Case結(jié)控制流處理框序列和一個條件判定框(假設(shè)不包含復(fù)合條件)。 控制流待測試程 用流圖表示的待測 程 63 4 4

8758759區(qū)域:由邊和區(qū)域:由邊和解點封閉起來的區(qū)記區(qū)域外記區(qū)域外的部計算區(qū)域控制流(OR,AND,NAND,NOR)連接的復(fù)合條件ifaorxy 獨立路路徑路徑1:1-路徑2:1-2-3-4-5-10-1-路徑3:1-2-3-6-8-9-10-1-1678916789基本路徑測流圖結(jié)點 基本路徑測 voidSort(intiRecordNum,int intintwhile(iRecordNum-->{if(0={x=y+2;if(1= 14.基本路徑測464679有以下三種方法計算圈復(fù)雜度流圖中區(qū)域的數(shù)量對應(yīng)于環(huán)型的復(fù)雜性中邊的數(shù)量,N是流圖中結(jié)點的數(shù)量中判定結(jié)點的數(shù)量。(包含條件的節(jié)點被稱為判定節(jié)點,也叫 464679流圖中有四個區(qū)域V(G)=10條邊-8結(jié)點V(G)=3個判定結(jié)點+1=4 464679路徑1:4-路徑2:4-6-7-路徑3:4-6-9-10-13-4- iRecordNum=0,

{intintwhile(iRecordNum-->{ if(0=輸入數(shù)據(jù)

{x=y+2;預(yù)期結(jié)果

if(1= 14. 輸入數(shù)據(jù)預(yù)期結(jié)果{intintwhile(iRecordNum-->{if(0=輸入數(shù)據(jù)預(yù)期結(jié)果{x=y+2;if(1=}} 基本路徑測試再舉結(jié)束標(biāo)志),計算其中有效的學(xué)生分?jǐn)?shù)(0~100)的個數(shù)、總分 ii Score[i]<>-1ANDT Score[i]>0

ii=i average=–12返 開開i129129345R1789ANDT Score[i9ANDT4T4TF5F5和Score[i788ii=iFTFTaverage=–12返 基本路徑測試再舉步驟2:確定環(huán)形復(fù)雜性度量1)V(G6(個區(qū)域其中E為流圖中的邊數(shù),N為結(jié)點數(shù)

12 11 5其中P為謂詞結(jié)點的個數(shù)。在流圖中

R16 8 12934129345R178步驟3:確定基本路徑集合(即獨立路徑集合)。于是可確路徑1:1-2-9-10-12徑2:1-2-9-11-12路3:1-2-3-9-10-路徑4:1-2-3-4-5-8-2路徑5:1-2-3-4-5-6-8-2路徑6:1-2-3-4-5-6-7-8-2 步驟4:為每一條獨立路徑各設(shè)計 1)路徑1(1-2-9-10-12)測試?yán)齭core[k]=有效分?jǐn)?shù)值,當(dāng)kiF

1i2iScore[i]<>-1AND 5和score[i]=–1,期望結(jié)果分?jǐn)?shù)個數(shù)n1、總分sum和平均分

Score[i]>0AND

Tii=i average=–12基本路徑測試再舉2)路徑2(1-2-9-11-12)測試

i例

2和 score[1]=–1期望的結(jié)果:average1

Score[i]<>-1AND 5和用例輸入多于 個有效分,即試圖處理51個分?jǐn)?shù),要求51個為有效分?jǐn)?shù)

Score[i]>07

Tii=i期望結(jié)果:n1=50、且算出正確

average=–average=–

12返基本路徑測試再舉4)路徑4(1-2-3-4-5-8-2?)的測用例 k<i期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分

i例2和例 F Score[i]<>-1AND 5和和平均分average5)路徑5(1-2-3-4-5-6-8-2的測試用例score[i]=有效分?jǐn)?shù),當(dāng) k<i

Score[i]>07

Tii=i期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分sum

average=–average=–

12返基本路徑測試再舉6)6(1-2-3-4-5-6-7-8-2的測試用例score[i]期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個數(shù)n1、總分

i例2和例 F Score[i]<>-1AND 5和和平均分average

Score[i]>07

Tii=i

average=–12返基本路徑測在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如IfIf(!A)D--是包含了真與4條執(zhí)行路徑。這樣不僅降低了測試效率,而且大量 的累積,也為排錯帶來麻煩 習(xí)voidDo(intX,intA,int{ if((A>1)&&(B=0) X= if((A=2)||(X>1) X= 控制結(jié)構(gòu)測試的變基本路徑測試簡單高效,但是,其本身并不充分條件測數(shù)據(jù)流測循環(huán)測試條件測邏輯條件的測試用例設(shè)計方法程序中的條件分為簡單條件和復(fù)合條件簡單條件E1<關(guān)系操作符其中,E1E2“<”、“≤”、“=”、“≠”(“!=”)、“>”、或“≥條件測條件(續(xù)復(fù)合條條件測布爾變量錯關(guān)系操作符錯誤算術(shù)表達(dá)式錯誤括弧錯誤條件測條件測試是測試程序條件錯誤和程序的其他錯誤條件測窮舉測(條件組合分支測域測試 域測試是對于大于、小于和等于值的測試策略E1<關(guān)系操作符關(guān)系操作誤,而E1和E2正確,則這三個測試為了發(fā)現(xiàn)E1和E2E1E2條件測C,其條件約束為D=(D1,D2,…,Dn),其中Di(0<對于關(guān)系表達(dá)式,其輸出約束為符號>、=、<條件測其中B1和B2是布爾變量C1失敗條件測其中B1是布爾表達(dá)式,而E3和E4是算術(shù)表達(dá)式C2的條件約束形式如(D1,D2),其中D1是“T”或“F”,D2是=或>{(T,=),(F,=),(T,<),(TF,<),(F}上述條件約束集的覆蓋率將保證檢測C2的布爾和關(guān)系算子的錯條件測其中E1、E2、E3和E4是算術(shù)表達(dá)式C3的條件約束形式如(D1,D2),其中D1和D2是<、=或>{(>,=),(=,=),(<,=),(>,<),(>,>),(=,<),(<,<),(>,>),(=,>),(<,>)(<,<),(=,>),(<,>)上述條件約束集能夠保證檢測C3的關(guān)系操作符的錯誤數(shù)據(jù)流測定

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論