《白盒測試之理論篇》ppt課件_第1頁
《白盒測試之理論篇》ppt課件_第2頁
《白盒測試之理論篇》ppt課件_第3頁
《白盒測試之理論篇》ppt課件_第4頁
《白盒測試之理論篇》ppt課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、白盒測試之實際篇白盒測試之實際篇李娟2021-09-04為什么做白盒測試?為什么做白盒測試?這個問題比較復雜,我們先從一個比喻開場講起。 假設有一臺的面包機,從上面倒入面粉與水,開動機器后從下面出來的就是烤好了的面包,這個機器的功能比較單一,接口很明晰,輸入是面粉與水,輸出是面包。如今假定這個面包機多年未用,內部都生銹了,如今要清洗它,類似于我們開發(fā)的軟件,軟件有Bug,那得經(jīng)過測試來清理。那如何更快速的清洗這臺面包機呢?有兩種洗法,一是拿水從上往下灌,這是系統(tǒng)測試的方法。另一種是拆開來洗,拆開機器后,拿抺布沾點清潔劑,把各零件的坑坑槽槽擦洗一遍,然后組裝回來,再用水從上往下沖一遍,拆開來洗是

2、白盒方法,組裝回來用水沖是黑盒方式,相當于白盒測試之后再追加一次系統(tǒng)測試。無疑,上面第二種方法是正確的,我們的前提是:清洗多年未用的面包機,鐵銹夠多,假設洗不干凈,造出的面包都是致癌物質。當然,清洗面包機還只能算簡單勞動,清理軟件中的Bug要復雜得多,一個if語句有兩條分支,一個while循環(huán)判別也是兩條分支,還有break、continue、return等,想想看,一個1萬行規(guī)模的軟件能有多少個分支!一個分支就是一條坑坑槽槽,而且軟件Bug還具備動態(tài)特性,不是靜止的明擺在哪兒。所以,軟件的白盒測試不可或缺,由于遺留Bug的影響很大,就像面包機沒洗凈留鐵銹會致癌,還由于軟件系統(tǒng)遠比面包機復雜,

3、不拆開來怎樣能洗干凈!v1、白盒測試的概念、特點、白盒測試的概念、特點v2、白盒測試的目的、白盒測試的目的v3、白盒測試的原那么、白盒測試的原那么v4、白盒測試的根據(jù)、白盒測試的根據(jù)v5、白盒測試的類別、白盒測試的類別v6、白盒測試的流程、白盒測試的流程v7、白盒測試的戰(zhàn)略、白盒測試的戰(zhàn)略v8、白盒測試方法、白盒測試方法1.1 白盒測試的概念白盒測試的概念o白盒測試白盒測試White Box Testing,按照程序內部的構造、邏,按照程序內部的構造、邏輯驅動測試程序,經(jīng)過測試來檢測產(chǎn)品內部動作能否按照設計闡輯驅動測試程序,經(jīng)過測試來檢測產(chǎn)品內部動作能否按照設計闡明書的規(guī)定正常進展,檢驗程序中

4、的每條途徑能否都能按預定要明書的規(guī)定正常進展,檢驗程序中的每條途徑能否都能按預定要求正確任務。求正確任務。o白盒測試的對象主要是源程序。是指用代碼內部的分支、途徑、白盒測試的對象主要是源程序。是指用代碼內部的分支、途徑、條件,使程序設計的控制構造導出測試用例。條件,使程序設計的控制構造導出測試用例。o白盒測試是一個與黑盒測試相對的概念,是指測試者針對可見代白盒測試是一個與黑盒測試相對的概念,是指測試者針對可見代碼進展的一種測試。白盒測試通常再劃分為單元測試、集成測試碼進展的一種測試。白盒測試通常再劃分為單元測試、集成測試兩大類,但根據(jù)不同的流程,對白盒測試細分的規(guī)范也不盡一致,兩大類,但根據(jù)不

