軟件工程白盒測試_第1頁
軟件工程白盒測試_第2頁
軟件工程白盒測試_第3頁
軟件工程白盒測試_第4頁
軟件工程白盒測試_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-.-可修編.白盒測試白盒測試以程序的結(jié)構(gòu)為依據(jù),所有又稱為結(jié)構(gòu)測試。早期的白盒測試把注意力放在流程圖的各個(gè)判定框,使用不同的邏輯覆蓋標(biāo)準(zhǔn)來表達(dá)對(duì)程序進(jìn)行測試的詳盡程度。隨著測試技術(shù)的發(fā)展,人們越來越重視對(duì)程序執(zhí)行路徑的考察,并且用程序圖代替流程圖來設(shè)計(jì)測試用例。為了區(qū)分這兩種白盒測試技術(shù),以下把前者稱為邏輯覆蓋測試,后者稱為路徑測試。一、邏輯覆蓋測試邏輯覆蓋測試法(LogicCoverageTesting)考察的重點(diǎn)是圖中的判定框(菱形框)。因?yàn)檫@些判定若不是與選擇結(jié)構(gòu)有關(guān),就是與循環(huán)結(jié)構(gòu)有關(guān),是決定程序結(jié)構(gòu)的關(guān)鍵成分。按照對(duì)被測程序所作測試的有效程度,邏輯覆蓋測試可由弱到強(qiáng)區(qū)分為5種覆蓋標(biāo)準(zhǔn):發(fā)現(xiàn)錯(cuò)誤的能力弱強(qiáng)語句覆蓋每條語句至少執(zhí)行一次判定覆蓋每一判定的每個(gè)分支至少執(zhí)行一次條件覆蓋每一判定中的每個(gè)條件,分別按“真”、“假”至少各執(zhí)行一次判定/條件覆蓋同時(shí)滿足判定覆蓋和條件覆蓋的要求條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次舉例說明:有一個(gè)程序段如下:(A>1)(B=(A>1)(B=0)(A=2)(x>1)x=x/ax=x+1abFTcdFTe語句覆蓋:設(shè)計(jì)若干個(gè)測試用例,運(yùn)行被測程序,使得每一個(gè)可執(zhí)行語句至少執(zhí)行一次。例如在上圖所給出的例子中,正好所有的可執(zhí)行語句都在路徑L1(a->c->e)上,所以選擇路徑L1設(shè)計(jì)測試用例,就可以覆蓋所有的可執(zhí)行語句。L1(a->c->e)={(A>1)and(B=0)}and{(A=2)or(x/A>1)}=(A=2)and(B=0)or{(A>1)and(B=0)and(x/A>1)}測試用例可以設(shè)計(jì)為:【(2,0,4),(2,0,3)】覆蓋ace【L1】從程序中每個(gè)可執(zhí)行語句都得到執(zhí)行這一點(diǎn)來看,語句覆蓋的法似乎能夠比較全面的檢驗(yàn)每一個(gè)可執(zhí)行語句。但與后面介紹的其它覆蓋相比,語句覆蓋是最弱的邏輯覆蓋準(zhǔn)則。判定覆蓋所謂判定覆蓋就是設(shè)計(jì)若干個(gè)測試用例,運(yùn)行被測試程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。如上例如果選擇路徑L1(a->c->e)和L2(a->b->d),可得滿足要求得測試用例:L2(a->b->d)={(A<=1)or(B≠0)}and{(A≠2)and(x<=1)}=(A<=1)and(x<=1)or{(B≠0)and(A≠2)and(x<=1)}測試用例可以設(shè)計(jì)為:【(2,0,4),(2,0,3)】覆蓋ace【L1】【(1,1,1),(1,1,1)】覆蓋abd【L2】如果選取路徑L3(a->b->e)和L4(a->c->d)L3(a->b->e)={(A<=1)or(B≠0)}and{(A=2)or(x>1)}={(A<=1)and(x>1)}or{(B≠0)and(A=2)}or{(B≠0)and(x>1)}L4(a->c->d)={(A>1)and(B=0)}and{(A≠2)and(x/A<=1)}還可以得到另一組可用得測試用例:【(2,1,1),(2,1,2)】覆蓋abe【L3】【(3,0,3),(3,1,1)】覆蓋acd【L4】所有測試用例得取法不唯一。注意有例外情況,例如,如果把上例中第二個(gè)判定中的條件x>1錯(cuò)寫成x<1,那么利用上面兩組測試用例,仍能得到同樣的結(jié)果。這表明,只是判定覆蓋,還不能保證一定能查出在判斷得條件中存在得錯(cuò)誤。因此還需要更強(qiáng)的邏輯覆蓋準(zhǔn)則檢驗(yàn)判斷部條件。條件覆蓋所謂條件覆蓋就是設(shè)計(jì)若干個(gè)測試用例,運(yùn)行被測程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。上例中,我們事先可對(duì)所有條件得取值加以標(biāo)記。例如:對(duì)于第一個(gè)判斷:條件A>1取真值為T1,取假值為T1條件B=1取真值為T2,取假值為T2對(duì)于第二個(gè)判斷:條件A=2取真值為T3,取假值為T3條件x>1取真值為T4,取假值為T4則可選取測試用例如下:測試用例通過路徑條件取值覆蓋分支【(2,0,4),(2,0,3)】ace(L1)T1T2T3T4c,e【(1,0,1),(1,0,1)】abd(L2)T1T2T3T4b,d【(2,1,1),(2,1,2)】abe(L3)T1T2T3T4b,e或測試用例通過路徑條件取值覆蓋分支【(1,0,3),(1,0,4)】abe(L3)T1T2T3T4c,e【(2,1,1),(2,1,2)】abe(L3)T1T2T3T4b,d注意,前一組測試用例不但覆蓋了所有判斷得取真分支和取假分支,而且覆蓋了判斷中所有條件得可能取值。但是后一組測試用例雖滿足了條件覆蓋,但只覆蓋了第一個(gè)判斷得取假分支和第二個(gè)判斷得取真分支,不滿足判定覆蓋得要求。為了解決這一矛盾,需要對(duì)條件和分支兼顧,有必要考慮以下得判定-條件覆蓋。判定-條件覆蓋所謂判定-條件覆蓋就是設(shè)計(jì)足夠的測試用例,使得判斷中每個(gè)條件得所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。上例中可以設(shè)計(jì)如下測試用例:測試用例通過路徑條件取值覆蓋分支【(2,0,4),(2,0,3)】ace(L1)T1T2T3T4c,e【(1,1,1),(1,1,1)】abd(L2)T1T2T3T4b,d判定-條件覆蓋也有缺陷。從表面上來看,它測試了所有條件得取值,但是事實(shí)并非如此。因?yàn)橥承l件掩蓋了另一些條件。對(duì)于條件表達(dá)式(A>1)and(B=0)來說,若(A>1)的測試結(jié)果為真,則還有測試(B=0),才能決定表達(dá)式得值;而若(A>1)的測試結(jié)果為假,可以立刻確定表達(dá)式得結(jié)果為假。這時(shí)往往就不再測試(B=0)的取值了。因此,條件(B=0)就沒有檢查。同樣,對(duì)于條件表達(dá)式(A=2)or(X>1)來說,若(A=2)得測試結(jié)果為真,就可以立即確定表達(dá)式的結(jié)果為真。這時(shí),條件(X>1)就沒有檢查。因此,采用判定-條件覆蓋,邏輯表達(dá)式中的錯(cuò)誤不一定能夠查得出來。條件組合覆蓋所謂條件組合覆蓋就是設(shè)計(jì)足夠得測試用例,運(yùn)行被測程序,使得每個(gè)判斷得所有可能得條件取值組合至少執(zhí)行一次。上例中,先對(duì)各個(gè)判斷得條件取值組合加以標(biāo)記。如下:記A>1,B=0作T1T2,屬第一個(gè)判斷得取真分支;A>1,B≠0作T1T2,屬第一個(gè)判斷得取假分支;A≯1,B=0作T1T2,屬第一個(gè)判斷得取假分支;A≯1,B≠0作T1T2,屬第一個(gè)判斷得取假分支;A=2,x>1作T3T4,屬第二個(gè)判斷得取真分支;A=2,x≯1作T3T4,屬第二個(gè)判斷得取真分支;A≠2,x>1作T3T4,屬第二個(gè)判斷得取真分支;A≠2,x≯1作T3T4,屬第二個(gè)判斷得取假分支;對(duì)于每個(gè)判斷,要求所有可能得條件取值得組合都必須取到。測試用例如下:測試用例通過路徑條件取值覆蓋分支【(2,0,4),(2,0,3)】ace(L1)T1T2T3T4①,⑤【(2,1,1),(2,1,2)】abe(L3)T1T2T3T4②,⑥【(1,0,3),(1,0,4)】abe(L3)T1T2T3T4③,⑦【(1,1,1),(1,1,1)】abd(L2)T1T2T3T4④,⑧這組測試用例覆蓋了所有條件得可能取值的組合,覆蓋了所有判斷得可取分支,但路徑漏掉了L4。測試還不完全。六種白盒子測試法:語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組...白盒測試的概述由于邏輯錯(cuò)誤和不正確假設(shè)與一條程序路徑被運(yùn)行的可能性成反比。由于我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行,而事實(shí)上,它可能在正常的情況下被執(zhí)行。由于代碼中的筆誤是隨機(jī)且無法杜絕的,因此我們要進(jìn)行白盒測試。白盒測試又稱結(jié)構(gòu)測試,透明盒測試、邏輯驅(qū)動(dòng)測試或基于代碼的測試。白盒測試是一種測試用例設(shè)計(jì)法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子部的東西以及里面是如運(yùn)作的。白盒的測試用例需要做到:·保證一個(gè)模塊中的所有獨(dú)立路徑至少被使用一次·對(duì)所有邏輯值均需測試true和false·在上下邊界及可操作圍運(yùn)行所有循環(huán)·檢查部數(shù)據(jù)結(jié)構(gòu)以確保其有效性白盒測試的目的:通過檢查軟件部的邏輯結(jié)構(gòu),對(duì)軟件中的邏輯路徑進(jìn)行覆蓋測試;在程序不同地設(shè)立檢查點(diǎn),檢查程序的狀態(tài),以確定實(shí)際運(yùn)行狀態(tài)與預(yù)期狀態(tài)是否一致。白盒測試的特點(diǎn):依據(jù)軟件設(shè)計(jì)說明書進(jìn)行測試、對(duì)程序部細(xì)節(jié)的密檢驗(yàn)、針對(duì)特定條件設(shè)計(jì)測試用例、對(duì)軟件的邏輯路徑進(jìn)行覆蓋測試。白盒測試的實(shí)施步驟:1.測試計(jì)劃階段:根據(jù)需求說明書,制定測試進(jìn)度。2.測試設(shè)計(jì)階段:依據(jù)程序設(shè)計(jì)說明書,按照一定規(guī)化的法進(jìn)行軟件結(jié)構(gòu)劃分和設(shè)計(jì)測試用例。3.測試執(zhí)行階段:輸入測試用例,得到測試結(jié)果。4.測試總結(jié)階段:對(duì)比測試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯(cuò)誤原因,找到并解決錯(cuò)誤。白盒測試的法:總體上分為靜態(tài)法和動(dòng)態(tài)法兩大類。靜態(tài)分析是一種不通過執(zhí)行程序而進(jìn)行測試的技術(shù)。靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。動(dòng)態(tài)分析的主要特點(diǎn)是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后,對(duì)軟件系統(tǒng)行為的分析。動(dòng)態(tài)分析包含了程序在受控的環(huán)境下使用特定的期望結(jié)果進(jìn)行正式的運(yùn)行。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。在動(dòng)態(tài)分析技術(shù)中,最重要的技術(shù)是路徑和分支測試。下面要介紹的六種覆蓋測試法屬于動(dòng)態(tài)分析法。黑盒測試(black—boxtesting)又稱功能測試、數(shù)據(jù)\o"驅(qū)動(dòng)"驅(qū)動(dòng)測試或基于規(guī)的測試。用這種法進(jìn)行測試時(shí),被測程序被當(dāng)作看不見部的黑盒。在完全不考慮程序部結(jié)構(gòu)和部特性的情況下,測試者僅依據(jù)程序功能的需求規(guī)考慮確定測試用例和推斷測試結(jié)果的正確性。因此黑盒測試是從用戶觀點(diǎn)出發(fā)的測試,黑盒測試直觀的想法就是既然程序被規(guī)定做某些事,那我們就看看它是不是在任情況下都做的對(duì)。完整的“任情況”是無法驗(yàn)證的,為此黑盒測試也有一套產(chǎn)生測試用例的法,以產(chǎn)生有限的測試用例而覆蓋足夠多的“任情況”。由于黑盒測試不需要了解程序部結(jié)構(gòu),所以多高層的測試如確認(rèn)測試、系統(tǒng)測試、驗(yàn)收測試都采用黑盒測試。

