《軟件測(cè)試技術(shù)》課件第4章_第1頁
《軟件測(cè)試技術(shù)》課件第4章_第2頁
《軟件測(cè)試技術(shù)》課件第4章_第3頁
《軟件測(cè)試技術(shù)》課件第4章_第4頁
《軟件測(cè)試技術(shù)》課件第4章_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章黑盒測(cè)試第4章黑盒測(cè)試4.1邊界值測(cè)試4.2等價(jià)類測(cè)試4.3基于判定表的測(cè)試4.4因果圖4.5其他黑盒測(cè)試方法4.6綜合案例4.7本章小結(jié) 4.1邊?界?值?測(cè)?試

任何一個(gè)程序都可以看做是一個(gè)函數(shù),程序的輸入構(gòu)成函數(shù)的定義域,程序的輸出構(gòu)成函數(shù)的值域。人們從長期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在定義域或值域(輸出)的邊界上,而不是在其內(nèi)部。對(duì)于軟件缺陷,有句諺語形容得很恰當(dāng),即“缺陷遺漏在角落里,聚集在邊界上”。比如,在做三角形計(jì)算時(shí),要輸入三角形的三個(gè)邊長A、B和C。這三個(gè)數(shù)值應(yīng)當(dāng)滿足A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能構(gòu)成三角形。但如果把六個(gè)不等式中的任何一個(gè)大于號(hào)“>”錯(cuò)寫成大于等于號(hào)“≥”,那就不能構(gòu)成三角形。問題常常出現(xiàn)在容易被疏忽的邊界附近。類似的例子還有很多,如計(jì)數(shù)器常?!吧儆浺淮巍保谎h(huán)條件應(yīng)該是“≤”時(shí)錯(cuò)誤地寫成了“<”;數(shù)組下標(biāo)越界(在C語言中數(shù)組下標(biāo)是從零開始,可能錯(cuò)誤地認(rèn)為是從1開始,從而使最后一個(gè)元素的下標(biāo)越界)等。

邊界值分析關(guān)注的是輸入空間的邊界,從中標(biāo)識(shí)測(cè)試用例。邊界值測(cè)試背后的基本原理是錯(cuò)誤更可能出現(xiàn)在輸入變量的極值附近。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。4.1.1邊界條件

邊界條件就是一些特殊情況。一般的,在條件C下,軟件執(zhí)行一種操作,對(duì)任意小的值σ,條件C+σ或C-σ會(huì)執(zhí)行另外的操作,則C就是一個(gè)邊界。

在多數(shù)情況下,邊界條件是基于應(yīng)用程序的功能設(shè)計(jì)而需要考慮的因素,可以從軟件的規(guī)格說明或常識(shí)中得到。比如程序要對(duì)學(xué)生成績進(jìn)行處理,要求輸入數(shù)據(jù)的范圍是[0,100],則很明顯輸入條件的邊界是0和100。

然而,在測(cè)試用例設(shè)計(jì)過程中,某些邊界條件是不需要呈現(xiàn)給用戶的,或者說用戶是很難注意到的,但同時(shí)確實(shí)屬于檢驗(yàn)范疇內(nèi)的邊界條件,稱為內(nèi)部邊界條件或次邊界條件。

內(nèi)部邊界條件主要有下面幾種。

1.?dāng)?shù)值的邊界值

計(jì)算機(jī)是基于二進(jìn)制進(jìn)行工作的,因此,軟件的任何數(shù)值運(yùn)算都有一定的范圍限制。比如一個(gè)字節(jié)由8位組成,一個(gè)字節(jié)所能表達(dá)的數(shù)值范圍是[0,255]。表4-1-1列出了計(jì)算機(jī)中常用數(shù)值的范圍。

2.字符的邊界值

在計(jì)算機(jī)軟件中,字符也是很重要的表示元素。其中ASCII和Unicode是常見的編碼方式。表4-1-2中列出了一些常用字符對(duì)應(yīng)的ASCII碼值。如果要測(cè)試文本輸入或文本轉(zhuǎn)換的軟件,在定義數(shù)據(jù)區(qū)間包含哪些值時(shí),就可以參考ASCII碼表,找出隱含的邊界條件。

3.其他邊界條件

有一些邊界條件容易被人忽略,比如在文本框中不是沒有輸入正確的信息,而是根本就沒有輸入任何內(nèi)容,然后就按“確認(rèn)”按鈕。這種情況常常被遺忘或忽視了,但在實(shí)際使用中卻時(shí)常發(fā)生。因此在測(cè)試時(shí)還需要考慮程序?qū)δJ(rèn)值、空白、空值、零值、無輸入等情況的反應(yīng)。

在進(jìn)行邊界值測(cè)試時(shí),如何確定邊界條件的取值呢?一般情況下,確定邊界值應(yīng)遵循以下幾條原則:

(1)如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值,以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)。

(2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù)、最小個(gè)數(shù)、比最小個(gè)數(shù)少一、比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù)。

(3)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試數(shù)據(jù)。

(4)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試數(shù)據(jù)。

(5)分析規(guī)格說明,找出其他可能的邊界條件。4.1.2邊界值分析

為便于理解,以下討論涉及兩個(gè)輸入變量x1和x2的函數(shù)F。假設(shè)x1和x2分別在下列范圍內(nèi)取值:a≤x1≤b;c≤x2≤d。

函數(shù)F的輸入空間如圖4-1-1所示。矩形陰影中的任何一點(diǎn)都是函數(shù)F的有效輸入。圖4-1-1兩個(gè)變量函數(shù)的輸入域邊界值分析的基本思想是使用輸入變量的最小值、略大于最小值、正常值、略小于最大值和最大值設(shè)計(jì)測(cè)試用例。通常我們用min、min+、nom、max-和max來表示。

當(dāng)一個(gè)函數(shù)或程序有兩個(gè)及兩個(gè)以上的輸入變量時(shí),就需要考慮如何組合各變量的取值。我們可根據(jù)可靠性理論中的單缺陷假設(shè)和多缺陷假設(shè)來考慮。單缺陷假設(shè)是指“失效極少是由兩個(gè)或兩個(gè)以上的缺陷同時(shí)發(fā)生引起的”。依據(jù)單缺陷假設(shè)來設(shè)計(jì)測(cè)試用例,只讓一個(gè)變量取邊界值,其余變量取正常值。多缺陷假設(shè)是指“失效是由兩個(gè)或兩個(gè)以上缺陷同時(shí)作用引起的”。因此依據(jù)多缺陷假設(shè)來設(shè)計(jì)測(cè)試用例,要求在選取測(cè)試用例時(shí)同時(shí)讓多個(gè)變量取邊界值。在邊界值分析中,用到了單缺陷假設(shè),即選取測(cè)試用例時(shí)僅僅使得一個(gè)變量取極值,其他變量均取正常值。對(duì)于有兩個(gè)輸入變量的程序P,其邊界值分析的測(cè)試用例如下:

{<x1nom,x2min>,<x1nom,x2min+>,<x1nom,x2nom>,<x1nom,x2max->,<x1nom,x2max>,<x1min,x2nom>,<x1min+,x2nom>,<x1max-,x2nom>,<x1max,x2nom>}

