版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第2章 白盒測試n2.1 白盒測試概述n2.2 白盒測試的測試用例設(shè)計(jì)方法 n2.3 白盒測試的典型案例 n2.4 白盒測試的工具 2.1 白盒測試概述n白盒測試又稱為結(jié)構(gòu)測試,主要是根據(jù)被測程序的內(nèi)部結(jié)構(gòu)設(shè)計(jì)測試用例。白盒測試根據(jù)測試方法可以分為靜態(tài)白盒測試和動態(tài)白盒測試。 n靜態(tài)白盒測試是指在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過程。n動態(tài)白盒測試是指測試運(yùn)行中的程序,并利用查看代碼功能和實(shí)現(xiàn)方式得到的信息來確定哪些需要測試,哪些不要測試,如何開展測試,從而設(shè)計(jì)和執(zhí)行測試,找出軟件缺陷的過程。 2.2 白盒測試的測試用例設(shè)計(jì)方法n白盒測試的測試用例設(shè)計(jì)
2、方法主要為邏輯覆蓋測試,邏輯覆蓋測試包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和路徑覆蓋 .語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋2.3 白盒測試的典型案例 例1nIf (a1) and (b=0) then x=x/a if(a=2) or (x1) then x=x+1語句覆蓋n選擇足夠的測試用例,使程序中的可執(zhí)行語句至少執(zhí)行一次。n例子中要設(shè)計(jì)一個能通過ace的測試用例即可,a=2 b=0 x=3 n語句覆蓋較弱,測試不充分,無法發(fā)現(xiàn)程序中某些邏輯運(yùn)算符和邏輯條件的錯誤。判定覆蓋n執(zhí)行足夠的測試用例,使得程序中的每個判定至少都獲得一次“真”和“假”值,或者說使得
3、程序中取“真”分支和取“假”分支至少經(jīng)歷一次。n例子:路徑ace和abd,或通過路徑acd和abe,即可達(dá)到判定覆蓋標(biāo)準(zhǔn)。nX1錯寫為x1,為真,記為t1; a1,為假,記為-t1; b=0,為真,記為t2; b=0 ,為假,記為-t2; 第二個判定:a=2,為真,記為t3; a=2,為假,記為-t3; x1,為真,記為t4; x1 ,為假,記為-t4;n下面第一組測試用例既判定覆蓋,又條件覆蓋;第二組測試用例條件覆蓋,但沒有判定覆蓋。判定/條件覆蓋n要求設(shè)計(jì)足夠多的測試用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且 每個判定本身的判定結(jié)果(真/假)至少出現(xiàn)一次。例子測試用例A
4、 b x執(zhí)行路徑覆蓋條件A1 and b=0A=2Or X1用例12 0 3aceT1,t2,t3,t4T T用例21 1 1abd-t1,-t2,-t3,-t4FF 條件組合覆蓋n執(zhí)行足夠的測試用例,使得每個判定種條件的各種可能組合都至少出現(xiàn)一次。n例子中的條件組合:n1)a1,b=0 記為t1,t2n2)a1,b0 記為t1,-t2n3)a=1,b=0 記為-t1,t2n4)a = 1,b0 記為-t1,-t2n5) a = 2,x1記為t3,t4n6) a = 2,x=1記為t3,-t4n7) a 2,x1記為-t3,t4n8) a 2,x3)&(z5) ) j=x*y+10; /語句塊
5、2 j=j%3; /語句塊3X3 & z5執(zhí)行語句塊執(zhí)行語句塊3FFTTabd語句覆蓋n要實(shí)現(xiàn)DoWork函數(shù)的語句覆蓋,只需設(shè)計(jì)一個測試用例就可以覆蓋程序中的所有可執(zhí)行語句。測試用例輸入為: x=4、y=5、z=5 程序執(zhí)行的路徑是:abdn分析: 語句覆蓋可以保證程序中的每個語句都得到執(zhí)行,但發(fā)現(xiàn)不了判定中邏輯運(yùn)算的錯誤,即它并不是一種充分的檢驗(yàn)方法。例如在第一個判定(x3)&(z5錯誤寫為y3)&(z3 取真值記為T1,取假值記為-T1 條件z5) ): 條件x=4 取真值記為T3,取假值記為-T3 條件y5 取真值記為T4,取假值記為-T4條件覆蓋(續(xù))n根據(jù)條件覆蓋的基本思想,要使上
6、述4個條件可能產(chǎn)生的8種情況至少滿足一次,設(shè)計(jì)測試用例如下: 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=4、y=6、z=5 abd T1、T2、T3、T4 bd x=2、y=5、 z=15 ace -T1、-T2、 -T3、-T4 cen分析:上面這組測試用例不但覆蓋了4個條件的全部8種情況,而且將兩個判定的4個分支b、c、d、e也同時覆蓋了,即同時達(dá)到了條件覆蓋和判定覆蓋。條件覆蓋(續(xù))n說明:雖然前面的一組測試用例同時達(dá)到了條件覆蓋和判定覆蓋,但是,并不是說滿足條件覆蓋就一定能滿足判定覆蓋。如果設(shè)計(jì)了下表中的這組測試用例,則雖然滿足了條件覆蓋,但只是覆蓋了程序中第一個判定的取假分支c 和
7、第二個判定的取真分支d,不滿足判定覆蓋的要求。 測試用例 執(zhí)行路徑 覆蓋條件覆蓋分支x=2、y=6、z=5 acd-T1、T2、 -T3、T4 cdx=4、y=5、z=15 acdT1、-T2、 T3、-T4 cd判定/條件覆蓋n判定/條件覆蓋實(shí)際上是將判定覆蓋和條件覆蓋結(jié)合起來的一種方法,即:設(shè)計(jì)足夠的測試用例,使得判定中每個條件的所有可能取值至少滿足一次,同時每個判定的可能結(jié)果也至少出現(xiàn)一次。n根據(jù)判定/條件覆蓋的基本思想,只需設(shè)計(jì)以下兩個測試用例便可以覆蓋4個條件的8種取值以及4個判定分支。 測試用例 執(zhí)行路徑 覆蓋條件覆蓋分支x=4、y=6、z=5 abdT1、T2、 T3、T4 bd
8、x=2、y=5、z=15ace-T1、-T2、 -T3、-T4 ce判定/條件覆蓋(續(xù))n分析:從表面上看,判定/條件覆蓋測試了各個判定中的所有條件的取值,但實(shí)際上,編譯器在檢查含有多個條件的邏輯表達(dá)式時,某些情況下的某些條件將會被其它條件所掩蓋。因此,判定/條件覆蓋也不一定能夠完全檢查出邏輯表達(dá)式中的錯誤。 例如:對于第一個判定(x3)&(z3和z3為假,則編譯器將不再檢查z5)來說,若條件x=4滿足,就認(rèn)為該判定為真,這時將不會再檢查y5,那么同樣也無法發(fā)現(xiàn)這個條件中的錯誤。組合覆蓋n組合覆蓋的目的是要使設(shè)計(jì)的測試用例能覆蓋每一個判定的所有可能的條件取值組合。n對DoWork函數(shù)中的各個判
9、定的條件取值組合加以標(biāo)記: 1、x3, z3, z=10 記做T1 -T2,第一個判定的取假分支 3、x=3, z10 記做-T1 T2,第一個判定的取假分支 4、x=10 記做-T1 -T2,第一個判定的取假分支 5、x=4, y5 記做T3 T4,第二個判定的取真分支 6、x=4, y5 記做-T3 T4,第二個判定的取真分支 8、x!=4, y 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 else12 x=y+20;13 14 例4 (續(xù)) : 基本路徑測試方法(續(xù))n畫出控制流圖: 如右圖所示n導(dǎo)出獨(dú)立路
10、徑(用語句編號表示) 路徑1:414 路徑2:46714 路徑3:4691013414 路徑4:4691213414467910121314例4(續(xù)) : 基本路徑測試方法輸入數(shù)據(jù)預(yù)期輸出測試用例1irecordnum = 0itype = 0 x = 0y = 0測試用例2irecordnum = 1itype = 0 x = 2y = 0測試用例3irecordnum = 1itype = 1x = 10y = 0測試用例4irecordnum = 1itype = 2x = 0y = 20n設(shè)計(jì)測試用例:2.3 白盒測試的典型案例 例5n最多輸入100個值(-999為結(jié)束標(biāo)志) ,計(jì)算落
11、在指定范圍內(nèi)的值的個數(shù)總和平均值。n1 Float sum=0;total=0nfloat average(value,min,max)nfloat value100;nint min,max;nint num,I; float ave;n I=0; num=0;n2,3 while (valuei!=-999 & nummin & valuei0n11 ave=sum/total;nelsen 12 ave=-999;n 13 return(ave); n例5(續(xù)):控制流圖例5(續(xù)):路徑分析n路徑1:跳過整個循環(huán)q執(zhí)行路徑:1-2-10-12-13q測試用例輸入為數(shù)組第一個元素就為-99
12、9:value1= -999 q期望結(jié)果:ave= -999n路徑2:只循環(huán)一次,且是在指定范圍內(nèi)的值q執(zhí)行路徑:1-(2-3-4-5-6-7-8-9)-2-10-11-13q測試用例輸入為數(shù)組第一個元素為有效值,第二個元素就為-999:value1=有效輸入 value2= -999q期望結(jié)果:值的個數(shù)為1,和就是第一個數(shù)的值。n路徑3:只循環(huán)一次,且是不在指定范圍內(nèi)的值q執(zhí)行路徑:1-(2-3-4-5-8-9)-2-10-12-13q測試用例輸入為數(shù)組第一個元素為不在指定范圍內(nèi)的某個值,第二個元素就為-999: value2= -999q期望結(jié)果: ave= -999n路徑4:循環(huán)兩次,q
13、執(zhí)行路徑:1-(2-3-4-5-6-7-8-9)2-2-10-11-13qvalue1和value2為有效輸入,value3= -999 q期望結(jié)果:基于數(shù)組前兩個元素的正確平均值n路徑5:循環(huán)兩次,q執(zhí)行路徑:1-(2-3-4-5-6-7-8-9)- (2-3-4-5-8-9)-2-10-11-13qvalue1在指定范圍,value2為有效輸入但不在指定范圍,value3= -999 q期望結(jié)果:基于數(shù)組第一個元素的正確平均值n路徑6:循環(huán)兩次,q執(zhí)行路徑:1-(2-3-4-5-8-9)- (2-3-4-5-6-7-8-9)-2-10-11-13qvalue1不在指定范圍,value2在指
14、定范圍,value3= -999 q期望結(jié)果:基于數(shù)組第二個元素的正確平均值n路徑6:循環(huán)兩次,q執(zhí)行路徑:1-(2-3-4-5-8-9)2 -2-10-12-13qvalue1 和value2都不在指定范圍,value3= -999 q期望結(jié)果: ave= -999n路徑7:循環(huán)m次q執(zhí)行路徑:1- (2-3-4-5-6-7-8-9)m -2-10-11-13q Value1valuem均為有效輸入,m100,valuem+1=-999q期望結(jié)果: 基于前m次有效值的正確平均值n路徑8:循環(huán)m次q執(zhí)行路徑:1- (2-3-4-5-6-7-8-9)i (2-3-4-5-8-9)m-i-2-10
15、-11-13q Value1valuei均為有效輸入且在指定范圍,im100,Valuei+1valuem 不在指定范圍,valuem+1=-999q期望結(jié)果: 基于前i次有效值的正確平均值n路徑9:循環(huán)m次q執(zhí)行路徑:1- (2-3-4-5-6-7-8-9)m-2-10-12-13q Value1value m 為有效值但不在指定范圍,valuem+1=-999q期望結(jié)果: ave= -999n路徑10:循環(huán)99次q執(zhí)行路徑:1- (2-3-4-5-6-7-8-9)99-2-10-11-13qValue1value99均為有效輸入且在指定范圍,value100=-999q期望結(jié)果:基于前99
16、個值的正確平均值n路徑11:循環(huán)99次q執(zhí)行路徑:1- (2-3-4-5-8-9)99-2-10-11-13qValue1value99均為有效輸入但不在指定范圍,value100=-999q期望結(jié)果: ave= -999n路徑12:循環(huán)99次q執(zhí)行路徑:1- (2-3-4-5-6-7-8-9)i-(2-3-4-5-8-9)99-i-2-10-11-13qValue1valuei均為有效輸入且在指定范圍,Valuei+1value99均為有效輸入但不在指定范圍,value100=-999,i99 q期望結(jié)果: 基于前i次有效值的正確平均值n路徑13: 循環(huán)100次q1-(2-3-4-5-6-7
17、-8-9)100-2-3-10-11-13qValue1value100均為有效輸入且在指定范圍q期望結(jié)果:基于100個數(shù)的正確平均值n路徑14: 循環(huán)100次q1-(2-3-4-5-8-9)100-2-3-10-11-13qValue1value100均為有效輸入但不在指定范圍q期望結(jié)果: ave= -999n路徑15: 循環(huán)100次q1-(2-3-4-5-6-7-8-9)i-(2-3-4-5-8-9)100-i-2-3-10-11-13qValue1valuei均為有效輸入且在指定范圍,Valuei+1value100均為有效輸入但不在指定范圍,i100q期望結(jié)果:基于前i個數(shù)的正確平均值
18、例5(續(xù)):測試用例輸入數(shù)據(jù)預(yù)期輸出測試用例1value1= -999ave= -999測試用例2value1=50 value2= -999ave=50測試用例3value1=5 value2= -999ave= -999測試用例4value1=50 value2= 100 value3= -999ave=75測試用例5value1=5value2= 100 value3= -999ave=100測試用例6value1=5value2= 9 value3= -999ave= -999測試用例7value1到value50均為100 value51= -999Ave為前50個數(shù)的平均值測試用例
19、8value1到value40均為100value41到value50均為5value51= -999Ave為前40個數(shù)的平均值測試用例9value1到value50均為1 value51= -999ave= -999測試用例10value1到value99均為100 value100= -999Ave為前99個數(shù)的平均值測試用例11value1到value99均為1 value100= -999ave= -999測試用例12value1到value60均為100value61到value99均為5value51= -999Ave為前60個數(shù)的平均值測試用例13value1到value100均
20、為90 Ave為100個數(shù)的平均值測試用例14value1到value100均為9ave= -999測試用例15value1到value70均為100value71到value100均為5Ave前70個數(shù)的平均值2.4 白盒測試的工具 2.4.1 工具的分類l靜態(tài)測試工具靜態(tài)測試工具直接對代碼進(jìn)行分析,不需要運(yùn)行代碼,也不需要對代碼編譯鏈接,生成可執(zhí)行文件。靜態(tài)測試工具一般是對代碼進(jìn)行語法掃描,找出不符合編碼規(guī)范的地方,根據(jù)某種質(zhì)量模型評價代碼的質(zhì)量,生成系統(tǒng)的調(diào)用關(guān)系圖等。靜態(tài)測試工具的代表有Telelogic公司的Logiscope軟件、PR公司的PRQA軟件。l動態(tài)測試工具動態(tài)測試工具與
21、靜態(tài)測試工具不同,動態(tài)測試工具的一般采用“插樁”的方式,向代碼生成的可執(zhí)行文件中插入一些監(jiān)測代碼,用來統(tǒng)計(jì)程序運(yùn)行時的數(shù)據(jù)。其與靜態(tài)測試工具最大的不同就是動態(tài)測試工具要求被測系統(tǒng)實(shí)際運(yùn)行。動態(tài)測試工具的代表有Compuware公司的DevPartner軟件、Rational公司的Purify系列。2.4 白盒測試的工具 2.4.2 JUnit 簡介n支持的語言qSmalltalk, Java, C+, Perl, Python, etc.n支持的集成開發(fā)環(huán)境qJBuilder , VisualAge for Java, etc.JUnit isJUnit is notscope單元測試 整合測
22、試testware骨干、架構(gòu)完整系統(tǒng)level工具方法論test case手動產(chǎn)生 自動產(chǎn)生test driver / script部份手寫 全自動Junit框架run()TestfNamesetUp()runTest()tearDown()run()TestCaserun()addTest()TestSuite*TestResultjunit.frameworkassertTrue()assertEquals().Assertjunit.textui.TestRunnerjunit.swingui.TestRunner框架包中的主要類說明Interface Test主要方法:countTes
23、tCases:統(tǒng)計(jì)TestCases 數(shù)目;run:運(yùn)行測試并將結(jié)果返回到指定的TestResult 中Class Assert:Assert 是一個靜態(tài)類,它提供的方法都是Static 的,最常用的是: .assertTrue:assert 的替代方法,判斷一個條件是否為真.assertEquals:用于判斷實(shí)際值和期望值是否相同(Equals),可 以是各種JAVA對象。.assertNotNull:判斷一個對象是否不為空.assertNull:判斷一個對象是否為空.assertSame:判斷實(shí)際值和期望值是否為同一個對象( =),注意和assertEquals區(qū)分 assert. assertEquals()框架包中的主要類說明3.Class TestCase使用者最主要使用的類,.countTestCases:返回TestCase 數(shù)目.run:運(yùn)行TestCase,如果沒有指定結(jié)果存儲TestResu
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)小組討論
- 肺炎支原體進(jìn)化分析-洞察及研究
- 跨文化聽覺藝術(shù)比較-洞察及研究
- 紅花草籽精油提取工藝優(yōu)化-洞察及研究
- 卒中血管再通治療
- 寶寶生長過程及護(hù)理
- 護(hù)理職業(yè)學(xué)院文明建設(shè)
- 腹腔鏡病人的護(hù)理
- 【物理】跨學(xué)科:電磁波與信息技術(shù)課件-2025-2026學(xué)年物理滬科版(2024)九年級全一冊
- 2026青海省海北州海晏縣縣直機(jī)關(guān)事業(yè)單位公益性崗位第一批招聘60人筆試模擬試題及答案解析
- 2022年中國工藝美術(shù)館招聘考試真題
- 輔導(dǎo)員工作的職責(zé)與使命課件
- 防造假管理程序文件
- ktv股東合作協(xié)議書
- 2023年北京海淀區(qū)高三一?;瘜W(xué)試題及答案
- 腫瘤內(nèi)科靜脈給予抗腫瘤藥物評價標(biāo)準(zhǔn)
- 醫(yī)療器械生產(chǎn)質(zhì)量管理規(guī)范無菌醫(yī)療器械實(shí)施細(xì)則和檢查評定標(biāo)準(zhǔn)
- 吊籃租賃安拆分包合同
- GB/T 20728-2006封閉管道中流體流量的測量科里奧利流量計(jì)的選型、安裝和使用指南
- FZ/T 54033-2010錦綸6高取向絲(HOY)
- 六年級英語上冊-Unit-5-What-does-he-do單元整體分析-人教PEP
評論
0/150
提交評論