5、同的流程,對白盒測試細分的規(guī)范也不盡一致,比如在比如在IBM的的IPD流程之下,白盒測試能夠劃分為如下幾類:模流程之下,白盒測試能夠劃分為如下幾類:模塊單元測試、模塊集成測試、模塊系統(tǒng)測試、漸增塊單元測試、模塊集成測試、模塊系統(tǒng)測試、漸增Build集成測集成測試、系統(tǒng)集成測試等。而在試、系統(tǒng)集成測試等。而在XP實際中,單元測試與集成測試之間實際中,單元測試與集成測試之間的界限并不明顯,統(tǒng)稱為漸增迭代測試。的界限并不明顯,統(tǒng)稱為漸增迭代測試。1.2 白盒測試的特點白盒測試的特點o白盒法特點:以程序的內部邏輯為根底設計測試用例,白盒法特點:以程序的內部邏輯為根底設計測試用例,所以又稱為邏輯覆蓋法。

6、運用白盒法時,手頭必需有程所以又稱為邏輯覆蓋法。運用白盒法時,手頭必需有程序的規(guī)格闡明以及程序清單。序的規(guī)格闡明以及程序清單。o o白盒法思索的是測試用例對程序內部邏輯的覆蓋程度。白盒法思索的是測試用例對程序內部邏輯的覆蓋程度。o最徹底的白盒法是覆蓋程序中的每一條途徑,但是由于最徹底的白盒法是覆蓋程序中的每一條途徑,但是由于o程序中普通含有循環(huán),所以途徑的數(shù)目極大,要執(zhí)行每程序中普通含有循環(huán),所以途徑的數(shù)目極大,要執(zhí)行每o一條途徑是不能夠的,只能希望覆蓋的程度盡能夠高些。一條途徑是不能夠的,只能希望覆蓋的程度盡能夠高些。2 白盒測試的目的白盒測試的目的 o保證一個模塊中的一切獨立途徑至少被執(zhí)行

7、一次;o對一切的邏輯值均需求測試真、假兩個分支;o在上下邊境及可操作范圍內運轉一切循環(huán);o檢查內部數(shù)據(jù)構造以確保其有效性。o提高代碼的質量到達軟件產(chǎn)品中要求的可靠性、平安性;3 白盒測試的原那么白盒測試的原那么白盒測試的原那么有白盒測試的原那么有4點:點:1保證一個模塊中一切途徑至少被測試一次;保證一個模塊中一切途徑至少被測試一次;2一切邏輯值都要測試真和假兩種情況;一切邏輯值都要測試真和假兩種情況;3檢查程序的內部數(shù)據(jù)構造能否有效;檢查程序的內部數(shù)據(jù)構造能否有效;4檢查上、下邊境及可操作范圍內運轉一切循環(huán)。檢查上、下邊境及可操作范圍內運轉一切循環(huán)。4 白盒測試根據(jù)白盒測試根據(jù)軟件需求報告;軟

8、件需求報告;軟件需求規(guī)格闡明;軟件需求規(guī)格闡明;程序設計文檔;程序設計文檔;軟件界面設計;軟件界面設計;編碼規(guī)范;編碼規(guī)范;開發(fā)命名規(guī)范。開發(fā)命名規(guī)范。 5 白盒測試的類別白盒測試的類別白盒測試的類別詳細分為白盒測試的類別詳細分為8大類:大類:1 軟件公用問題的測試;軟件公用問題的測試;2 言語測試;言語測試;3 SQL語句測試;語句測試;4 數(shù)據(jù)類型測試;數(shù)據(jù)類型測試;5 界面測試;界面測試;6 數(shù)值對象測試;數(shù)值對象測試;7 業(yè)務對象測試;業(yè)務對象測試;8 數(shù)據(jù)管理對象測試。數(shù)據(jù)管理對象測試。白盒測試的流程分為界面對象和業(yè)務對象兩種方式。白盒測試的流程分為界面對象和業(yè)務對象兩種方式。界面對