對(duì)于有兩個(gè)輸入變量的程序P,其邊界值分析的測(cè)試用例在圖中的位置如圖4-1-2所示。圖4-1-2兩個(gè)變量函數(shù)的邊界值分析例如,有一個(gè)二元函數(shù)f(x,y),要求輸入變量x,y分別滿足:x∈[1,12],y∈[1,31]。采用邊界值分析法設(shè)計(jì)測(cè)試用例,可以選擇下面一組測(cè)試數(shù)據(jù):{<1,15>,<2,15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>,<6,30>,<6,31>}。

對(duì)于一個(gè)含有n個(gè)輸入變量的程序,使除一個(gè)以外的所有變量取正常值,剩余的一個(gè)變量依次取最小值、略大于最小值、正常值、略小于最大值和最大值,并對(duì)每個(gè)變量重復(fù)進(jìn)行。因此,對(duì)于有n個(gè)輸入變量的程序,邊界值分析會(huì)產(chǎn)生4n+1個(gè)測(cè)試用例。例如,有一個(gè)三元函數(shù)f(x,y,z),其中x∈[0,100],y∈[1,12],z∈[1,31],對(duì)該函數(shù)采用邊界值分析法設(shè)計(jì)的測(cè)試用例將會(huì)得到13個(gè)測(cè)試用例,根據(jù)邊界分析的原理,可得到下列測(cè)試數(shù)據(jù):{<50,6,1>,<50,6,2>,<50,6,30>,<50,6,31>,<50,1,15>,<50,2,15>,<50,11,15>,<50,12,15>,<0,6,15>,<1,6,15>,<99,6,15>,<100,6,15>,<50,6,15>}。4.1.3健壯性邊界測(cè)試

健壯性是指在異常情況下,軟件還能正常運(yùn)行的能力。健壯性可衡量軟件對(duì)于規(guī)范要求以外的輸入情況的處理能力。所謂健壯的系統(tǒng),是指對(duì)于規(guī)范要求以外的輸入能夠判斷出這個(gè)輸入不符合規(guī)范要求,并能有合理的處理方式的系統(tǒng)。軟件設(shè)計(jì)的健壯與否直接反映了分析設(shè)計(jì)和編碼人員的水平。

健壯性邊界測(cè)試是邊界值分析的一種簡單擴(kuò)展。在使用該方法設(shè)計(jì)測(cè)試用例時(shí),既要考慮有效輸入,又要考慮無效的輸入。除了按照邊界值分析方法選取的五個(gè)取值(min、min+、nom、max-、max)外,還要選取略小于最小值(min-)和略大于最大值(max+)的取值,以觀察輸入變量超過邊界時(shí)程序會(huì)有什么表現(xiàn)。對(duì)于有兩個(gè)變量的程序P,其健壯性測(cè)試的測(cè)試用例如圖4-1-3所示。對(duì)于一個(gè)含有n個(gè)輸入變量的程序,進(jìn)行健壯性邊界測(cè)試時(shí),使除一個(gè)以外的所有變量取正常值,使剩余的那個(gè)變量依次取略小于最小值、最小值、略大于最小值、正常值、略小于最大值、最大值和略大于最大值,并對(duì)每個(gè)變量重復(fù)進(jìn)行。因此其健壯性測(cè)試會(huì)產(chǎn)生6n+1個(gè)測(cè)試用例。圖4-1-3兩個(gè)變量函數(shù)的健壯性測(cè)試用例例如,有一個(gè)二元函數(shù)f(x,y),要求輸入變量x,y分別滿足:x∈[0,100],y∈[1000,3000],對(duì)其進(jìn)行健壯性測(cè)試,則需要設(shè)計(jì)13個(gè)測(cè)試用例。根據(jù)健壯性測(cè)試的原理,可以得到下面一組測(cè)試數(shù)據(jù):{<-1,1500>,<0,1500>,<1,1500>,<50,1500>,<99,1500>,<100,1500>,<101,1500>,<50,999>,<50,1000>,<50,1001>,<50,2999>,<50,3000>,<50,3001>}。

健壯性測(cè)試最關(guān)心的是預(yù)期的輸出,而不是輸入。健壯性測(cè)試的最大價(jià)值在于觀察處理異常情況,它是檢測(cè)軟件系統(tǒng)容錯(cuò)性的重要手段。4.1.4最壞情況測(cè)試

最壞情況測(cè)試拒絕單缺陷假設(shè),它關(guān)心的是當(dāng)多個(gè)變量取極值時(shí)出現(xiàn)的情況。最壞情況測(cè)試中,對(duì)每一個(gè)輸入變量首先獲得包含最小值、略大于最小值、正常值、略小于最大值、最大值的五個(gè)元素集合的測(cè)試,然后對(duì)這些集合進(jìn)行笛卡爾積計(jì)算,以生成測(cè)試用例。

對(duì)于有兩個(gè)變量的程序P,其最壞情況測(cè)試的測(cè)試用例如圖4-1-4所示。圖4-1-4兩個(gè)變量函數(shù)的最壞情況測(cè)試用例顯然,最壞情況測(cè)試更加徹底,因?yàn)檫吔缰捣治鰷y(cè)試是最壞情況測(cè)試用例的真子集。進(jìn)行最壞情況測(cè)試意味著更多的測(cè)試工作量。n個(gè)變量的函數(shù),其最壞情況測(cè)試將會(huì)產(chǎn)生5n個(gè)測(cè)試用例,而邊界值分析只產(chǎn)生4n+1個(gè)測(cè)試用例。

健壯性最壞情況測(cè)試是最壞情況測(cè)試的擴(kuò)展,這種測(cè)試使用健壯性測(cè)試的七個(gè)元素集合的笛卡兒積,將會(huì)產(chǎn)生7n個(gè)測(cè)試用例。圖4-1-5給出了兩個(gè)變量函數(shù)的最壞情況測(cè)試用例。圖4-1-5兩個(gè)變量函數(shù)的健壯性最壞情況測(cè)試用例4.1.5案例

1.三角形問題

輸入三個(gè)整數(shù)a、b、c,分別作為三角形的三條邊,通過程序判斷這三條邊是否能構(gòu)成三角形。如果能構(gòu)成三角形,則判斷三角形的類型(等邊三角形、等腰三角形、一般三角形)。要求輸入三個(gè)整數(shù)a、b、c,必須滿足以下條件:1≤a≤100;1≤b≤100;1≤c≤100。請(qǐng)用邊界值分析法設(shè)計(jì)測(cè)試用例。用邊界值分析法設(shè)計(jì)測(cè)試用例,按照下列步驟進(jìn)行:

1)分析各變量取值

邊界值分析的基本思想是使用輸入變量的最小值、略大于最小值、正常值、略小于最大值和最大值設(shè)計(jì)測(cè)試用例。因此a、b、c的邊界取值是:1、2、50、99、100。

2)測(cè)試用例數(shù)

有n個(gè)變量的程序,其邊界值分析會(huì)產(chǎn)生4n+1個(gè)測(cè)試用例。這里有3個(gè)變量,因此會(huì)產(chǎn)生13個(gè)測(cè)試用例。

3)設(shè)計(jì)測(cè)試用例

用邊界值分析法設(shè)計(jì)測(cè)試用例就是使一個(gè)變量取邊界值(分別取最小值、略大于最小值、正常值、略小于最大值和最大值),其余變量取正常值,然后對(duì)每個(gè)變量重復(fù)進(jìn)行。本例用邊界值分析法設(shè)計(jì)的測(cè)試用例見表4-1-3。

2.NextDate函數(shù)

