第4章 白盒測試及其實例設(shè)計.ppt_第1頁
第4章 白盒測試及其實例設(shè)計.ppt_第2頁
第4章 白盒測試及其實例設(shè)計.ppt_第3頁
第4章 白盒測試及其實例設(shè)計.ppt_第4頁
第4章 白盒測試及其實例設(shè)計.ppt_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 白盒測試及其 實例設(shè)計,第4章 白盒測試及其實例設(shè)計,4.1 邏輯覆蓋測試 4.2 路徑分析測試 4.3 其他白盒測試方法 4.4 實例設(shè)計 小結(jié) 習題,本章概述 白盒測試是軟件測試實踐中最為有效和實用的方法之一。白盒測試是基于程序的測試,檢測產(chǎn)品的內(nèi)部結(jié)構(gòu)是否合理以及內(nèi)部操作是否按規(guī)定執(zhí)行,覆蓋測試與路徑測試是其兩大基本策略。本章重點圍繞邏輯覆蓋和路徑分析展開介紹常見的白盒測試方法,并通過實例說明如何實際運用白盒測試技術(shù)。,4.1 邏輯覆蓋測試,白盒測試技術(shù)的常見方法之一就是覆蓋測試,它是利用程序的邏輯結(jié)構(gòu)設(shè)計相應的測試用例。測試人員要深入了解被測程序的邏輯結(jié)構(gòu)特點,完全掌握源代碼的

2、流程,才能設(shè)計出恰當?shù)挠美?。根?jù)不同的測試要求,覆蓋測試可以分為語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋和路徑覆蓋。 下面是一段簡單的C語言程序,作為公共程序段來說明五種覆蓋測試的各自特點。 程序4-1: 1If (x100 4int i; 5 char str; 6 scanf (“%d, %cn”, 19,1導出程序控制流圖 根據(jù)源代碼可以導出程序的控制流圖,如圖4-4所示。每個圓圈代表控制流圖的節(jié)點,可以表示一個或多個語句。圓圈中的數(shù)字對應程序中某一行的編號。箭頭代表邊的方向,即控制流方向。,圖4-4 程序4-2的控制流圖,2求出程序環(huán)形復雜度 根據(jù)程序環(huán)形復雜度的計算

3、公式,求出程序路徑集合中的獨立路徑數(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)形復雜度是4。就是說至少需要4條獨立路徑組成基本路徑集合,并由此得到能夠覆蓋所有程序語句的測試用例。,3設(shè)計測試用例 根據(jù)上面環(huán)形復雜度的計算結(jié)果,源程序的基本路徑集合中有4條獨立路徑: 路徑1:7-18 路徑2:7-9-10-16-7-18 路徑3:7-9-11-15-16-7-18 路徑4:7-9-11-13-14-15

4、-16-7-18 根據(jù)上述4條獨立路徑,設(shè)計了測試用例組9,如表4-9所示。測試用例組9中的4個測試用例作為程序輸入數(shù)據(jù),能夠遍歷這4條獨立路徑。對于源程序中的循環(huán)體,測試用例組9中的輸入數(shù)據(jù)使其執(zhí)行零次或一次。,表4-9 測試用例組9,程序4-3: 1if (a or b) 2then 3 procedure x 4else 5 procedure y; 6 對應的控制流圖如圖4-5所示,程序行1的a,b都是獨立的判斷節(jié)點,還有程序行4也是判斷節(jié)點,所以共計3個判斷節(jié)點。圖4-5的環(huán)形復雜度為V(G)=3+1,其中3是圖4-5中判斷節(jié)點的數(shù)目。,圖4-5 程序4-3的控制流圖,4.2.3 Z

5、路徑覆蓋測試,Z路徑覆蓋是路徑覆蓋面的一種變體。對于語句較少的簡單程序,路徑覆蓋是具有可行性的。但是對于源代碼很多的復雜程序,或者對于含有較多條件語句和較多循環(huán)體的程序來說,需要測試的路徑數(shù)目會成倍增長,達到一個巨大數(shù)字,以至于無法實現(xiàn)路徑覆蓋。 為了解決這一問題,采用簡化循環(huán)方法的路徑覆蓋就是Z路徑覆蓋。 所謂簡化循環(huán)就是減少循環(huán)的次數(shù)。不考慮循環(huán)體的形式和復雜度如何,也不考慮循環(huán)體實際上需要執(zhí)行多少次,只考慮通過循環(huán)體零次和一次這兩種情況。這里的零次循環(huán)是指跳過循環(huán)體,從循環(huán)體的入口直接到循環(huán)體的出口。通過一次循環(huán)體是指檢查循環(huán)初始值。 如圖4-6(a)和圖4-6(b)所示表示了兩種最典型

6、的循環(huán)控制結(jié)構(gòu)。圖4-6(a)是先比較循環(huán)條件后執(zhí)行循環(huán)體,循環(huán)體B可能執(zhí)行也可能不被執(zhí)行。限定循環(huán)體B執(zhí)行零次和一次,這樣就和圖4-6(c)的條件結(jié)構(gòu)一樣了。圖4-6(b)是先執(zhí)行循環(huán)體后比較循環(huán)條件。假設(shè)循環(huán)體B被執(zhí)行一次,在經(jīng)過條件判斷跳出循環(huán),那么其效果就和圖4-6(c)的條件結(jié)構(gòu)只執(zhí)行右分支的效果一樣了。 一旦將循環(huán)結(jié)構(gòu)簡化為選擇結(jié)構(gòu)后,路徑的數(shù)量將大大減少,這樣就可以實現(xiàn)路徑覆蓋測試了。對于實現(xiàn)簡化循環(huán)的程序,可以將程序用路徑樹來表示。當?shù)玫侥骋怀绦虻穆窂綐浜?,從其根?jié)點開始,一次遍歷,再回到根節(jié)點時,將所經(jīng)歷的葉節(jié)點名排列起來,就得到一個路徑。如果已經(jīng)遍歷了所有葉子節(jié)點,那就得到