黑盒測試首先是程序通常的功能性測試。要求:

每個(gè)\o"軟件"軟件特性必須被一個(gè)測試用例或一個(gè)被認(rèn)可的異常所覆蓋;用數(shù)據(jù)類型和數(shù)據(jù)值的最小集測試;用一系列真實(shí)的數(shù)據(jù)類型和數(shù)據(jù)值運(yùn)行,測試超負(fù)荷、飽和及其他“最壞情況”的結(jié)果;用假想的數(shù)據(jù)類型和數(shù)據(jù)值運(yùn)行,測試排斥不規(guī)則輸入的能力;對(duì)影響性能的關(guān)鍵模塊,如基本算法、應(yīng)測試單元性能(包括精度、時(shí)間、容量等)。

不僅要考核“程序是否做了該做的?”還要考察“程序是否沒做不該做的2”同時(shí)還要考察程序在其他一些情況下是否正常。這些情況包括數(shù)據(jù)類型和數(shù)據(jù)值的異常等等。下述幾種法:(a)等價(jià)類劃分,(b)因果圖法,(c)邊值分析法,(d)猜錯(cuò)法,(e)隨機(jī)數(shù)法,就是從更廣泛的角度來進(jìn)行黑盒測試。每一個(gè)法都力圖能涵蓋更多的“任情況”,但又各有長處,綜合使用這些法,會(huì)得到一個(gè)較好的測試用例集。1.等價(jià)類劃分