程序有三個(gè)輸入變量month、day、year(month、day和year均為整數(shù)值,并且滿足條件:1≤month≤12、1≤day≤31,1900≤year≤2050),分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上下一天的日期。例如,輸入為2005年11月29日,則該程序的輸出為2005年11月30日。請(qǐng)用健壯性測(cè)試法設(shè)計(jì)測(cè)試用例。用健壯性測(cè)試法設(shè)計(jì)測(cè)試用例,按照下列步驟進(jìn)行:

1)分析各變量的取值

健壯性測(cè)試時(shí),各變量分別?。郝孕∮谧钚≈?、最小值、略大于最小值、正常值、略小于最大值、最大值和略大于最大值。

month取-1,1,2,6,11,12,13。

day取-1,1,2,15,30,31,32。

year取1899,1900,1901,1975,2049,2050,2051。

2)測(cè)試用例數(shù)

有n個(gè)變量的程序,其邊界值分析會(huì)產(chǎn)生6n+1個(gè)測(cè)試用例。這里有3個(gè)變量,因此會(huì)產(chǎn)生19個(gè)測(cè)試用例。

3)設(shè)計(jì)測(cè)試用例

設(shè)計(jì)測(cè)試用例見表4-1-4。NextDate函數(shù)的復(fù)雜性來源于兩個(gè)方面:一是輸入域的復(fù)雜性(即輸入變量之間邏輯關(guān)系的復(fù)雜性);二是確定閏年的規(guī)則。但是在進(jìn)行健壯性測(cè)試時(shí),沒有考慮輸入變量之間的邏輯關(guān)系,也沒有考慮和閏年相關(guān)的問題,因此在設(shè)計(jì)測(cè)試用例時(shí)存在遺漏問題,比如判斷閏年相關(guān)的日期:2008.2.29、1999.2.28等。 4.2等?價(jià)?類?測(cè)?試

4.2.1等價(jià)類

1.等價(jià)類的劃分

等價(jià)類的重要問題是它們構(gòu)成集合的劃分。劃分是指互不相交的一組子集,這些子集的并是整個(gè)集合。劃分可定義為:給定集合B,以及B的一組子集A1、A2、…、An,這些子集是B的一個(gè)劃分,當(dāng)且僅當(dāng)A1∪A2∪…∪An=B,且i≠j時(shí),Ai∩Aj=。

劃分對(duì)于測(cè)試有非常重要的意義:

(1)各個(gè)子集的并是整個(gè)集合,這提供了一種形式的完備性;

(2)各個(gè)子集的交是空,這種互不相交保證了一種形式的無冗余性。因此采用劃分可保證某種程度的完備性,并減少冗余。

等價(jià)類劃分是將輸入定義域進(jìn)行一個(gè)劃分,并且劃分的各個(gè)子集是由等價(jià)關(guān)系決定的。這里的等價(jià)關(guān)系是指:在子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這個(gè)類中其他值的測(cè)試。也就是說,如果等價(jià)類中某個(gè)輸入條件不能導(dǎo)致問題發(fā)生,那么用該等價(jià)類中其他輸入條件進(jìn)行測(cè)試也不可能發(fā)現(xiàn)錯(cuò)誤。

等價(jià)類劃分有兩種不同的情況:有效等價(jià)類和無效等價(jià)類。

有效等價(jià)類是指對(duì)于程序的規(guī)格說明來說是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價(jià)類與有效等價(jià)類的定義恰巧相反。無效等價(jià)類是指對(duì)程序的規(guī)格說明來說是不合理的或無意義的輸入數(shù)據(jù)所構(gòu)成的集合。對(duì)于具體的問題,無效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。

在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)橛脩粼谑褂密浖r(shí),有意或無意輸入一些非法的數(shù)據(jù)是常有的事情。軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測(cè)試才能確保軟件具有更高的可靠性。

2.劃分等價(jià)類的方法

等價(jià)類測(cè)試的思想就是把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)具有代表性的數(shù)據(jù)作為測(cè)試的輸入條件,這樣可以用少量的測(cè)試數(shù)據(jù)取得較好的測(cè)試效果。

在等價(jià)類測(cè)試中,劃分等價(jià)類是非常關(guān)鍵的。如果等價(jià)類劃分合理,可以大大減少測(cè)試用例,并能保證達(dá)到要求的測(cè)試覆蓋率。那么如何劃分等價(jià)類呢?一般來講,首先要分析程序所有可能的輸入情況,然后按照下列規(guī)則對(duì)其進(jìn)行劃分。

(1)按照區(qū)間劃分。在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。例如:程序的輸入是學(xué)生成績,其范圍是0~100,則輸入條件的等價(jià)類如圖4-2-1所示。

其有效等價(jià)類為:0≤成績≤100;無效等價(jià)類為:成績<0,成績>100。圖4-2-1學(xué)生成績的等價(jià)類

(2)按照數(shù)值劃分。在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。

例如:程序輸入x取值于一個(gè)固定的枚舉類型{1,2,4,12},并且程序中對(duì)這4個(gè)數(shù)值分別進(jìn)行了處理,則有效等價(jià)類為x=1、x=2、x=4、x=12,無效等價(jià)類為1、2、4、12以外的值構(gòu)成的集合。

又如:在教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別處理。那么可以確定4個(gè)有效等價(jià)類:教授、副教授、講師和助教;1個(gè)無效等價(jià)類,它是所有不符合以上職稱的人員構(gòu)成的集合。

(3)按照數(shù)值集合劃分。在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。例如,某程序中有標(biāo)識(shí)符,其輸入條件規(guī)定“標(biāo)識(shí)符應(yīng)以字母開頭……”,則可以這樣劃分等價(jià)類:“以字母開頭者”作為有效等價(jià)類,“以非字母開頭”作為無效等價(jià)類。

(4)在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。例如:驗(yàn)證碼在登錄各種網(wǎng)站時(shí)經(jīng)常使用。驗(yàn)證碼是一種布爾型取值,True或者False。在這里我們就可劃分出一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。

(5)進(jìn)一步細(xì)分等價(jià)類。在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步地劃分為更小的等價(jià)類。例如:程序用于判斷幾何圖形的形狀,則我們可以首先根據(jù)邊數(shù)劃分出三角形、四邊形、五邊形、六邊形等。然后對(duì)于每一種類型,我們可以做進(jìn)一步的劃分,比如三角形可以進(jìn)一步分為等邊三角形、等腰三角形和一般三角形。

(6)等價(jià)類劃分還應(yīng)特別注意默認(rèn)值、空值、Null、零值等的情形。

3.等價(jià)類的特點(diǎn)

按劃分等價(jià)類的規(guī)則劃分出的等價(jià)類具有下列特點(diǎn):

(1)完備性:劃分出的各個(gè)等價(jià)類(子集)的并是輸入/輸出的全集,即程序的定義域/值域。

(2)無冗余性:各個(gè)等價(jià)類是互不相交的一組子集。

(3)等價(jià)性:劃分的各個(gè)子集是由等價(jià)關(guān)系決定的,即各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。因此我們可以從等價(jià)類中選擇一個(gè)具有代表性的數(shù)據(jù)進(jìn)行測(cè)試就可以達(dá)到測(cè)試目的。4.2.2等價(jià)類測(cè)試類型