9、象測試界面對象測試界面對象測試的流程如圖界面對象測試的流程如圖2-1所示。所示。圖2-1界面對象的流程圖 6 6 白盒測試的流程白盒測試的流程(2) 業(yè)務對象流程測試業(yè)務對象測試的流程如圖2-2所示。6 6 白盒測試的流程白盒測試的流程 圖2-2 業(yè)務對象測試的流程圖 7 7 白盒測試戰(zhàn)略白盒測試戰(zhàn)略o桌前檢查桌前檢查Desk Check o同行評審同行評審Peer Review o代碼走查代碼走查Walkthrougho靜態(tài)分析靜態(tài)分析static analyse o單元測試單元測試Unit Testingo白盒測試綜合戰(zhàn)略白盒測試綜合戰(zhàn)略o1測試中,盡量先用自動化工具來進展靜態(tài)構造分析;測

10、試中,盡量先用自動化工具來進展靜態(tài)構造分析;o2測試中建議先從靜態(tài)測試開場,如:靜態(tài)構造分析、代碼走測試中建議先從靜態(tài)測試開場,如:靜態(tài)構造分析、代碼走查和靜態(tài)質量度量,然后進展動態(tài)測試,如:覆蓋率測試;查和靜態(tài)質量度量,然后進展動態(tài)測試,如:覆蓋率測試;o3利用靜態(tài)分析的結果作為根據(jù),再運用代碼檢查和動態(tài)測試利用靜態(tài)分析的結果作為根據(jù),再運用代碼檢查和動態(tài)測試的方式對靜態(tài)分析結果進展進一步確認,提高測試效率及準確性;的方式對靜態(tài)分析結果進展進一步確認,提高測試效率及準確性;o4覆蓋率測試是白盒測試中的重要手段,在測試報告中可以作覆蓋率測試是白盒測試中的重要手段,在測試報告中可以作為量化目的的

11、根據(jù),對于軟件的重點模塊,應運用多種覆蓋率規(guī)范為量化目的的根據(jù),對于軟件的重點模塊,應運用多種覆蓋率規(guī)范衡量代碼的覆蓋率;衡量代碼的覆蓋率;o5在不同的測試階段,測試的偏重點是不同的。在不同的測試階段,測試的偏重點是不同的。8 8 白盒測試方法白盒測試方法n靜態(tài)測試n 代碼檢查法n 靜態(tài)構造分析法n動態(tài)測試n邏輯測試n語句覆蓋n斷定覆蓋n條件覆蓋n斷定-條件覆蓋n條件組合測試n途徑測試n白盒測試的其它方法n條件測試n數(shù)據(jù)流測試n循環(huán)測試n域測試nZ途徑測試8.1 8.1 靜態(tài)測試靜態(tài)測試 8.1.1 代碼檢查法 8.1.2 靜態(tài)構造分析法 代碼檢查方式桌面檢查由程序員檢查自已編寫的程序在程序經(jīng)

12、過編譯之后,對源碼進展分析檢查代碼審查由假設干程序員和測試員組成審查小組經(jīng)過閱讀、討論、爭議來對程序文檔進展靜態(tài)分析走查由假設干程序員和測試員組成審查小組,審查第一步:資料下發(fā)每個人,各自仔細閱讀、研討審查第二步:集中開會,大家根據(jù)預先設計好的測試用例,模擬運轉程序,記錄程序蹤跡,供分析討論之用8.1.1 代碼檢查法o代碼檢查的主要工程o變量交叉援用表o標號交叉援用表o子程序、宏、函數(shù)o等價性檢查o常量檢查o規(guī)范檢查o風格檢查o比較控制流o程序的規(guī)格闡明8.1.1 8.1.1 代碼檢查法代碼檢查法o代碼檢查的規(guī)那么可以參照編碼規(guī)范8.1.2 靜態(tài)構造分析法u運用靜態(tài)構造分析工具分析程序源代碼的