等價(jià)類劃分是一種典型的黑盒測試法。等價(jià)類是指某個(gè)輸入域的集合。它表示對(duì)揭露程序中的錯(cuò)誤來說,集合中的每個(gè)輸入條件是等效的。因此我們只要在一個(gè)集合中選取一個(gè)測試數(shù)據(jù)即可。等價(jià)類劃分的辦法是把程序的輸入域劃分成若干等價(jià)類,然后從每個(gè)部分中選取少數(shù)代表性數(shù)據(jù)當(dāng)作測試用例。這樣就可使用少數(shù)測試用例檢驗(yàn)程序在一大類情況下的反映。

在考慮等價(jià)類時(shí),應(yīng)該注意區(qū)別以下兩種不同的情況:

有效等價(jià)類:有效等價(jià)類指的是對(duì)程序的規(guī)是有意義的、合理的輸入數(shù)據(jù)所構(gòu)成的集合。在具體問題中,有效等價(jià)類可以是一個(gè),也可以是多個(gè)。

無效等價(jià)類:無效等價(jià)類指對(duì)程序的規(guī)是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對(duì)于具體的問題,無效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。

確定等價(jià)類有以下幾條原則:

如果輸入條件規(guī)定了取值圍或值的個(gè)數(shù),則可確定一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。例如,程序的規(guī)中提到的輸入條包括“……項(xiàng)數(shù)可以從1到999……”,則可取有效等價(jià)類為“l(fā)考項(xiàng)數(shù)<999”,無效等價(jià)類為“項(xiàng)數(shù)<l,,及“項(xiàng)數(shù)>999”。