等價(jià)類劃分既實(shí)現(xiàn)了完備性測(cè)試,又避免了冗余。在實(shí)際使用等價(jià)類方法測(cè)試時(shí),我們需要考慮等價(jià)類測(cè)試的程度,不同程度的測(cè)試將得到不同的測(cè)試效果?;趩稳毕菁僭O(shè)還是基于多缺陷假設(shè),產(chǎn)生弱等價(jià)類與強(qiáng)等價(jià)類測(cè)試之分;是否考慮無效等價(jià)類(即是否進(jìn)行無效數(shù)據(jù)的處理),產(chǎn)生健壯與一般等價(jià)類測(cè)試之分。等價(jià)類測(cè)試分為四種形式:弱一般等價(jià)類、強(qiáng)一般等價(jià)類、弱健壯等價(jià)類和強(qiáng)健壯等價(jià)類。為便于討論,下面以一個(gè)具有兩個(gè)變量x1和x2的函數(shù)F為例。如圖4-2-2所示,輸入變量x1和x2的邊界以及邊界內(nèi)的區(qū)間為

a≤x1≤d,區(qū)間為[a,b),[b,c),[c,d];

e≤x2≤g,區(qū)間為[e,f),[f,g]。圖4-2-2兩個(gè)變量的邊界及邊界內(nèi)區(qū)間劃分

1.弱一般等價(jià)類測(cè)試

弱一般等價(jià)類測(cè)試遵循單缺陷假設(shè),要求選取的測(cè)試用例覆蓋所有的有效等價(jià)類。兩個(gè)變量函數(shù)的弱一般等價(jià)類測(cè)試用例如圖4-2-3所示。圖4-2-3弱一般等價(jià)類測(cè)試用例

2.強(qiáng)一般等價(jià)類測(cè)試

強(qiáng)一般等價(jià)類測(cè)試基于多缺陷假設(shè),要求將每個(gè)變量的有效等價(jià)類做笛卡爾積,設(shè)計(jì)測(cè)試用例覆蓋笛卡爾積的每個(gè)元素。兩個(gè)變量的強(qiáng)一般等價(jià)類測(cè)試用例如圖4-2-4所示。圖4-2-4強(qiáng)一般等價(jià)類測(cè)試用例

3.弱健壯等價(jià)類測(cè)試

這里的“弱”是指等價(jià)類測(cè)試基于單缺陷假設(shè),而“健壯”是考慮了無效值。采用弱健壯等價(jià)類測(cè)試時(shí),對(duì)有效輸入,使用每個(gè)有效等價(jià)類的一個(gè)值;對(duì)無效輸入,測(cè)試用例將擁有一個(gè)無效值,并保持其余的值都是有效的。

進(jìn)行弱健壯等價(jià)類測(cè)試也就是將弱一般等價(jià)類中的五要素增添為七要素,補(bǔ)充輸入域邊界以外的值(略小于最小值min-1,略大于最大值max+1),涵蓋了有效測(cè)試和無效測(cè)試。兩個(gè)變量的弱健壯等價(jià)類測(cè)試用例如圖4-2-5所示。圖4-2-5弱健壯等價(jià)類測(cè)試用例

4.強(qiáng)健壯等價(jià)類測(cè)試

強(qiáng)健壯等價(jià)類測(cè)試是基于多缺陷假設(shè),并考慮無效的輸入。設(shè)計(jì)測(cè)試用例時(shí)需要從所有等價(jià)類的笛卡爾積的每一個(gè)元素中獲得測(cè)試用例。兩個(gè)變量的強(qiáng)健壯等價(jià)類測(cè)試用例如圖4-2-6所示。

健壯等價(jià)類測(cè)試存在以下兩個(gè)問題:

(1)需要花費(fèi)精力定義無效測(cè)試用例的期望輸出。

(2)對(duì)強(qiáng)類型的語言沒有必要考慮無效的輸入。圖4-2-6強(qiáng)健壯等價(jià)類測(cè)試用例4.2.3用等價(jià)類設(shè)計(jì)測(cè)試用例

1.劃分等價(jià)類

首先根據(jù)輸入條件或輸出條件劃分等價(jià)類。

2.建立等價(jià)類表

根據(jù)劃分的等價(jià)類建立等價(jià)類表,如表4-2-1所示。

3.選擇測(cè)試用例

從等價(jià)類中選取具有代表性的數(shù)據(jù)設(shè)計(jì)測(cè)試用例。從等價(jià)類中選擇測(cè)試用例時(shí),一般遵循下列原則:

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

(2)設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價(jià)類。重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止。

(3)設(shè)計(jì)一個(gè)測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步,直到所有的無效等價(jià)類都被覆蓋為止。4.2.4等價(jià)類測(cè)試指導(dǎo)方針

以下是等價(jià)類測(cè)試的一些觀察和等價(jià)類測(cè)試的指導(dǎo)方針:

(1)等價(jià)類測(cè)試的弱形式不如對(duì)應(yīng)的強(qiáng)形式的測(cè)試全面。

(2)如果實(shí)現(xiàn)語言是強(qiáng)類型,則沒有必要使用健壯形式的測(cè)試。

(3)如果錯(cuò)誤條件非常重要,則進(jìn)行健壯形式的測(cè)試是合適的。

(4)如果輸入數(shù)據(jù)以離散值區(qū)間和集合定義,則等價(jià)類測(cè)試是合適的。當(dāng)然也適用于如果變量值越界系統(tǒng)就會(huì)出現(xiàn)故障的系統(tǒng)。

(5)通過結(jié)合邊界值測(cè)試,等價(jià)類測(cè)試可得到加強(qiáng)。

(6)如果程序函數(shù)很復(fù)雜,則等價(jià)類測(cè)試是被指示的。在這種情況下,函數(shù)的復(fù)雜性可以幫助標(biāo)識(shí)有用的等價(jià)類。

(7)強(qiáng)等價(jià)類測(cè)試假設(shè)變量是獨(dú)立的,相應(yīng)的測(cè)試用例相乘會(huì)引起冗余問題。如果存在依賴關(guān)系,則常常會(huì)生成錯(cuò)誤測(cè)試用例。

(8)在發(fā)現(xiàn)合適的等價(jià)關(guān)系之前,可能需要進(jìn)行多次嘗試。4.2.5案例

1.電話號(hào)碼

某城市電話號(hào)碼由三部分組成,分別是:

地區(qū)碼——空白或4位數(shù)字。

前綴——為三位數(shù)字,但不能以“0”或“1”開頭。

后綴——4位數(shù)字。

假定被測(cè)程序能接受一切符合上述規(guī)定的電話號(hào)碼,拒絕所有不符合規(guī)定的電話號(hào)碼。請(qǐng)用等價(jià)類方法進(jìn)行測(cè)試,設(shè)計(jì)測(cè)試用例。

(1)根據(jù)輸入條件,劃分出有效等價(jià)類和無效等價(jià)類,如表4-2-2所示。

2.三角形問題

程序規(guī)定:“輸入三個(gè)正整數(shù)a、b、c,分別作為三角形的三條邊長。通過程序判定是否能構(gòu)成三角形。如果能構(gòu)成三角形,進(jìn)一步判斷三角形的類型。當(dāng)此三角形為一般三角形、等腰三角形及等邊三角形時(shí),分別作不同的操作。”用等價(jià)類劃分方法為該程序進(jìn)行測(cè)試用例設(shè)計(jì)。

(1)分析題目中給出的條件和隱含的輸入要求,輸入條件如下:

①正整數(shù)。

②三個(gè)數(shù)。

③構(gòu)成一般三角形。

④構(gòu)成等腰三角形。