7、了所有的路徑。當?shù)玫剿械穆窂胶?,生成每個路徑的測試用例,就可以實現(xiàn)Z路徑覆蓋測試。,圖4-6 循環(huán)結(jié)構(gòu)和條件結(jié)構(gòu),4.3 其他白盒測試方法,4.3.1 循環(huán)測試 循環(huán)測試是一種著重循環(huán)結(jié)構(gòu)有效性測試的白盒測試方法。循環(huán)結(jié)構(gòu)測試用例的設(shè)計有以下4種模式,如圖4-7所示。,圖4-7 循環(huán)測試的模式,4.3.2 變異測試,變異測試是一種故障驅(qū)動測試,即針對某一類特定程序故障進行的測試,變異測試也是一種比較成熟的排錯性測試方法。它可以通過檢驗測試數(shù)據(jù)集的排錯能力來判斷軟件測試的充分性。 假設(shè)對程序P進行一些微小改動而得到程序MP,程序MP就是程序P的一個變異體。 假設(shè)程序P在測試集T上是正確的,設(shè)計

8、某一變異體集合:M=MP|MP是P的變異體,若變異體集合M中的每一個元素在T上都存在錯誤,則認為源程序P的正確度較高,否則若M中的某些元素在T上運行正確,則可能存在以下一些情況: M中的這些變異體在功能上與源程序P是等價的; 現(xiàn)有的測試數(shù)據(jù)不足以找出源程序P與其變異體之間的差別; 源程序P可能產(chǎn)生故障,而其某些變異體卻是正確的。 可見,測試集T和變異體集合M中的每一個變異體MP的選擇都是很重要的,它們會直接影響變異測試的測試效果。 總之,對程序進行變換的方法多種多樣,具體操作要靠測試人員的實際經(jīng)驗。通過變異分析構(gòu)造測試數(shù)據(jù)集的過程是一個循環(huán)過程,當對源程序及其變異體進行測試后,若發(fā)現(xiàn)某些變異體

9、并不理想,就要適當增加測試數(shù)據(jù),直到所有變異體達到理想狀態(tài),即變異體集合中的每一個變異體在T上都存在錯誤。,4.3.3 程序插裝,程序插裝是借助于在被測程序中設(shè)置斷點或打印語句來進行測試的方法,在執(zhí)行測試的過程中可以了解一些程序的動態(tài)信息。這樣在運行程序時,既能檢驗測試的結(jié)果數(shù)據(jù),又能借助插入語句給出的信息掌握程序的動態(tài)運行特性,從而把程序執(zhí)行過程中所發(fā)生的重要事件記錄下來。 程序插裝設(shè)計時主要需要考慮三方面因素: (1)需要探測哪些信息; (2)在程序的什么位置設(shè)立插裝點; (3)計劃設(shè)置多少個插裝點。 插裝技術(shù)在軟件測試中主要有以下幾個應用: 覆蓋分析: 程序插裝可以估計程序控制流圖中被覆