輸入條件規(guī)定了輸入值的集合,或是規(guī)定了“必須如”的條件,則可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。如某程序涉及標(biāo)識(shí)符,其輸入條件規(guī)定“標(biāo)識(shí)符應(yīng)以字母開頭……”則“以字母開頭者”作為有效等價(jià)類,“以非字母開頭”作為無效等價(jià)類。

如果我們確知,已劃分的等價(jià)類中各元素在程序中的處理式是不同的,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小等價(jià)類。

輸入條件有效等價(jià)類無效等價(jià)類

。。。。。。

。。。。。。。。。。。。

。。。。。。。。。。。。

。。。。。。

根據(jù)已列出的等價(jià)類表,按以下步驟確定測試用例:

為每個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào);

設(shè)計(jì)一個(gè)測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價(jià)類。重復(fù)這一步,最后使得所有有效等價(jià)類均被測試用例所覆蓋;

設(shè)計(jì)一個(gè)新的測試用例,使其只覆蓋一個(gè)無效等價(jià)類。重復(fù)這一步,使所有無效等價(jià)類均被覆蓋。這里強(qiáng)調(diào)每次只覆蓋一個(gè)無效等價(jià)類。這是因?yàn)橐粋€(gè)測試用例中如果含有多個(gè)缺陷,有可能在測試中只發(fā)現(xiàn)其中的一個(gè),另一些被忽視。等價(jià)類劃分法能夠全面、系統(tǒng)地考慮黑盒測試的測試用例設(shè)計(jì)問題,但是沒有注意選用一些“高效的”、“有針對(duì)性的”測試用例。后面介紹的邊值分析法可以彌補(bǔ)這一缺點(diǎn)。2.因果圖

