軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)課件 第五章:白盒測試_第1頁
軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)課件 第五章:白盒測試_第2頁
軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)課件 第五章:白盒測試_第3頁
軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)課件 第五章:白盒測試_第4頁
軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)課件 第五章:白盒測試_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件測試項(xiàng)目實(shí)戰(zhàn)(第四版)第4章:白盒測試目錄CONTENTS知識儲備5.1020304添加標(biāo)題

添加標(biāo)題在此輸入您的標(biāo)題添加標(biāo)題

添加標(biāo)題在此輸入您的標(biāo)題添加標(biāo)題

添加標(biāo)題在此輸入您的標(biāo)題添加標(biāo)題

添加標(biāo)題Clickheretoenteryourtext.Clickheretoenteryourtext.Clickheretoenteryourtext.Clickheretoenteryourtext.Clickheretoenteryourtext.Clickheretoenteryourtext.5.1知識儲備第5章測試技劃白盒測試用例的設(shè)計(jì)方法從大的方面來說包括兩個:邏輯覆蓋法和基本路徑測試法。5.1.1邏輯覆蓋法邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計(jì)技術(shù),這一方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解。它是通過對程序邏輯結(jié)構(gòu)遍歷實(shí)現(xiàn)程序的覆蓋,是一系列測試過程的總稱,這組測試過程逐漸進(jìn)行越來越完整的通路測試。從覆蓋源程序語句的詳盡程度分析,邏輯覆蓋可分為:語句覆蓋(SC)、判定覆蓋(DC)、條件覆蓋(CC)、判定-條件覆蓋(CDC)、多條件覆蓋(MCC)與修正判定條件覆蓋(MCDC)。intfunction(boola,boolb,boolc)

{ intx;

x=0; if(a&&(b||c)) x=1; returnx;}

第5章白盒測試

程序流程圖如圖6-1所示。圖6-1程序流程圖第5章白盒測試一、語句覆蓋語句覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行所測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。要想使每個語句都覆蓋一次,我們設(shè)計(jì)以下的測試用例即可實(shí)現(xiàn):a=T,b=T,c=T通過上面的用例,可以實(shí)現(xiàn)執(zhí)行上述程序中的所有語句,但是語句覆蓋的方法并不能測試到程序的邏輯錯誤,比如,在if(a&&(b||c))中,&&錯寫成||,或者||錯寫成&&,上述測試用例雖然可以達(dá)到語句100%的覆蓋率,但該邏輯錯誤卻無法發(fā)現(xiàn)。因此一般認(rèn)為語句覆蓋是很弱的邏輯覆蓋法。二、判定覆蓋判定覆蓋就是設(shè)計(jì)足夠的若干個測試用例,運(yùn)行所測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,因此判定覆蓋又稱分支覆蓋。判定覆蓋比邏輯覆蓋稍強(qiáng)。除了雙值(“真”或“假”)的判定語句以外,還有多值判定語句,如case語句,因此判定覆蓋更一般的含義是:使得每一個判定獲得每一種可能的結(jié)果至少一次。以上述代碼為例,構(gòu)造下面的測試用例即可實(shí)現(xiàn)判定覆蓋標(biāo)準(zhǔn):a=T,b=T,c=Ta=F,b=F,c=F第5章白盒測試試用上述用例測試代碼,它不僅滿足了判定覆蓋,而且包含滿足了語句覆蓋,因此判定覆蓋比語句覆蓋更強(qiáng)。但是,假設(shè)本段程序中有邏輯錯誤,第一個運(yùn)算符&&錯寫成了||,或者第二個運(yùn)算符錯寫成了&&。這時,雖然上述測試用例可以達(dá)到100%的判定覆蓋(真假條件都走了一遍),但是并不能發(fā)現(xiàn)上述的邏輯錯誤,如表6-1所示,當(dāng)a=T,b=T,c=T時,a&&(b||c)如預(yù)期一樣為T,但是如果把a(bǔ)&&(b||c)錯寫成a||(b||c),其結(jié)果仍然為T,并不能發(fā)現(xiàn)這個邏輯錯誤。因此需要更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)。