10、蓋的程度,確定測試執(zhí)行的充分性,從而設(shè)計更好的測試用例,提高測試覆蓋率。 監(jiān)控 在程序的特定位置設(shè)立插裝點,插入用于記錄動態(tài)特性的語句,用來監(jiān)控程序運行時的某些特性,從而排除軟件故障。 查找數(shù)據(jù)流異常 程序插裝可以記錄在程序執(zhí)行中某些變量值的變化情況和變化范圍。掌握了數(shù)據(jù)變量的取值狀況,就能準確地判斷是否發(fā)生數(shù)據(jù)流異常。雖然數(shù)據(jù)流異??梢杂渺o態(tài)分析器來發(fā)現(xiàn),但是使用插裝技術(shù)可以更經(jīng)濟更簡便,畢竟所有信息的獲取是隨著測試過程附帶得到的。,4.4 實例設(shè)計,實例1運用邏輯覆蓋的方法測試程序 程序4-4: 1If (x1 運用邏輯覆蓋的方法設(shè)計測試用例組,如表4-10所示。,實例2 運用路徑分析的方

11、法測試程序 程序4-5: 1main () 2 3 int flag, t1, t2, a=0, b=0; 4 scanf (“%d, %d, %dn”, 23 ,程序的流程圖如圖4-8所示:,圖4-8 程序4-5的流程圖,2.程序的控制流圖如圖4-9所示,其中R1、R2、R3和R4代表控制流圖的4個區(qū)域。R4代表的是控制流圖外的區(qū)域,也算作控制流圖的一個區(qū)域。,圖4-9 程序4-5的控制流圖,3.運用路徑分析的方法設(shè)計測試用例組。 (1) 根據(jù)程序環(huán)形復雜度的計算公式,求出程序路徑集合中的獨立路徑數(shù)目。 公式1:V(G)=11-9+2,其中10是控制流圖G中邊的數(shù)量,8是控制流圖中節(jié)點的數(shù)目

12、。 公式2:V(G)=3+1,其中3是控制流圖G中判斷節(jié)點的數(shù)目。 公式3:V(G)=4,其中4是控制流圖G中區(qū)域的數(shù)目。 因此,控制流圖G的環(huán)形復雜度是4。 (2) 根據(jù)上面環(huán)形復雜度的計算結(jié)果,源程序的基本路徑集合中有4條獨立路徑: 路徑1:5-22 路徑2:5-7, 8-11, 12-21-5-22 路徑3:5-7, 8-16-17-19-21-5-22 路徑4:5-7, 8-16-18-19-21-5-22 (3)設(shè)計測試用例組11如表4-11所示。根據(jù)上述4條獨立路徑設(shè)計出了這組測試用例,其中的4組數(shù)據(jù)能夠遍歷各個獨立路徑,也就滿足了路徑分析測試的要求。 需要注意的是,對于源程序中的

13、循環(huán)體,測試用例組11中的輸入數(shù)據(jù)使其執(zhí)行零次或一次。,表4-11 測試用例組11,小結(jié),白盒測試是基于被測程序的源代碼設(shè)計測試用例的測試方法。常見的白盒測試方法有邏輯覆蓋測試和路徑分析測試兩大類。 在邏輯覆蓋測試中,按照覆蓋策略由弱到強的嚴格程度,介紹了語句覆蓋、判斷覆蓋、條件覆蓋、判斷/條件覆蓋、條件組合覆蓋和路徑覆蓋六種覆蓋測策略。 語句覆蓋:每個語句至少執(zhí)行一次。 判定覆蓋:在語句覆蓋的基礎(chǔ)上,每個判定的每個分支至少執(zhí)行一次。 條件覆蓋:在語句覆蓋的基礎(chǔ)上,使每個判定表達式的每個條件都取到各種可能的結(jié)果。 判定/條件覆蓋:即判定覆蓋和條件覆蓋的交集。 條件組合覆蓋:每個判定表達式中條件

14、的各種可能組合都至少出現(xiàn)一次。 路徑覆蓋:每條可能的路徑都至少執(zhí)行一次,若圖中有環(huán),則每個環(huán)至少經(jīng)過一次。 在路徑分析測試中,介紹了獨立路徑測試和Z路徑覆蓋測試兩種常用方法。 獨立路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次,對程序中所有獨立路徑進行測試。它是在程序控制流圖的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,設(shè)計測試用例的方法。設(shè)計出的測試用例要保證程序的每一個可執(zhí)行語句至少要執(zhí)行一次。 Z路徑覆蓋測試是指采用簡化循環(huán)的方法進行路徑覆蓋測試。被測源程序中的循環(huán)體執(zhí)行零次或一次。 最后,介紹了其他一些白盒測試方法。循環(huán)測試是一種著重循環(huán)結(jié)構(gòu)有效性測試的測試方法。變異測試是一種故障驅(qū)

溫馨提示

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

評論

0/150

提交評論