版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 四 章,白盒測試方法,1,第四章 白盒測試方法,2,白盒測試的基本概念,白盒測試:把程序看成裝在一個(gè)透明的盒子里,程序的結(jié)構(gòu)和處理過程完全可見,按照程序的內(nèi)部邏輯測試程序,以檢查程序中的每條通路是否都能按照預(yù)先要求正確工作。 白盒測試針對被測單元的內(nèi)部進(jìn)行,它的突出特點(diǎn)是基于被測程序的源代碼,而不是基于軟件的規(guī)格說明書。,3,白盒測試方法的分類,靜態(tài)測試:著重在于糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是進(jìn)一步測試的前提,方法包括: 桌面檢查(Desk checking) 代碼評審(Code reading/review) 走查(Walkthroughs) 動(dòng)態(tài)測試:根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)
2、測試用例,要求: 保證一個(gè)模塊中的所有獨(dú)立路徑至少執(zhí)行一次 對所有邏輯值均需測試True和False 在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán) 檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性,4,5,控制流圖的圖形符號(hào),6,7,第四章 白盒測試方法,8,邏輯覆蓋以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),主要分以下幾種方式:,邏 輯 覆 蓋,語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋,9,語 句 覆 蓋 Statement Coverage,設(shè)計(jì)足夠多的測試用例,使得程序中的每個(gè)語句至少執(zhí)行一次。,10,1 語 句 覆 蓋,11,語 句 覆 蓋,測試用例: a = 10, b = 5,int foo(in
3、t a, int b) return a / b; ,盡管語句覆蓋率達(dá)到了所謂的100%,但是卻沒有發(fā)現(xiàn)最簡單的Bug,如:b=0時(shí)會(huì)出現(xiàn)一個(gè)除零異常。,12,判 定 覆 蓋 Dicision Coverage,不僅每個(gè)語句都必須至少執(zhí)行一次,而且每個(gè)判定表達(dá)式的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次,即每個(gè)判定的“真”分支和“假”分支至少都執(zhí)行一次。判定覆蓋又稱分支覆蓋。,13,2 判定覆蓋(分支覆蓋),1,2,14,條 件 覆 蓋 Condition Coverage,不僅每個(gè)語句都必須至少執(zhí)行一次,而且每個(gè)判定表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果,即每個(gè)條件的“真”條件和“假”條件至少都執(zhí)行
4、一次。,15,3 條 件 覆 蓋,A1, B!=0, A=2, X1,條件覆蓋1:,1,2,程序中共有4個(gè)條件8個(gè)結(jié)果,A1, B=0,A=2, X1 (全真) A=1, B!=0, A!=2, X=1(全假),條件覆蓋2:,請思考:這個(gè)條件覆蓋的測試用例是否完全?,真假 混搭,16,條件覆蓋特點(diǎn),17,判定覆蓋 vs 條件覆蓋,判定覆蓋: (1)a = 5, b = 5 覆蓋了分支一 (2)a = 15, b = 15 覆蓋了分支二,int foo(int a, int b) if (a 10 | b 10) / 判定 return 0; / 分支一 else return 1; / 分支二
5、 ,條件覆蓋: (1)a = 5, b = 5 true,true (2)a = 15, b = 15 false,false,假如測試用例設(shè)計(jì)為: (1)a = 5, b = 15 true, false 分支一 (2)a = 15, b = 5 false, true 分支一 這時(shí)候,雖然做到了條件覆蓋,但卻沒有把兩個(gè)判定分支都執(zhí)行到,沒有做到判定覆蓋。 *結(jié)論:判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,18,判 定 條 件 覆 蓋 Decision/Condition Coverage,設(shè)計(jì)足夠多的測試用例,使得判定中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取
6、到各種可能的結(jié)果。,19,4 判定/條件覆蓋,*表面上看,判定條件覆蓋測試了所有條件的所有可能結(jié)果,但事實(shí)上有些條件會(huì)掩蓋另一些條件。例如,在“與”表達(dá)式中,如果某一條件為“假”,則整個(gè)判定的值為“假”,這個(gè)判定中的其他條件就不起作用了。同樣地,若在“或”表達(dá)式中某一條件為“真”,則整個(gè)判定的值為“真”,其它條件也就不起作用了。因此,采用判定條件覆蓋時(shí),判定表達(dá)式中的錯(cuò)誤不一定能測試出來。,1,2,20,條 件 組 合 覆 蓋 Condition Combination Coverage,設(shè)計(jì)足夠多的測試用例,使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。,21,5 條件組合覆蓋,a點(diǎn)
7、的所有條件組合: (1)A1, B0 ; (2)A1, B0 (3)A 1, B0 ; (4)A 1, B0 b點(diǎn)的所有條件組合: (5)A2, x1 ; (6)A2, x1 (7)A 2, x1 ; (8)A 2, x1,a,b,一組測試用例: 滿足(1)和(5): A2, B0, x4 滿足(2)和(6): A2, B1, x1 滿足(3)和(7): A1, B0, x2 滿足(4)和(8): A1, B1, x1,第二組測試用例: 滿足(1)和(8): A3, B0, x1 滿足(2)和(7): A3, B1, x2 滿足(3)和(6): A無取值, B0, x1 滿足(4)和(5):
8、A無取值, B1, x2,22,條件覆蓋 vs 條件組合覆蓋,條件覆蓋 (3個(gè)條件6個(gè)結(jié)果): (1) a = 5, b = 7, c = 6(全真) (2) a = 7, b = 9, c = 4(全假),int foo(int a, int b) if (a 5) ) /判定h return 1; ,條件組合覆蓋: k條件 h條件: (1) c 5; (2) c = 5 測試用例,(1) a = 8 (3) a = 6, b =6, b = 8,(1) a = 7, b = 7, c = 6 (2) a = 5, b = 7, c = 6 (3) a = 5, b = 7, c = 6 (
9、4) a = 5, b = 7, c = 6,23,1. 語句覆蓋 a = 5, b = 5, nReturn = 11語句覆蓋率100% 2. 判定覆蓋 a = 5, b = 5, nReturn = 11 a = 15, b = 15 nReturn = 0 判定覆蓋率100% 3. 條件覆蓋 a = 5, b = 15 nReturn = 1 a = 15, b = 5 nReturn = 10條件覆蓋率100%,上面三種覆蓋率都達(dá)到了100%,很好!但是,仔細(xì)分析可以看出,nReturn的結(jié)果一共有四種可能的返回值:0、1、 10、11, 而上面每種測試方式只覆蓋了部分返回值,可見以上
10、任一覆蓋方式雖然覆蓋率很高,但是并沒有測試完全。,int foo(int a, int b) int nReturn = 0; if (a 10) nReturn += 1; / 分支一 if (b 10) nReturn += 10; / 分支二 return nReturn; ,24,路 徑 覆 蓋 Path Coverage,設(shè)計(jì)足夠多的測試用例,使程序的每一條可能路徑都至少執(zhí)行一次。,25,路 徑 覆 蓋,路徑覆蓋將所有可能的返回值都測試到了,這正是它被很多人認(rèn)為是“最強(qiáng)的覆蓋”的原因。,int foo(int a, int b) int nReturn = 0; if (a 10)
11、nReturn += 1; / 分支一 if (b 10) nReturn += 10; / 分支二 return nReturn; ,測試用例: a=5, b=5, nReturn = 0 a=15, b=5, nReturn = 1 a=5, b=15, nReturn = 10 a=15, b=15, nReturn = 11 路徑覆蓋率100%,26,路 徑 覆 蓋,1,4,2,3,27,六種形式的邏輯覆蓋,各種測試方法都不能保證程序的正確性,但測試的目的并不是為了保證其正確,而是為了盡可能找出程序中隱藏的故障。,語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋,28
12、,(e)兩個(gè)串行的 分支結(jié)構(gòu)的N-S圖,(a)順序型,(b)選擇型,(c)Do-While型,(d)Do-Until型,N-S圖表示的基本控制結(jié)構(gòu),29,最少測試用例數(shù)=(5*3+1)*3=48,5,3,3,30,第四章 白盒測試方法,31,基本路徑測試,又稱獨(dú)立路徑測試,是指在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出獨(dú)立可執(zhí)行路徑集合,設(shè)計(jì)測試用例的方法。 設(shè)計(jì)出的測試用例要保證在測試中,程序的每一個(gè)獨(dú)立可執(zhí)行路徑至少要執(zhí)行一次。循環(huán)體最多只執(zhí)行一次。,32,path1:1 11 path2:1 - 2 - 3 - 4 - 5 - 10 - 1 11 path3:1 - 2 -
13、3 - 6 - 8 - 9 - 10 - 1 11 path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11,基本路徑集,33,導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)流圖(控制流程圖) 計(jì)算流圖的環(huán)路復(fù)雜性 確定只包含獨(dú)立路徑的基本路徑集 設(shè)計(jì)測試用例,基本(獨(dú)立)路徑測試步驟,34,int test2( int x, int y ) int k = 0;if (x 0) if ( y = 0 ) k = x + 100; else if ( y = 1 ) k = k + 10; else k = 20; return k; ,基本路徑測試,int test2( int x, i
14、nt y ) int k = 0;if (x 0) if ( y = 0 ) k = x + 100; else if ( y = 1 ) k = k + 10; else k = 20; / if ( y = 0 ) / if( x0 ) return k; ,第一步: 給程序語句編號(hào),35,第二步:畫出程序流圖,路徑1: 1, 2, 10 路徑2:1,2,3,4,10 路徑3:1,2,3,5,6,7,10 路徑4:1,2,3,5,6,8,9,10,第三步:找出基本路徑,測試用例:x 0 , y=0, k=x+100 測試用例:x0, y=1, k=10 測試用例:x0, y!= 0, y!
15、=1, k=20,第四步:設(shè)計(jì)測試用例,環(huán)路復(fù)雜度為4,第三步:計(jì)算環(huán)路復(fù)雜度,int test(int x, int y) int k = 0; if( x 0) if( y = 0 ) k = x + 100; else if ( y = 1 ) k += 10; else k = 20; return k; ,36,第四章 白盒測試方法,37,循 環(huán) 測 試,簡單循環(huán),串接循環(huán),嵌套循環(huán),38,跳過循環(huán) 只通過循環(huán)一次 通過循環(huán)兩次 通過循環(huán)m次,其中m n-1 通過循環(huán)n1,n,n+1次,簡單循環(huán)測試,注: n是允許通過循環(huán)的最大次數(shù),39,嵌套循環(huán)測試,對最內(nèi)層循環(huán)做簡單循環(huán)的全部測
16、試。所有其它層的循環(huán)變量置為最小值。 逐步外推,對其外面一層循環(huán)進(jìn)行測試。測試時(shí)保持所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型”值。 反復(fù)進(jìn)行,直到所有各層循環(huán)測試完畢。 對全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),或者同時(shí)取最大循環(huán)次數(shù),40,串接循環(huán)測試,如果串接循環(huán)的各個(gè)循環(huán)都彼此獨(dú)立,則可以使用簡單循環(huán)的方法來測試串接循環(huán)。 當(dāng)循環(huán)不獨(dú)立時(shí),使用測試嵌套循環(huán)的方法來測試串接循環(huán)。,41,第四章 白盒測試方法,42,面向?qū)ο蟮陌缀袦y試,類測試一般有兩種主要的方式:功能性測試和結(jié)構(gòu)性測試,即對應(yīng)于傳統(tǒng)結(jié)構(gòu)化軟件的黑盒測試和白盒測試。 結(jié)構(gòu)性測試要考慮程序的代碼是否正確,對
17、類中的方法進(jìn)行測試,它把類作為一個(gè)單元來進(jìn)行測試。測試分為兩層:第一層考慮類中各獨(dú)立方法的代碼;第二層考慮方法之間的相互作用。 對于一個(gè)類的測試要保證類在其狀態(tài)的代表集上能夠正確工作,構(gòu)造函數(shù)的參數(shù)選擇以及消息序列的選擇都要滿足這一準(zhǔn)則。,43,面向?qū)ο蟮陌缀袦y試方法的單獨(dú)測試,結(jié)構(gòu)性測試的第一層是考慮各獨(dú)立的方法,這可以與過程的測試采用同樣的方法,兩者之間最大的差別在于方法改變了它所在實(shí)例的狀態(tài),這就要取得隱藏的狀態(tài)信息來估算測試的結(jié)果,傳給其它對象的消息被忽略,而以樁來代替,并根據(jù)所傳的消息返回相應(yīng)的值,測試數(shù)據(jù)要求能完全覆蓋類中代碼,可以用傳統(tǒng)的測試技術(shù)來獲取。,44,面向?qū)ο蟮陌缀袦y試
18、方法的綜合測試,第二層要考慮一個(gè)方法調(diào)用本對象類中的其它方法和從一個(gè)類向其它類發(fā)送信息的情況。單獨(dú)測試一個(gè)方法時(shí),只考慮其本身執(zhí)行的情況,而沒有考慮動(dòng)作的順序問題,測試用例中加入了激發(fā)這些調(diào)用的信息,以檢查它們是否正確運(yùn)行了。對于同一類中方法之間的調(diào)用,一般只需要極少甚至不用附加數(shù)據(jù),因?yàn)榉椒ǘ际菍︻愡M(jìn)行存取,故這一類測試的準(zhǔn)則是要求遍歷類的所有主要狀態(tài)。,45,第四章 白盒測試方法,46,程序插樁方法是借助往被測程序中插入操作來實(shí)現(xiàn)測試目的的方法。該法是軟件動(dòng)態(tài)測試中的一種基本測試手段,有著廣泛的應(yīng)用。 如果我們想要了解一個(gè)程序在某次運(yùn)行中所有可執(zhí)行語句被覆蓋的情況,或是每個(gè)語句的實(shí)際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。,插 樁 測 試,47,48,49,程序插樁時(shí)需要著重考慮: 探測哪些信息; 在程序的什么部位設(shè)置探測點(diǎn); 需要設(shè)置多少個(gè)探測點(diǎn)。,50,域測試(Domain Testing)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州2025年江蘇蘇州市相城區(qū)集成指揮中心招聘公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 溫州浙江溫州樂清市城東街道辦事處新居民所招聘工作人員筆試歷年參考題庫附帶答案詳解
- 瀘州2025年四川瀘州市納溪區(qū)江南職業(yè)中學(xué)招聘編外合同制教師6人筆試歷年參考題庫附帶答案詳解
- 江西2025年江西水利職業(yè)學(xué)院招聘人事代理人員筆試歷年參考題庫附帶答案詳解
- 平?jīng)?025年甘肅平?jīng)鰶艽h城區(qū)學(xué)校選調(diào)教師80人筆試歷年參考題庫附帶答案詳解
- 安順2025年貴州安順市普定縣機(jī)關(guān)事業(yè)單位考調(diào)46人筆試歷年參考題庫附帶答案詳解
- 四川2025年四川省貿(mào)易學(xué)校招聘編制外工作人員10人筆試歷年參考題庫附帶答案詳解
- 臺(tái)州浙江臺(tái)州溫嶺市金融工作中心招聘駕駛員筆試歷年參考題庫附帶答案詳解
- 臨沂2025年山東臨沂蘭陵縣招聘城市社區(qū)工作者60人筆試歷年參考題庫附帶答案詳解
- 耐藥逆轉(zhuǎn)策略的個(gè)體化治療
- 教科版九年級物理上冊期末測試卷(1套)
- 高一上學(xué)期期末考試英語試卷及答案兩套(附聽力錄音稿)
- 內(nèi)蒙古自治區(qū)通遼市霍林郭勒市2024屆中考語文最后一模試卷含解析
- 復(fù)方蒲公英注射液的藥代動(dòng)力學(xué)研究
- 溝通技巧與情商提升
- 2024屆新疆維吾爾自治區(qū)烏魯木齊市高三上學(xué)期第一次質(zhì)量監(jiān)測生物試題【含答案解析】
- 公司基層黨建問題清單
- 福州港羅源灣港區(qū)碧里作業(yè)區(qū)4號(hào)泊位擴(kuò)能改造工程環(huán)境影響報(bào)告
- 變配電室送電施工方案
- 八年級物理下冊《滑輪》練習(xí)題及答案-人教版
- 江蘇省建設(shè)工程施工項(xiàng)目部關(guān)鍵崗位人員變更申請表優(yōu)質(zhì)資料
評論
0/150
提交評論