13、內部構造u系統(tǒng)構造u數(shù)據(jù)構造u數(shù)據(jù)接口u內部控制邏輯u可生成的分析文檔u函數(shù)調用關系圖u模塊控制流程圖u內部文件調用關系圖u子程序表u宏和函數(shù)參數(shù)表8.2 8.2 動態(tài)測試動態(tài)測試o邏輯覆蓋法o根本途徑覆蓋法 邏輯覆蓋測試方法通常采用流程圖來設計測試用例,它調查的重點是圖中的斷定框,由于這些斷定通常是與選擇結構有關或是與循環(huán)構造有關,是決議程序構造的關鍵成分。 邏輯覆蓋法途徑測試就是設計足夠的測試用例,覆蓋程序中每一條能夠的程序執(zhí)行途徑至少測試一次,假設程序中含有循環(huán)(在程序圖中表現(xiàn)為環(huán))那么每個循環(huán)至少執(zhí)行一次。 途徑測試法發(fā)現(xiàn)錯誤的才干標 準含 義語句覆蓋每條語句至少執(zhí)行一次斷定覆蓋每一斷

14、定的每個分支至少執(zhí)行一次條件覆蓋每一斷定中的每個條件,分別按“真、“假至少各執(zhí)行一次斷定/條件覆蓋同時滿足斷定覆蓋和條件覆蓋的要求條件組合覆蓋求出斷定中一切條件的各種能夠組合值,每一能夠的條件組合至少執(zhí)行一次 邏輯覆蓋測試的5種規(guī)范 覆蓋規(guī)范程序構造舉例測試用例應滿足的條件語句覆蓋AB=.T.分支覆蓋AB=.T.AB=.F.TFTF條件覆蓋A=.T. A=.F.B=.T. B=.F.斷定/條件覆蓋AB=.T. , AB=.F.A=.T. A=.F. B=.T. B=.F.條件組合覆蓋 A=.T. B=.T. A=.T. B=.F.A=.F. B=.TA=.F. B=.F.TFTFTF圖示如下:

15、圖示如下:8.2.1 8.2.1 語句覆蓋語句覆蓋語句覆蓋是一個比較弱的測試規(guī)范,它的含義是:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。為使程序中每個語句至少執(zhí)行一次,只需設計一個能經(jīng)過途徑ace的例子就可以了,例如選擇輸入數(shù)據(jù)為: A=2,B=0,X=3 就可到達“語句覆蓋規(guī)范。 從上例可看出,語句覆蓋實踐上是很弱的,假設第一個條件語句中的AND錯誤地編寫成OR,上面的測試用例是不能發(fā)現(xiàn)這個錯誤的;又如第三個條件語句中X1誤寫成X0,這個測試用例也不能暴露它,此外,沿著途徑abd執(zhí)行時,X的值應該堅持不變,假設這一方面有錯誤,上述測試數(shù)據(jù)也不能發(fā)現(xiàn)它們。 語句覆蓋 8.2.1

16、 8.2.1 分支覆蓋分支覆蓋 A=3,B=0,X=1 (沿途徑acd執(zhí)行) A=2,B=1,X=3 (沿途徑abe執(zhí)行)比“語句覆蓋稍強的覆蓋規(guī)范是“分支覆蓋含義是:執(zhí)行足夠的測試用例,使得程序中的每一個分支至少都經(jīng)過一次。 對例1的程序,假設設計兩個例子,使它們能經(jīng)過途徑ace和abd,或者經(jīng)過途徑acd和abe,就可到達“斷定覆蓋規(guī)范,為此,可以選擇輸入數(shù)據(jù)為: A=3,B=0,X=1 (沿途徑acd執(zhí)行); A=2,B=1,X=3(沿途徑abe執(zhí)行) 程序中含有斷定的語句包括if-then-else、do-until、case、do-while等,所以“分支覆蓋更普通的含義是:使得每一

17、個分支獲得每一種能夠的結果。 “分支覆蓋比“語句覆蓋嚴厲,由于假設每個分支都執(zhí)行過了,那么每個語句也就執(zhí)行過了。但是,“分支覆蓋還是很不夠的,例如例1兩個測試用例未能檢查沿著途徑abd執(zhí)行時,X的值能否堅持不變。8.2.1 8.2.1 條件覆蓋條件覆蓋 A=2,B=0,X=4 (沿途徑ace執(zhí)行)A=1,B=1,X=1 (沿途徑abd執(zhí)行)一個斷定中往往包含了假設干個條件,如例1的程序中,斷定(A1) AND (B=0)包含了兩個條件: A1以及 B=0,所以可引進一個更強的覆蓋規(guī)范“條件覆蓋?!皸l件覆蓋的含義是:執(zhí)行足夠的測試用例使得斷定中的每個條件獲得各種能夠的結果。 例1的程序有四個條件