⑤構(gòu)成等邊三角形。

⑥不能構(gòu)成三角形。

(2)根據(jù)輸入條件的要求劃分等價(jià)類,列出等價(jià)類表并編號(hào),如表4-2-4所示。

(3)設(shè)計(jì)測(cè)試用例,覆蓋上表中的等價(jià)類,如表4-2-5所示。

4.3基于判定表的測(cè)試

4.3.1判定表的組成

判定表通常由四個(gè)部分組成,如表4-3-1所示。

(1)條件樁(ConditionStub):列出了問題的所有條件。通常認(rèn)為列出的條件的次序無關(guān)緊要。

(2)動(dòng)作樁(ActionStub):列出了問題規(guī)定可能采取的操作。這些操作的排列順序沒有約束。

(3)條件項(xiàng)(ConditionEntry):列出針對(duì)它左列條件的取值。

(4)動(dòng)作項(xiàng)(ActionEntry):列出在條件項(xiàng)的各種取值情況下應(yīng)該采取的動(dòng)作。動(dòng)作項(xiàng)和條件項(xiàng)緊密相關(guān),它指出了在條件項(xiàng)的各組取值情況下應(yīng)采取的動(dòng)作。任何一個(gè)條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為規(guī)則。在判定表中貫穿條件項(xiàng)和動(dòng)作項(xiàng)的一列就是一條規(guī)則。規(guī)則指示了在規(guī)則的各條件項(xiàng)指示的條件下要采取動(dòng)作項(xiàng)中的行為。顯然,判定表中列出多少組條件取值,也就有多少條規(guī)則,即條件項(xiàng)和動(dòng)作項(xiàng)有多少列。

下面通過表4-3-2所列的實(shí)例來說明判定表各部分的含義。在表4-3-2給出的判定表中,規(guī)則1表示:如果條件1、條件2、條件3分別為真,則采取動(dòng)作1和動(dòng)作2。規(guī)則2表示:如果條件1和條件2為真,條件3為假,則采取動(dòng)作3。我們注意到,在表4-3-2的規(guī)則5中,條件3用“—”表示,意思是條件3為不關(guān)心條目。不關(guān)心條目有兩種主要解釋:條件無關(guān)或條件不適用。規(guī)則5表示:如果條件1為假、條件2為真時(shí),則采取動(dòng)作2,而不管條件3為真還是為假(或條件3不適用)。在實(shí)際使用判定表時(shí),通常要將其化簡?;喒ぷ魇且院喜⑾嗨埔?guī)則為目標(biāo)。若表中有兩條或多條規(guī)則具有相同的動(dòng)作,并且其條件項(xiàng)之間存在著極為相似的關(guān)系,我們便可設(shè)法將其合并。例如,在圖4-3-1(a)中左端的兩規(guī)則其動(dòng)作項(xiàng)一致,條件項(xiàng)中前兩個(gè)條件取值一致,只是第3個(gè)條件取值不同。這一情況表明,在第1、2條件分別取真值和假值時(shí),無論第3個(gè)條件取何值,都要執(zhí)行同一操作。也即要執(zhí)行的動(dòng)作與第3個(gè)條件項(xiàng)的取值無關(guān)。于是,我們便將這兩個(gè)規(guī)則合并。合并后的第3個(gè)條件項(xiàng)用特定的符號(hào)“—”表示與取值無關(guān)。與此類似,無關(guān)條件項(xiàng)“—”在邏輯上又可包含其他的條件項(xiàng)取值,具有相同動(dòng)作的規(guī)則還可進(jìn)一步合并,如圖4-3-1(b)所示。圖4-3-1規(guī)則合并4.3.2基于判定表的測(cè)試

為了使用判定表標(biāo)識(shí)測(cè)試用例,在這里我們把條件解釋為程序的輸入,把動(dòng)作解釋為輸出。在測(cè)試時(shí),有時(shí)條件最終引用輸入的等價(jià)類,動(dòng)作引用被測(cè)程序的主要功能處理,這時(shí)規(guī)則就解釋為測(cè)試用例。由于判定表的特點(diǎn)可以保證我們能夠取到輸入條件的所有可能的條件組合值,因此可以做到測(cè)試用例的完整集合。

使用判定表進(jìn)行測(cè)試時(shí),首先需要根據(jù)軟件規(guī)格說明建立判定表。判定表設(shè)計(jì)的步驟如下:

(1)確定規(guī)則的個(gè)數(shù)。假如有n個(gè)條件,每個(gè)條件有兩個(gè)取值(“真”和“假”),則會(huì)產(chǎn)生2n條規(guī)則。如果每個(gè)條件的取值有多個(gè)值,則規(guī)則數(shù)等于各條件取值個(gè)數(shù)的積。

(2)列出所有的條件樁和動(dòng)作樁。在測(cè)試中,條件樁一般對(duì)應(yīng)著程序輸入的各個(gè)條件項(xiàng),而動(dòng)作樁一般對(duì)應(yīng)著程序的輸出結(jié)果或要采取的操作。

(3)填入條件項(xiàng)。條件項(xiàng)就是每條規(guī)則中各個(gè)條件的取值。為了保證條件項(xiàng)取值的完備性和正確性,可以利用集合的笛卡爾積來計(jì)算。首先找出各條件項(xiàng)取值的集合,然后將各集合作笛卡爾積,最后將得到的集合的每一個(gè)元素填入規(guī)則的條件項(xiàng)中。

(4)填入動(dòng)作項(xiàng),得到初始判定表。在填入動(dòng)作項(xiàng)時(shí),必須根據(jù)程序的功能說明來填寫。首先根據(jù)每條規(guī)則中各條件項(xiàng)的取值來獲得程序的輸出結(jié)果或應(yīng)該采取的行動(dòng),然后在對(duì)應(yīng)的動(dòng)作項(xiàng)中作標(biāo)記。

(5)簡化判定表,合并相似規(guī)則(相同動(dòng)作)。若表中有兩條以上規(guī)則具有相同的動(dòng)作,并且在條件項(xiàng)之間存在極為相似的關(guān)系,便可以合并。合并后的條件項(xiàng)用符號(hào)“—”表示,說明執(zhí)行的動(dòng)作與該條件的取值無關(guān),稱為無關(guān)條件。4.3.3基于判定表測(cè)試的指導(dǎo)方針

基于判定表的測(cè)試能把復(fù)雜的問題按各種可能的情況一一列舉出來,簡明而易于理解,也可避免遺漏。但是,判定表不能表達(dá)重復(fù)執(zhí)行的動(dòng)作,例如循環(huán)結(jié)構(gòu)。

與其他測(cè)試技術(shù)一樣,基于判定表的測(cè)試對(duì)于某些應(yīng)用程序很有效,對(duì)于另一些應(yīng)用程序卻不適用。B.Beizer指出了適合使用判定表設(shè)計(jì)測(cè)試用例的條件:

(1)規(guī)格說明以判定表形式給出,或很容易轉(zhuǎn)換成判定表。

(2)條件的排列順序不會(huì)也不影響執(zhí)行哪些操作。

(3)規(guī)則的排列順序不會(huì)也不影響執(zhí)行哪些操作。

(4)每當(dāng)某一規(guī)則的條件已經(jīng)滿足,并確定要執(zhí)行的操作后,不必檢驗(yàn)別的規(guī)則。

(5)如果某一規(guī)則得到滿足要執(zhí)行多個(gè)操作,這些操作的執(zhí)行順序無關(guān)緊要。