序號abca&&(b||c)a||(b||c)判定覆蓋1TTTTT502FFFFF50三、條件覆蓋由于程序中的判定條件可能是由多個條件組合而成的復(fù)合條件,條件覆蓋就是設(shè)計(jì)若干個測試用例,運(yùn)行所測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。按照這個想法,設(shè)計(jì)一個測試用例,使得上述代碼達(dá)到100%的條件覆蓋:a=F,b=T,c=Fa=T,b=F,c=T經(jīng)過研究可以發(fā)現(xiàn),上述兩個測試用例,在滿足了條件覆蓋的同時,也覆蓋了兩個分支條件,但是,如果選用下面的測試用例:a=F,b=T,c=Ta=T,b=F,c=F你會發(fā)現(xiàn),它們滿足了條件覆蓋,但并沒有滿足判定覆蓋,如表6-2所示。那么為了解決這個問題,需要對條件和分支兼顧。第5章白盒測試表6-2條件覆蓋序號abca&&(b||c)條件覆蓋判定覆蓋1TTTT100502FFFF四、判定-條件覆蓋判定-條件覆蓋就是設(shè)計(jì)足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷的所有可能判斷結(jié)果也至少執(zhí)行一次。針對代碼中的條件,選用下面的測試用例:a=T,b=T,c=Ta=F,b=F,c=F但是如前所述,這時雖然可以滿足判定-條件覆蓋,仍無法測試出一些邏輯錯誤,如表6-3所示。

序號abca&&(b||c)a&&

(b&&c)判定-條件覆蓋%1TTTTT1002FFFFF表6-3判定-條件覆蓋第5章白盒測試五、條件組合覆蓋條件組合覆蓋也稱多條件覆蓋,就是設(shè)計(jì)足夠的測試用例,運(yùn)行所測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次,顯然滿足條件組合覆蓋的測試用例一定是滿足判定覆蓋、條件覆蓋和判定-條件覆蓋的。我們用排列組合的方法得出測試用例,該例子代碼中的判定語句有三個邏輯條件a,b,c,每個邏輯條件有兩種可能取值,因此共有23種可能的組合,如表6-4所示,滿足了條件組合覆蓋。序號abca&&(b||c)1TTTT2TTFT3TFTT4TFFF5FTTF6FTFF7FFTF8FFFF表6-4條件組合覆蓋雖然上述測試用例滿足了條件組覆蓋,但是一旦判定語句中的邏輯條件較多時,排列組合的數(shù)目是非常巨大的。第5章白盒測試六、修正條件判定覆蓋修正條件判定覆蓋是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運(yùn)輸和裝備系統(tǒng)軟件認(rèn)證標(biāo)準(zhǔn)”,目前在國外的國防、航空航天領(lǐng)域應(yīng)用廣泛。這個覆蓋度量需要足夠的測試用例來確定各個條件能夠影響到包含的判定的結(jié)果。它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點(diǎn)都要考慮至少要被調(diào)用一次,每個程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過邏輯操作符(and和or)連接的bool條件,每個條件對于判定的結(jié)果值是獨(dú)立的??梢栽O(shè)計(jì)如表6-5所示的測試用例,在這些用例的基礎(chǔ)上,按照修正條件判定覆蓋要求的條件選擇需要的用例。表6-5修正條件判定覆蓋序號abca&&(b||c)abc1TTTT5

2TTFT64

3TFTT7

44TFFF

235FTTF1

6FTFF2

7FFTF3

8FFFF

由表6-4可知,a可以通過用例1和5達(dá)到修正條件判定覆蓋的要求(用例2和6或用例3和7也可以滿足相應(yīng)要求),變量b可以通過用例2和4達(dá)到修正條件判定覆蓋的要求,變量c可以通過用例3和4達(dá)到修正條件判定覆蓋的要求,因此使用用例集{1,2,3,4,5}即可滿足修正條件判定覆蓋的要求。當(dāng)然,這不是唯一的用例組合,可以用其他的組合實(shí)現(xiàn)同樣的目標(biāo)。第5章白盒測試5.2.2基本路徑測試法基本路徑測試法就是一種壓縮路徑數(shù)的方法,它在程序控制流圖的基礎(chǔ)上,通過分析控制流圖的復(fù)雜環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行的路徑的集合,然后據(jù)此設(shè)計(jì)測試用例。設(shè)計(jì)出的測試用例要保證在測試中程序的每一條可執(zhí)行語句至少執(zhí)行一次。一、程序的控制流圖控制流圖是描述程序控制流的一種圖示方式。其中基本的控制結(jié)構(gòu)對應(yīng)的圖形符號如圖6-2所示。在如圖6-2所示的圖形符號中,圓圈稱為控制流圖的一個結(jié)點(diǎn),它表示一個或多個元分支的語句或源程序語句。