18、:A1、 B=0、A=2、X1 為了到達“條件覆蓋規(guī)范,需求執(zhí)行足夠的測試用例使得在a點有: A1、A1、B=0、B0 等各種結果出現(xiàn),以及在b點有:A=2、A2、X1、X1 等各種結果出現(xiàn)。如今只需設計以下兩個測試用例就可滿足這一規(guī)范: A=2,B=0,X=4 (沿途徑ace執(zhí)行); A=1,B=1,X=1 (沿途徑abd執(zhí)行)。8.2.1 8.2.1 條件覆蓋條件覆蓋 o“條件覆蓋通常比“分支覆蓋強,由于它使一個斷定中的每一個條件都取到了兩個不同的結果,而斷定覆蓋那么不保證這一點。o“條件覆蓋并不包含“分支覆蓋,如對語句IF(A AND B)THEN S 設計測試用例使其滿足條件覆蓋,即使

19、A為真并使B為假,以及使A為假而且B為真,但是它們都未能使語句S得以執(zhí)行。 條件覆蓋 如對例2設計了下面的測試用例,那么雖然滿足了條件覆蓋,但只覆蓋了第一個條件的取假分支和第二個條件的取真分支,不滿足分支覆蓋的要求。 測試用例測試用例 經(jīng)過途徑經(jīng)過途徑 條件取值條件取值覆蓋分覆蓋分支支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=15 acdT1、-T2、T3、-T4 cdYes入口Noabc執(zhí)行語句塊2執(zhí)行語句塊1YesdNoe出口執(zhí)行語句塊3(x3)&(z5)8.2.1 8.2.1 分支分支/ /條件覆蓋條件覆蓋o針對上面的問題引出了另一種覆蓋規(guī)范“分支

20、 條件覆蓋,它的含義是:執(zhí)行足夠的測試用例,使得分支中每個條件取到各種能夠的值,并使每個分支取到各種能夠的結果。o對例1的程序,前面的兩個例子 o A=2,B=0,X=4 (沿ace路) o A=1,B=1,X=1 (沿abd途徑) o是滿足這一規(guī)范的。分支/條件覆蓋對例2,根據(jù)定義只需設計以下兩個測試用例便可以覆蓋8個條件值以及4個判別分支。 Yes入口Noabc執(zhí)行語句塊2執(zhí)行語句塊1YesdNoe出口執(zhí)行語句塊3(x3)&(z5)測試用例 經(jīng)過途徑 條件取值覆蓋分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=11ace-T1、-T2、-T3、-T4 ce