B.Beizer提出這五個(gè)必要條件的目的是使操作的執(zhí)行完全依賴于條件的組合。其實(shí)對(duì)于某些不滿足這幾條的判定表,同樣可以借助這種方法設(shè)計(jì)測(cè)試用例,只不過尚需增加其他的測(cè)試用例罷了。

判定表對(duì)于有ifelse或者switchcase的程序,設(shè)計(jì)測(cè)試用例時(shí)非常有幫助。它更多的是一種理清思路的工具,比流程圖更為直觀,可以寫出符合需求說明的測(cè)試用例。4.3.4案例

1.考生錄取

某程序規(guī)定:“對(duì)總成績大于450分,且各科成績均高于85分或者是優(yōu)秀畢業(yè)生,應(yīng)優(yōu)先錄取,其余情況作其他處理?!闭?qǐng)建立判定表。

下面根據(jù)建立判定表的步驟來介紹如何為本例建立判定表。

1)列出所有的條件樁和動(dòng)作樁

根據(jù)問題描述的輸入條件和輸出結(jié)果,列出所有的條件樁和動(dòng)作樁。其中條件樁有三項(xiàng):

(1)總成績大于450分嗎?

(2)各科成績均高于85分嗎?

(3)是優(yōu)秀畢業(yè)生嗎?

而動(dòng)作樁有兩項(xiàng):

(1)優(yōu)先錄取。

(2)作其他處理。

2)確定規(guī)則的個(gè)數(shù)

本例中輸入有三個(gè)條件,每個(gè)條件的取值為“是”或“否”,因此有2×2×2=8種規(guī)則。

3)填入條件項(xiàng)

在填寫條件項(xiàng)時(shí),可以將各個(gè)條件取值的集合進(jìn)行笛卡爾積,得到每一列條件項(xiàng)的取值。本例就是計(jì)算{Y,N}×{Y,N}×{Y,N}={<Y,Y,Y>,<Y,Y,N>,<Y,N,Y>,<Y,N,N>,<N,Y,Y>,<N,Y,N>,<N,N,Y>,<N,N,N>},然后將所得集合中的每一個(gè)元素的值填入每一列各條件項(xiàng)中,如表4-3-3所示。

4)填入動(dòng)作樁和動(dòng)作頂

根據(jù)每一列中各條件的取值得到所要采取的行動(dòng),填入動(dòng)作樁和動(dòng)作項(xiàng),便得到初始判定表,如表4-3-3所示。

5)化簡

從表4-3-3中可以很直觀地看出規(guī)則1和規(guī)則2的動(dòng)作項(xiàng)相同,第1個(gè)條件項(xiàng)和第2個(gè)條件項(xiàng)的取值相同,只有第3個(gè)條件項(xiàng)的取值不同,滿足合并的原則。合并時(shí),第3個(gè)條件項(xiàng)成為無關(guān)條目,用“—”表示。同理,規(guī)則5和規(guī)則6可以合并,規(guī)則7和規(guī)則8可以合并。通過合并相似規(guī)則后得到簡化的判定表,如表4-3-4所示。

2.隔一日問題

程序有三個(gè)輸入變量month、day、year(month、day和year均為整數(shù)值,并且滿足條件:1≤month≤12和1≤day≤31),分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期。例如,輸入為2005年11月29日,則該程序的輸出為2005年12月1日。請(qǐng)用判定表測(cè)試法進(jìn)行測(cè)試。問題分析:年、月、日三個(gè)變量之間在輸入定義域中存在一定的邏輯依賴關(guān)系,由于等價(jià)類劃分和邊界值分析測(cè)試都假設(shè)了變量是獨(dú)立的,如果采用上述兩種方法設(shè)計(jì)測(cè)試用例,那么這些依賴關(guān)系在機(jī)械地選取輸入值時(shí)可能會(huì)丟失。而采用判定表法則可以通過使用“不可能”的概念表示條件的不可能組合來強(qiáng)調(diào)這種依賴關(guān)系。根據(jù)題目的要求,下面用基于判定表的方法進(jìn)行測(cè)試。

(1)分析各種輸入情況,列出為輸入變量month、day、year劃分的有效等價(jià)類。

month變量的有效等價(jià)類:

M1={month=4,6,9,11}

M2={month=1,3,5,7,8,10}

M3={month=12}

M4={month=2}

day變量的有效等價(jià)類:

D1={1≤day≤26}

D2={day=27}

D3={day=28}

D4={day=29}

D5={day=30}

D6={day=31}

year變量的有效等價(jià)類:

Y1={year是閏年}

Y2={year不是閏年}

(2)分析程序規(guī)格說明,結(jié)合以上等價(jià)類劃分的情況給出問題規(guī)定的可能采取的操作(即列出所有的動(dòng)作樁)??紤]各種有效的輸入情況,程序中可能采取的操作有以下六種:

a1:day+2

a2:day=1

a3:day=2

a4:month+1

a5:month=1

a6:year+1

a7:不可能

(3)根據(jù)步驟(1)和(2),畫出判定表,然后對(duì)判定表進(jìn)行化簡。簡化后的判定表如表4-3-6所示。

(4)設(shè)計(jì)測(cè)試用例。為判定表中的每一列設(shè)計(jì)一個(gè)測(cè)試用例,見表4-3-7。 4.4因果圖

4.4.1因果圖的概念

20世紀(jì)70年代,IBM進(jìn)行了一項(xiàng)工作,把自然語言書寫的需求轉(zhuǎn)換成一個(gè)形式說明,形式說明可以用來產(chǎn)生功能測(cè)試的測(cè)試實(shí)例。這個(gè)轉(zhuǎn)換過程檢查需求的語義,用輸入和輸出之間或輸入和轉(zhuǎn)換之間的邏輯關(guān)系來重新表述它們。輸入稱為原因,輸出和轉(zhuǎn)換稱為結(jié)果。通過分析得到一張反映這些關(guān)系的圖,稱為因果圖(Cause-and-EffectGraph)。

因果圖中使用了簡單的邏輯符號(hào),以直線連接左右節(jié)點(diǎn)。左節(jié)點(diǎn)表示輸入狀態(tài)(或稱原因),右結(jié)點(diǎn)表示輸出狀態(tài)(或稱結(jié)果)。通常用ci表示原因,一般置于圖的左部;ei表示結(jié)果,通常在圖的右部。ci和ei均可取值“0”或“1”,其中“0”表示某狀態(tài)不出現(xiàn),“1”表示某狀態(tài)出現(xiàn)。

因果圖中包含四種關(guān)系:

(1)恒等:若c1為1,則e1也為1;若c1為0,則e1也為0。

(2)非:若c1為1,則e1為0;若c1為0,則e1為1。

(3)或:若c1或c2或c3為1,則e1為1;若c1、c2和c3都為0,則e1為0?!盎颉笨捎腥我舛鄠€(gè)輸入。

(4)與:若c1和c2都為1,則ei為1;否則ei為0。“與”也可有任意多個(gè)輸入。

因果圖的四種關(guān)系如圖4-4-1所示。在實(shí)際問題中輸入狀態(tài)相互之間、輸出狀態(tài)相互之間可能存在某些依賴關(guān)系,稱為“約束”。為了表示原因與原因之間,結(jié)果與結(jié)果之間可能存在的約束條件,在因果圖中可以附加一些表示約束條件的符號(hào)。對(duì)于輸入條件的約束有E、I、O、R四種約束,對(duì)于輸出條件的約束只有M約束。輸入輸出約束圖形符號(hào)如圖4-4-2所示。