等價(jià)類劃分法并沒有考慮到輸入情況的各種組合。這樣雖然各個(gè)輸入條件單獨(dú)可能出錯(cuò)的情況已經(jīng)看到了,但多個(gè)輸入情況組合起來可能出錯(cuò)的情況卻被忽略。采用因果圖法能幫助我們按一定步驟選擇一組高效的測試用例,同時(shí),還能為我們指出程序規(guī)的描述中存在什么問題。

利用因果圖導(dǎo)出測試用例需要經(jīng)過以下幾個(gè)步驟:

分析程序規(guī)的描述中哪些是原因,哪些是結(jié)果。原因常常是輸入條件或是輸入條件的等價(jià)類。結(jié)果是輸出條件。

分析程序規(guī)的描述中語義的容,并將其表示成連接各個(gè)原因與各個(gè)結(jié)果的“因果圖”。

由于語法或環(huán)境的限制,有些原因和結(jié)果的組合情況是不可能出現(xiàn)的。為表明這些特定的情況,在因果圖上使用持殊的符號(hào)標(biāo)明約束條件。把因果圖轉(zhuǎn)換成判定表。把判定表的每一列寫成一個(gè)測試用例。3.邊值分析法

邊值分析法是列出單元功能、輸入、狀態(tài)及控制的合法邊界值和非法邊界值,設(shè)計(jì)測試用例,包含全部邊界值的法。典型地包括IF語句中的判別值,定義域、值域邊界,空或畸形輸入,末受控狀態(tài)等。邊值分析法不是一類找一個(gè)例子的法,而是以邊界情況的處理作為主要目標(biāo)專門設(shè)計(jì)測試用例的法。另外,邊值分析不僅考查輸入的邊值,也要考慮輸出的邊值。這是從人們的經(jīng)驗(yàn)得出的一種有效法。人們發(fā)現(xiàn)多軟件錯(cuò)誤只是在下標(biāo)、數(shù)據(jù)結(jié)構(gòu)和標(biāo)量值的邊界值及其上、下出現(xiàn),運(yùn)行這個(gè)區(qū)域的測試用例發(fā)現(xiàn)錯(cuò)誤的概率很高。

用邊值分析法設(shè)計(jì)測試用例時(shí),有以下幾條原則:

如果輸入條件規(guī)定了取值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論