21、8.2.1 8.2.1 分支分支/ /條件覆蓋條件覆蓋 分支/條件覆蓋從外表來看,它測試了一切條件的取值,但是實踐上某些條件掩蓋了另一些條件。例如對于條件表達式(x3)&(z3為假那么一般的編譯器不在判別能否z5來說,假設x=4測試結果為真,就認為表達式的結果為真,這時不再檢查y5條件了。因此,采用分支/條件覆蓋,邏輯表達式中的錯誤不一定可以查出來了。 8.2.2 根本途徑測試法根本途徑測試法 根本途徑測試法是在程序控制流圖的根底上,經(jīng)過分析控制構造的環(huán)路復根本途徑測試法是在程序控制流圖的根底上,經(jīng)過分析控制構造的環(huán)路復雜性,導出根本可執(zhí)行途徑集合,從而設計測試用例的方法。設計出的測試用雜性,

22、導出根本可執(zhí)行途徑集合,從而設計測試用例的方法。設計出的測試用例要保證在測試中程序的每個可執(zhí)行語句至少執(zhí)行一次。例要保證在測試中程序的每個可執(zhí)行語句至少執(zhí)行一次。根本途徑測試法的重點內容如下:根本途徑測試法的重點內容如下: 程序的控制流圖:描畫程序控制流的一種圖示方法。程序的控制流圖:描畫程序控制流的一種圖示方法。 程序環(huán)形復雜度:程序環(huán)形復雜度:McCabe復雜性度量。從程序的環(huán)路復雜性可導出程序復雜性度量。從程序的環(huán)路復雜性可導出程序根本途徑集合中的獨立途徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一根本途徑集合中的獨立途徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目

23、的上界。次所必需的測試用例數(shù)目的上界。根本途徑測試方法包括以下根本途徑測試方法包括以下4個步驟:個步驟:畫出程序的控制流圖。畫出程序的控制流圖。計算程序的環(huán)形復雜度,導出程序根本途徑集中的獨立途徑條數(shù),這是確定計算程序的環(huán)形復雜度,導出程序根本途徑集中的獨立途徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。導出根本途徑集,確定程序的獨立途徑。導出根本途徑集,確定程序的獨立途徑。根據(jù)中的獨立途徑,設計測試用例的輸入數(shù)據(jù)和預期輸出。根據(jù)中的獨立途徑,設計測試用例的輸入數(shù)據(jù)和預期輸出。8.2.2 8.2.2 根本

24、途徑測試法根本途徑測試法1 程序控制流圖程序控制流圖程序控制流圖可簡稱流圖是對程序流程圖進展簡化后得到的,它突出表示程序控制流的構造。程序控制流圖可簡稱流圖是對程序流程圖進展簡化后得到的,它突出表示程序控制流的構造。程序控制流圖是描畫程序控制流的一種方式。程序控制流圖是描畫程序控制流的一種方式。控制流圖圖形符號:圖形符號:圓圈代表一個結點,控制流圖圖形符號:圖形符號:圓圈代表一個結點, 表示一個或多個無分支的語句或源程序語句;表示一個或多個無分支的語句或源程序語句;程序控制流邊和點圈定的部分叫做區(qū)域。當對區(qū)域計數(shù)時,圖形外的一個部分也應記為一個區(qū)域;程序控制流邊和點圈定的部分叫做區(qū)域。當對區(qū)域

25、計數(shù)時,圖形外的一個部分也應記為一個區(qū)域;判別語句中的條件為復合條件時,即條件表達式由一個或多個邏輯運算符銜接的邏輯表達式判別語句中的條件為復合條件時,即條件表達式由一個或多個邏輯運算符銜接的邏輯表達式a and b,那么需求改動復合條件的判別為一系列只需單個條件的嵌套的判別。,那么需求改動復合條件的判別為一系列只需單個條件的嵌套的判別。根本途徑測試方法是在控制流圖的根底上,經(jīng)過分析控制構造的環(huán)形復雜度,導出執(zhí)行途徑的根本根本途徑測試方法是在控制流圖的根底上,經(jīng)過分析控制構造的環(huán)形復雜度,導出執(zhí)行途徑的根本集,再從該根本集設計測試用例。集,再從該根本集設計測試用例。圖圖2-4 程序控制流程圖程

26、序控制流程圖8.3 8.3 白盒測試的其它方法簡介白盒測試的其它方法簡介o條件測試o數(shù)據(jù)流測試o循環(huán)測試o域測試oZ途徑測試8.3.1 條件測試o條件測試是檢查程序模塊中所包含邏輯條件的測試用例設計方法o主要用于測試程序中條件錯誤和程序的其他錯誤o普通的說,假設程序的測試集可以有效地檢測程序中的條件錯誤,那么該測試集能夠也會有效地檢測程序中的其他錯誤o條件測試戰(zhàn)略主要優(yōu)點o條件測試的覆蓋率計算相對簡單o程序的條件測試覆蓋率為產(chǎn)生另外的程序測試提供了指點8.3.1 8.3.1 條件測試條件測試o條件式分析o一個簡單條件是一個布爾變量或一個能夠帶有NOT操作符的關系表達式,o方式為:E1關系操作符

27、E2o 其中E1和E2是算術表達式,而關系操作符是以下之一:o“、“、“=、“(“!=)、“、或“o復雜條件由簡單條件、布爾操作符和括弧組成,設可用于復雜條件的布爾算子包括oOR,AND和NOT,不含關系表達式的條件稱為布爾表達式。所以條件的成分類型包o括:布爾操作符o布爾變量o布爾括弧(括住簡單或復雜條件)o關系操作符或算術表達式o條件式錯誤o假設條件不正確,那么至少有一個條件成分不正確,條件錯誤普通有以下類型o布爾操作符錯誤o布爾變量錯誤o布爾括弧錯誤o關系操作符或算術表達式錯誤8.3.2 數(shù)據(jù)流測試 數(shù)據(jù)流測試是按照程序中的變量定義和運用的位置來選擇程序的測試途徑數(shù)據(jù)流測試方法能有效發(fā)現(xiàn)

28、錯誤,由于變量的定義和運用,使程序中的語句都彼此相關數(shù)據(jù)流測試方法主要用于為包含 嵌套if和循環(huán)語句的程序 選擇測試途徑前提設程序每條語句都賦予了獨立的語句號,而且每個函數(shù)都不改動其參數(shù)和全局變量,對于語句號為S的語句DEF(S)=X語句S包含X的定義USE(S)=X語句S包含X的運用假設存在從S到S的途徑,并且該途徑不含X的其他定義,那么變量X在語句S處的定義在語句S依然有效變量X的定義,運用鏈(或稱DU鏈)方式如X,S,S,其中S和S是語句號,X在DEF(S)和USE(S)中,而且語句S定義的X在語句S有效運用鏈的測試戰(zhàn)略要求每個DU鏈至少覆蓋一次可以證明DU測試不能保證覆蓋程序的一切分支

29、8.3.4 8.3.4 循環(huán)測試循環(huán)測試o循環(huán)測試是一種白盒測試技術,著重于檢查循環(huán)構造的有效性。o有如下四種循環(huán):簡單循環(huán)嵌套循環(huán)串接循環(huán)不規(guī)那么循環(huán)8.3.4 8.3.4 循環(huán)測試循環(huán)測試o簡單循環(huán)o整個跳過循環(huán)o只需一次經(jīng)過循環(huán)o兩次經(jīng)過循環(huán)om次經(jīng)過循環(huán),其中mnon-1,n,n+1次經(jīng)過循環(huán)o其中n是允許經(jīng)過循環(huán)的最大次數(shù)o嵌套循環(huán)o假設將簡單循環(huán)的測試方法用于嵌套循環(huán),能夠的測試數(shù)就會隨嵌套層數(shù)成幾何級添加,這會導致不實踐的測試數(shù)目o減少測試數(shù)的方法o對最內層循環(huán)運用簡單循環(huán),而使外層循環(huán)的循環(huán)參數(shù)即循環(huán)計數(shù)o最小,并為范圍外或排除的值添加其它測試o由內向外構造下一個循環(huán)的測試,但

30、其它的外層循環(huán)為最小值,并使其o它的嵌套循環(huán)為“典型值繼續(xù)直到測試一切的循環(huán)8.3.4 8.3.4 循環(huán)測試循環(huán)測試o串接循環(huán)o假設串接循環(huán)的循環(huán)都彼此獨立,可是運用嵌套的戰(zhàn)略測試o假設兩個循環(huán)串接起來,而第一個循環(huán)是第二個循環(huán)的初始值,那么這兩個循環(huán)并不是獨立的。那么可運用測試嵌套循環(huán)的方法進展測試o不規(guī)那么循環(huán)o不能測試,盡量重新設計給構造化的程序構造后再進展測試8.3.5 8.3.5 域測試域測試o域是指程序的輸入空間o輸入空間又可以劃分成假設干個子空間,每個子空間對應一種不同的計算,子空間的劃分是由分支語句的條件式?jīng)Q議的o有時將一個域稱為一個等介類o域測試主要是針對域錯誤進展的測試o域錯誤o假設程序的控制流有錯誤,對于某些特定的正確輸入,能夠執(zhí)行的是一條錯誤的途徑,這種錯誤稱為域錯誤o域測試就是在分析輸入域的根底上,選擇適當?shù)臏y試點進展測試o域測試的缺乏o域測試對程序的限制較多o當程序中有很多的途徑時,所需的測試點太多8.3.5 Z8.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論