為便于理解,這里設(shè)c1、c2和c3表示不同的輸入條件。

E(異):表示c1、c2中至多有一個(gè)可能為1,即c1和c2不能同時(shí)為1。

I(或):表示c1、c2、c3中至少有一個(gè)是1,即c1、c2、c3不能同時(shí)為0。

O(唯一):表示c1、c2中必須有一個(gè)且僅有一個(gè)為1。

R(要求):表示c1為1時(shí),c2必須為1,即不可能c1為1時(shí)c2為0。

M(強(qiáng)制):表示如果結(jié)果e1為1,則結(jié)果e2強(qiáng)制為0。圖4-4-1因果圖的四種關(guān)系圖4-4-2輸入輸出約束圖形符號(hào)4.4.2因果圖測(cè)試法

因果圖可以很清晰地描述各輸入條件和輸出結(jié)果的邏輯關(guān)系。如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,就可以利用因果圖。因果圖最終生成的是判定表。采用因果圖設(shè)計(jì)測(cè)試用例的步驟如下:

(1)分析軟件規(guī)格說明描述中哪些是原因,哪些是結(jié)果。其中,原因常常是輸入條件或是輸入條件的等價(jià)類;結(jié)果常常是輸出條件。然后給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。并且把原因和結(jié)果分別畫出來,原因放在左邊一列,結(jié)果放在右邊一列。

(2)分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間、原因與原因之間對(duì)應(yīng)的關(guān)系,根據(jù)這些關(guān)系,將其表示成連接各個(gè)原因與各個(gè)結(jié)果的“因果圖”。

(3)由于語法或環(huán)境限制,有些原因與原因之間、原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號(hào)標(biāo)明約束或限制條件。

(4)把因果圖轉(zhuǎn)換成判定表。首先將因果圖中的各原因作為判定表的條件項(xiàng),因果圖的各結(jié)果作為判定表的動(dòng)作項(xiàng)。然后給每個(gè)原因分別取“真”和“假”兩種狀態(tài),一般用“1”和“0”表示。最后根據(jù)各條件項(xiàng)的取值和因果圖中表示的原因和結(jié)果之間的邏輯關(guān)系,確定相應(yīng)的動(dòng)作項(xiàng)的值,完成判定表的填寫。

(5)把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測(cè)試用例。4.4.3案例

1.軟件規(guī)格說明書

第1列字符必須是A或B,第2列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改,但如果第1列字符不正確,則給出信息L,如果第2列字符不是數(shù)字,則給出信息M。

1)根據(jù)說明書分析出原因和結(jié)果

(1)原因:

1——第1列字符是A;

2——第1列字符是B;

3——第2列字符是一數(shù)字。

(2)結(jié)果:

21——修改文件;

22——給出信息L;

23——給出信息M。

2)繪制因果圖

(1)根據(jù)原因和結(jié)果繪制因果圖。把原因和結(jié)果用邏輯符號(hào)連接起來,畫出因果圖,如圖4-4-3所示。圖4-4-3軟件規(guī)格說明書因果圖

(2)考慮到原因1和原因2不可能同時(shí)為1,因此在因果圖上施加E約束。具有約束的因果圖如圖4-4-4所示。圖4-4-4有約束的因果圖

(3)根據(jù)因果圖所建立的判定表如表4-4-1所示。

2.電力收費(fèi)

某電力公司有A、B、C、D四類收費(fèi)標(biāo)準(zhǔn),并規(guī)定:

居民用電<100度/月,按A類收費(fèi);

≥100度/月,按B類收費(fèi)。

動(dòng)力用電<10000度/月,非高峰,按B類收費(fèi);

≥10000度/月,非高峰,按C類收費(fèi);

<10000度/月,高峰,按C類收費(fèi);

≥10000度/月,高峰,按D類收費(fèi)。

請(qǐng)用因果圖法設(shè)計(jì)測(cè)試用例。使用因果圖法設(shè)計(jì)測(cè)試用例的步驟和過程如下:

(1)列出原因和結(jié)果。

原因:1——居民用電;

2——?jiǎng)恿τ秒姡?/p>

3——<100度/月;

3'——≥100度/月;

4——非高峰;

4'——高峰;

5——<10000度/月;

5'——≥10000度/月。

結(jié)果:A——按A類收費(fèi)。

B——按B類收費(fèi)。

C——按C類收費(fèi)。

D——按D類收費(fèi)。

(2)用因果圖表明輸入和輸出間的邏輯關(guān)系,如圖4-4-5所示。圖4-4-5因果圖

(3)把因果圖轉(zhuǎn)換為判定表,得到表4-4-3。

4.5其他黑盒測(cè)試方法

1.正交試驗(yàn)

在實(shí)際的軟件項(xiàng)目中,作為輸入條件的原因可能會(huì)非常多,如果用因果圖進(jìn)行分析,其因果圖可能很龐大,由因果圖得到的測(cè)試用例數(shù)量將達(dá)到驚人的程度,這將給軟件測(cè)試工作帶來沉重負(fù)擔(dān)。為了有效、合理地減少測(cè)試的費(fèi)用,可以利用實(shí)際生活中行之有效的正交試驗(yàn)設(shè)計(jì)法來進(jìn)行測(cè)試用例的設(shè)計(jì)。正交試驗(yàn)測(cè)試策略提供了一種能對(duì)所有變量對(duì)的組合進(jìn)行典型覆蓋(均勻分布)的方法。這種技術(shù)對(duì)軟件組件的集成測(cè)試尤其有用,特別是面向?qū)ο蟮南到y(tǒng)。正交試驗(yàn)設(shè)計(jì)法(OrthogonalExperimentalDesign)是研究與處理多因素多水平實(shí)驗(yàn)的一種科學(xué)方法。正交試驗(yàn)設(shè)計(jì)法是根據(jù)正交性從全面試驗(yàn)中挑選出適量的、有代表性的點(diǎn)進(jìn)行試驗(yàn),這些點(diǎn)具備了“均勻分散,整齊可比”的特點(diǎn)。利用該方法可以使所有因子和水平在實(shí)驗(yàn)中均勻地分布與搭配,均勻規(guī)律地變化。在正交試驗(yàn)中,生成正交表是非常重要的。

1)正交表概念

正交表是運(yùn)用組合數(shù)學(xué)理論在正交拉丁名的基礎(chǔ)上構(gòu)造的一種規(guī)格化的表格,其符號(hào)為Ln(ji),其中:

L——正交表的符號(hào);

n——正交表的次數(shù)(Runs),即正交表行數(shù);

j——正交表的水平數(shù)(Levels),任何單個(gè)因素能夠取得的值的最大個(gè)數(shù);

i——正交表的因素?cái)?shù)(Factors),正交表中列的個(gè)數(shù),它直接對(duì)應(yīng)到用這種技術(shù)設(shè)計(jì)測(cè)試用例時(shí)的變量的最大個(gè)數(shù)。各列水平數(shù)均相同的正交表稱單一水平正交表。各列水平數(shù)均為2的常用正交表有:L4(23)、L8(27)、L12(211)、L16(215)、L20(219)、L32(231)。各列水平數(shù)均為3的常用正交表有:L9(34)、L27(313)。各列水平數(shù)均為4的常用正交表有:L16(45)。