圖6-2控制流程圖的圖形符號第5章白盒測試這里我們假定在流程圖中用菱形框表示的判定條件內(nèi)沒有復(fù)合條件,而一組順序處理框可以映射為一個單一的結(jié)點(diǎn)??刂屏鞒虉D中的箭頭(邊)表示控制流的方向,類似于流程圖中的流線,一條邊必須終止于一個結(jié)點(diǎn),但在選擇或者是多分支結(jié)構(gòu)中分支的匯聚處,即使匯聚處沒有執(zhí)行語句也應(yīng)該添加一個匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的部分叫區(qū)域,當(dāng)對區(qū)域計(jì)數(shù)時,圖形外的部分也應(yīng)記為一個區(qū)域。但是如果判斷中的條件表達(dá)式是復(fù)合條件,即條件表達(dá)式是由一個或多個邏輯運(yùn)算符(or、and)連接的邏輯表達(dá)式,那么需要改變復(fù)合條件的判斷為一系列只有單個條件的嵌套的判斷。例如,有下面這樣一段代碼:ifaandbthenx;代碼中的判定條件是復(fù)合邏輯的,對應(yīng)的控制流圖應(yīng)該畫成如圖6-3所示。條件語句ifaandb中條件a和條件b各有一個單個條件的判斷結(jié)點(diǎn)。第5章白盒測試二、程序環(huán)路復(fù)雜性在進(jìn)行程序的基本路徑測試時,從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確保程序中每個可執(zhí)行語句至少要執(zhí)行一次所必須的測試用例數(shù)目的上界。獨(dú)立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從控制流圖來看,一條獨(dú)立路徑是至少包含有一條在其他獨(dú)立路徑中從沒有過的邊的路徑。圖6-3控制流圖程序環(huán)路復(fù)雜度的計(jì)算方法:方法一:使用公式:V(G)=E-N+2(E是流圖中的邊數(shù),N是流程圖中的結(jié)點(diǎn)數(shù))V(G)=12-9+2=5方法二:計(jì)算獨(dú)立路徑數(shù),從控制流圖來看,一條獨(dú)立路徑就是包含一條在其他獨(dú)立路徑中從沒有用過的邊的路徑。我們可知有5條,這個方法比較麻煩。方法三:計(jì)算控制流圖中區(qū)域的數(shù)量,簡單來說就是閉合環(huán)路+外面的區(qū)域。這個題是4+1=5。第5章白盒測試三、基本路徑測試法步驟基本路徑測試法適用于模塊的詳細(xì)設(shè)計(jì)及源程序,其主要步驟如下:(1)以詳細(xì)設(shè)計(jì)或源代碼為基礎(chǔ),得出程序的控制流圖;(2)計(jì)算得到的控制流圖G的環(huán)路復(fù)雜性V(G);(3)確定線性無關(guān)的路徑的基本集;(4)生成測試用例,確?;韭窂郊忻柯窂降膱?zhí)行。voidsort(intiRecordNum,intiType)1{2intx=0;3inty=0;4while(iRecordNum-->0)5{6 if(0==iType)7 {x=y+2;break;}8else9 if(1==iType)10 x=y+10;11else12x=y+20;13}14}第5章白盒測試第一步:先分析該模塊,繪制流程圖,如圖6-4所示。該模塊是一個函數(shù),有了整型參數(shù)。控制結(jié)構(gòu)是有一個while循環(huán),循環(huán)中有一個if嵌套語句。為了講解方便,我們把該函數(shù)體中的語句進(jìn)行標(biāo)上行號。第二步:繪制控制流圖,最好先畫出程序的流程圖,再根據(jù)流程圖映射成控制流圖,如圖6-5所示。在上面的流程圖中控制結(jié)構(gòu)是使用行號來標(biāo)記的,最后的14相當(dāng)于出口。

圖6-4流程圖

圖6-5控制流圖圖6-6控制流圖在流圖中(圖6-6):(1)每一個圓,稱為流圖的結(jié)點(diǎn),代表一個或多個語句。(2)一個處理方框序列和一個菱形判斷決策框可被映射為一個結(jié)點(diǎn)。(3)流圖中的箭頭,稱為邊或連接,代表控制流的方向,類似于流程圖中的箭頭。(4)使用流程圖描述程序控制結(jié)構(gòu)。可將流程圖映射到一個相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。(5)一條邊必須終止于一個結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語句(例如:參見if-else-then結(jié)構(gòu)的符號)。(6)由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域。(7)計(jì)算區(qū)域時應(yīng)包括圖外部的范圍。如何計(jì)算環(huán)路復(fù)雜度?環(huán)路復(fù)雜度也叫圈復(fù)

溫馨提示

  • 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

提交評論