各列水平數(shù)不相同的正交表稱混合水平正交表。例如:L8(41×24),此混合水平正交表含有1個(gè)4水平列和4個(gè)2水平列,共有1+4=5列。L8(41×24)常簡寫為L8(4×24)。正交表具有兩個(gè)重要的特性:

(1)整齊可比性:在同一張正交表中,每個(gè)因素的每個(gè)水平出現(xiàn)的次數(shù)是完全相同的。由于在試驗(yàn)中每個(gè)因素的每個(gè)水平與其他因素的每個(gè)水平參與試驗(yàn)的機(jī)率是完全相同的,這就保證在各個(gè)水平中最大程度地排除了其他因素水平的干擾。

(2)均衡分散性:在同一張正交表中,任意兩列(兩個(gè)因素)的水平搭配(橫向形成的數(shù)字對(duì))是完全相同的。這樣就保證了試驗(yàn)條件均衡地分散在因素水平的完全組合之中,因而具有很強(qiáng)的代表性。

2)選擇正交表的基本原則

選擇正交表時(shí),一般都是先確定試驗(yàn)的因素、水平和交互作用,后選擇適用的L表。在確定因素的水平數(shù)時(shí),主要因素宜多安排幾個(gè)水平,次要因素可少安排幾個(gè)水平。選擇正交表的基本原則如下:

(1)先看水平數(shù)。若各因素全是2水平,就選用L(2*)表;若各因素全是3水平,就選用L(3*)表。若各因素的水平數(shù)不相同,就選擇適用的混合水平表。

(2)每一個(gè)交互作用在正交表中應(yīng)占一列或兩列。要看所選的正交表是否足夠大,能否容納得下所考慮的因素和交互作用。

(3)看試驗(yàn)精度的要求。若要求高,則宜選取實(shí)驗(yàn)次數(shù)多的L表。若試驗(yàn)費(fèi)用很昂貴,或試驗(yàn)的經(jīng)費(fèi)很有限,或人力和時(shí)間都比較緊張,則不宜選取實(shí)驗(yàn)次數(shù)太多的L表。

(4)按原來考慮的因素、水平和交互作用去選擇正交表,若無正好適用的正交表可選,簡便且可行的辦法是適當(dāng)修改原定的水平數(shù)。

3)用正交表設(shè)計(jì)測(cè)試用例

對(duì)軟件專業(yè)人員來說,測(cè)試案例的選擇是既有趣又困難的選擇。正交表提供了一個(gè)選擇測(cè)試集的方法,可保證對(duì)所有被選變量的成對(duì)組合生成一個(gè)有效且精簡的測(cè)試集。這個(gè)測(cè)試集包括最少的測(cè)試用例,但可測(cè)試所有變量的所有組合,而且生成所有的成對(duì)組合是均勻分布的測(cè)試集。用正交表設(shè)計(jì)測(cè)試用例,可按下列步驟進(jìn)行:

(1)確定測(cè)試中有多少個(gè)相互獨(dú)立的變量,映射到表中的因素?cái)?shù)。

(2)確定每個(gè)變量可以取值的最大個(gè)數(shù),映射到表中的水平數(shù)。

(3)選擇一個(gè)次數(shù)最少的最適合的正交表。一個(gè)最合適的正交表是至少滿足第(1)步說明的因素?cái)?shù)且至少滿足第(2)步說明的水平數(shù)。

(4)把變量的值映射到正交表中。

(5)把每一行的各因素水平的組合作為一個(gè)測(cè)試用例。

(6)再增加一些沒有在表中出現(xiàn),但你認(rèn)為可疑的測(cè)試用例。

2.場(chǎng)景測(cè)試

1)場(chǎng)景定義

場(chǎng)景技術(shù)在軟件開發(fā)中可以用來捕獲需求和系統(tǒng)的功能,是軟件體系結(jié)構(gòu)建模的主要依據(jù),并可用來指導(dǎo)測(cè)試用例生成。本質(zhì)上,場(chǎng)景從用戶的角度描述系統(tǒng)的運(yùn)行行為,反映了系統(tǒng)的期望運(yùn)行方式。場(chǎng)景是由一系列相關(guān)的活動(dòng)組成的,而且場(chǎng)景中的活動(dòng)還可以由一系列的場(chǎng)景構(gòu)成?,F(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時(shí)的情景便形成了場(chǎng)景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成了事件流。這一系列的過程我們利用場(chǎng)景法可以清晰地描述清楚。這種在軟件設(shè)計(jì)方面的思想也可以引入到軟件測(cè)試中,可以比較生動(dòng)地描繪出事件觸發(fā)時(shí)的情景,有利于測(cè)試設(shè)計(jì)者設(shè)計(jì)測(cè)試用例,同時(shí)使測(cè)試用例更容易理解和執(zhí)行。通過運(yùn)用場(chǎng)景來對(duì)系統(tǒng)的功能點(diǎn)或業(yè)務(wù)流程進(jìn)行描述,可提高測(cè)試效果。

場(chǎng)景法一般包含基本流和備用流,從一個(gè)流程開始,通過描述經(jīng)過的路徑來確定過程,經(jīng)過遍歷所有的基本流和備用流來完成整個(gè)場(chǎng)景。對(duì)于基本流和備選流的理解,可以參考圖4-5-1。圖中經(jīng)過用例的每條路徑都反映了基本流和備選流,都用箭頭來表示。中間的直線表示基本流,是經(jīng)過用例的最簡單的路徑。備選流用曲線表示,一個(gè)備選流可能從基本流開始,在某個(gè)特定條件下執(zhí)行,然后重新加入基本流中;也可能起源于另一個(gè)備選流,或者終止用例而不再重新加入到某個(gè)流。圖4-5-1基本流和備選流根據(jù)圖中每條經(jīng)過用例的可能路徑,可以確定不同的用例場(chǎng)景。從基本流開始,再將基本流和備選流結(jié)合起來,可以確定以下用例場(chǎng)景:

場(chǎng)景1:基本流。

場(chǎng)景2:基本流→備選流1。

場(chǎng)景3:基本流→備選流1→備選流2。

場(chǎng)景4:基本流→備選流3。

場(chǎng)景5:基本流→備選流3→備選流1。

場(chǎng)景6:基本流→備選流3→備選流1→備選流2。

場(chǎng)景7:基本流→備選流4。

場(chǎng)景8:基本流→備選流3→備選流4。

為方便起見,場(chǎng)景5、6和8只描述了備選流3指示的循環(huán)執(zhí)行一次的情況。

2)場(chǎng)景測(cè)試步驟

使用場(chǎng)景法設(shè)計(jì)測(cè)試用例的基本設(shè)計(jì)步驟如下:

(1)根據(jù)說明,描述出程序的基本流及各項(xiàng)備選流。

(2)根據(jù)基本流和各項(xiàng)備選流生成不同的場(chǎng)景。

(3)對(duì)每一個(gè)場(chǎng)景生成相應(yīng)的測(cè)試用例。

(4)對(duì)生成的所有測(cè)試用例重新復(fù)審,去掉多余的測(cè)試用例,測(cè)試用例確定后,對(duì)每一個(gè)測(cè)試用例確定測(cè)試數(shù)據(jù)值。

3)舉例

一個(gè)在線購物實(shí)例:用戶進(jìn)入一個(gè)在線購物網(wǎng)站進(jìn)行購物,選購物品后,進(jìn)行在線購買,需要使用帳

溫馨提示

  • 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)論