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

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目六ViSort()函數(shù)的測(cè)試6.1問題情境6.2問題分析6.3任務(wù)設(shè)計(jì)與實(shí)施6.4知識(shí)總結(jié)6.5應(yīng)用實(shí)踐

有如下一個(gè)程序,請(qǐng)用路徑覆蓋法設(shè)計(jì)一組測(cè)試用例來(lái)測(cè)試該程序。

voidViSort(intiRecordNum,intiType)

1{

2intx=0;

3inty=0;

4while(iRecordNum>0)6.1問題情境

5{

6 If(iType==0)

7 x=y+2;

8else

9 If(iType==1)

10x=y+10;

11else

12x=y+20;

13}

14}

在這個(gè)程序中有兩個(gè)輸入?yún)?shù)iRecordNum和iType,在程序中有一個(gè)while循環(huán),其中包括一組嵌套if結(jié)構(gòu)。6.2問題分析

步驟1:分析程序結(jié)構(gòu)。

程序中有兩個(gè)輸入?yún)?shù)iRecordNum和iType,在程序中有一個(gè)while循環(huán),其中包括一組嵌套if結(jié)構(gòu)。

步驟2:設(shè)計(jì)測(cè)試用例(見表6-1)。6.3任務(wù)設(shè)計(jì)與實(shí)施表6-1設(shè)計(jì)測(cè)試用例步驟3:實(shí)施測(cè)試,并書寫測(cè)試報(bào)告。

6.4.1路徑覆蓋測(cè)試法的基礎(chǔ)理論

白盒測(cè)試的測(cè)試方法有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋法、基本路徑測(cè)試法、域測(cè)試、符號(hào)測(cè)試、Z路徑覆蓋、程序變異等。其中運(yùn)用最為廣泛的是基本路徑測(cè)試法。6.4知識(shí)總結(jié)

1.控制流圖

程序控制流圖(可簡(jiǎn)稱控制流圖)是對(duì)程序流程圖進(jìn)行簡(jiǎn)化后得到的,它突出表示程序控制流的結(jié)構(gòu)。

程序控制流圖是描述程序控制流的一種方式,其要點(diǎn)如下(見圖6-1):

(1)圖形符號(hào):圓圈代表一個(gè)節(jié)點(diǎn),表示一個(gè)或多個(gè)無(wú)分支的語(yǔ)句或源程序語(yǔ)句。

圖6-1常見結(jié)構(gòu)的控制流圖

(2)程序控制流的邊和節(jié)點(diǎn)圈定的部分叫做區(qū)域。當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的一個(gè)部分也應(yīng)記為一個(gè)區(qū)域。

(3)判斷語(yǔ)句中的條件為復(fù)合條件(條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符連接的邏輯表達(dá)式(aandb))時(shí),則需要改變復(fù)合條件的判斷為一系列只有單個(gè)條件的嵌套的判斷。

節(jié)點(diǎn)由帶標(biāo)號(hào)的圓圈表示,可代表一個(gè)或多個(gè)語(yǔ)句、一個(gè)處理框序列和一個(gè)條件判定框(假設(shè)不包含復(fù)合條件)??刂屏骶€由帶箭頭的弧或線表示,可稱為邊,它代表程序中的控制流。為了滿足路徑覆蓋,必須首先確定具體的路徑以及路徑的個(gè)數(shù)。我們通常采用控制流圖的邊(弧)序列和節(jié)點(diǎn)列表示某一條具體路徑。其中,包含條件的節(jié)點(diǎn)被稱為判定節(jié)點(diǎn)(也叫謂詞節(jié)點(diǎn)),由判定節(jié)點(diǎn)發(fā)出的邊必須終止于某一個(gè)節(jié)點(diǎn),由邊和節(jié)點(diǎn)所限定的范圍被稱為區(qū)域。

2.環(huán)形復(fù)雜度

程序的環(huán)形復(fù)雜度也稱為圈復(fù)雜度,它是度量程序邏輯復(fù)雜度的指標(biāo)。

將環(huán)形復(fù)雜度用于基本路徑方法,可以提供程序基本集的獨(dú)立路徑數(shù)量,確保所有語(yǔ)句至少執(zhí)行一次測(cè)試。獨(dú)立路徑是指程序中至少引入了一個(gè)新的處理語(yǔ)句集合或一個(gè)新條件的程序通路,即包含了一組以前沒有處理的語(yǔ)句或條件的一條路徑。通常環(huán)形復(fù)雜度以圖論為基礎(chǔ),提供軟件度量。給定一個(gè)控制流圖G,設(shè)其環(huán)形復(fù)雜度為V(G),下面介紹三種常見的計(jì)算方法來(lái)求解V(G)。

(1)

V(G)

=

A,其中A是控制流圖G中區(qū)域的數(shù)目。當(dāng)在控制流圖中計(jì)算區(qū)域的數(shù)目時(shí),控制流圖外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。

(2)

V(G)

=

E

-

N

+

2,其中E是控制流圖G中邊的數(shù)量,N是控制流圖中節(jié)點(diǎn)的數(shù)目。

(3)

V(G)

=

P

+

1,其中P是控制流圖G中判斷節(jié)點(diǎn)的數(shù)目。

圖6-2某程序控制流圖計(jì)算結(jié)果為:節(jié)點(diǎn)數(shù)量N

=

8,邊的數(shù)量E

=

10,根據(jù)上述公式可得出:

V(G)

=

A

=

4

V(G)

=

E

-

N

+

2

=

10

-

8

+

2

=

4

V(G)

=

P

+

1

=

3

+

1

=

4

計(jì)算出獨(dú)立路徑為

路徑1:1→5;

路徑2:1→2→3→5;

路徑3:1→2→4→6→8→1→5;

路徑4:1→2→4→7→8→1→5。

根據(jù)上述路徑就可以設(shè)計(jì)相應(yīng)的測(cè)試用例。

3.如何根據(jù)程序流程圖畫出控制流圖

將程序流程圖簡(jiǎn)化成控制流圖時(shí),應(yīng)注意以下幾點(diǎn):

(1)在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚節(jié)點(diǎn)。

(2)邊和節(jié)點(diǎn)圈定的范圍叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域,如圖6-3所示。

圖6-3根據(jù)程序流程圖畫出控制流圖

(3)如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(or、and、nand、nor)連接的復(fù)合條件表達(dá)式,則需要改為一系列只有單條件的嵌套的判斷。

例如:

1ifaorb

2x

3else

4y

對(duì)應(yīng)的邏輯如圖6-4所示。

圖6-4控制流圖6.4.2基本路徑測(cè)試方法

路徑測(cè)試就是從一個(gè)程序的入口開始,執(zhí)行所經(jīng)歷的各個(gè)語(yǔ)句的完整過程。從廣義的角度講,任何有關(guān)路徑分析的測(cè)試都可以被稱為路徑測(cè)試。

完成路徑測(cè)試的理想情況是做到路徑覆蓋,但對(duì)于復(fù)雜度高的程序,要做到所有路徑覆蓋(測(cè)試所有可執(zhí)行路徑)是不可能的。在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個(gè)獨(dú)立路徑都被測(cè)試過,那么可以認(rèn)為程序中的每個(gè)語(yǔ)句都已經(jīng)檢驗(yàn)過了,即達(dá)到了語(yǔ)句覆蓋。

基本路徑測(cè)試方法是在控制流圖的基礎(chǔ)上,通過分析控制結(jié)構(gòu)的環(huán)形復(fù)雜度,導(dǎo)出執(zhí)行路徑的基本集,再?gòu)脑摶炯O(shè)計(jì)測(cè)試用例的?;韭窂綔y(cè)試方法包括以下四個(gè)步驟。

圖6-5程序流程圖

1.畫出程序的控制流圖

程序流程圖用來(lái)描述程序控制結(jié)構(gòu),可將程序流程圖映射為一個(gè)控制流圖(假設(shè)流程圖的菱形判定框中不包含復(fù)合條件)。在控制流圖中,每一個(gè)圓稱為控制流圖的節(jié)點(diǎn),代表一個(gè)或多個(gè)語(yǔ)句;一個(gè)處理方框序列和一個(gè)菱形判定框可被映射為一個(gè)節(jié)點(diǎn);箭頭稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個(gè)節(jié)點(diǎn),即使該節(jié)點(diǎn)并不代表任何語(yǔ)句(例如if-else-then結(jié)構(gòu))。例16.1節(jié)中測(cè)試任務(wù)的程序流程圖如圖6-5所示。

畫出與其程序流程圖對(duì)應(yīng)的控制流圖,如圖6-6所示。

圖6-6程序流程圖對(duì)應(yīng)的控制流圖

2.計(jì)算環(huán)形復(fù)雜度

由圖6-6計(jì)算出環(huán)形復(fù)雜度如下:

V(G)

=

A

=

4

V(G)

=

10

-

8

+

2

=

4

V(G)

=

3

+

1

=

4

3.確定基本路徑集合

根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑。

路徑1:4→14;

路徑2:4→6→7→13→4→14;

路徑3:4→6→8→10→13→4→14;

路徑4:4→6→8→11→13→4→14。

根據(jù)上面的獨(dú)立路徑,設(shè)計(jì)輸入數(shù)據(jù),使得上面的四條路徑都被執(zhí)行到。

4.準(zhǔn)備測(cè)試用例

根據(jù)判斷節(jié)點(diǎn)給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證每一條路徑都可以被測(cè)試到。滿足該基本路徑集的測(cè)試用例如下所示。

路徑1:4→14。

輸入數(shù)據(jù):iRecordNum

=

0,或者取iRecordNum

<

0的某一個(gè)值。預(yù)期結(jié)果:x

=

0。

路徑2:4→6→7→13→4→14

輸入數(shù)據(jù):iRecordNum

=

1,iType

=

0。

預(yù)期結(jié)果:x

=

2。

路徑3:4→6→8→10→13→4→14。

輸入數(shù)據(jù):iRecordNum

=

1,iType

=

1。

預(yù)期結(jié)果:x

=

10。

路徑4:4→6→8→11→13→4→14。

輸入數(shù)據(jù):iRecordNum

=

1,iType

=

2。

預(yù)期結(jié)果:x

=

20。6.4.3循環(huán)測(cè)試方法

1.循環(huán)測(cè)試

從本質(zhì)上說,循環(huán)測(cè)試的目的就是檢查循環(huán)結(jié)構(gòu)的有效性。通常,循環(huán)可以劃分為簡(jiǎn)單循環(huán)、嵌套循環(huán)、串接循環(huán)和非結(jié)構(gòu)循環(huán)四類。

(1)測(cè)試簡(jiǎn)單循環(huán)。設(shè)其循環(huán)的最大次數(shù)為n,可采用以下測(cè)試集(見圖6-7):

跳過整個(gè)循環(huán);

只循環(huán)一次;

只循環(huán)兩次;

循環(huán)m次,其中m

<

n;

分別循環(huán)n

-

1、n和n

+

1次。

圖6-7典型循環(huán)結(jié)構(gòu)

(2)測(cè)試嵌套循環(huán)。如果將簡(jiǎn)單循環(huán)的測(cè)試方法用于嵌套循環(huán),可能的測(cè)試次數(shù)會(huì)隨嵌套層數(shù)成幾何級(jí)數(shù)增加。此時(shí)可采用以下方法減少測(cè)試次數(shù):

測(cè)試從最內(nèi)層循環(huán)開始,所有外層循環(huán)次數(shù)設(shè)置為最小值;

對(duì)最內(nèi)層循環(huán)按照簡(jiǎn)單循環(huán)的測(cè)試方法進(jìn)行;

由內(nèi)向外進(jìn)行下一個(gè)循環(huán)的測(cè)試,本層循環(huán)的所有外層循環(huán)仍取最小值,而由本層循環(huán)嵌套的循環(huán)取某些“典型”值;

重復(fù)上一步的過程,直到測(cè)試完所有循環(huán)。

(3)測(cè)試串接循環(huán)。若串接的各個(gè)循環(huán)相互獨(dú)立,則可分別采用簡(jiǎn)單循環(huán)的測(cè)試方法;否則采用嵌套循環(huán)的測(cè)試方法。

(4)對(duì)于非結(jié)構(gòu)循環(huán)這種情況,無(wú)法進(jìn)行測(cè)試,需要按結(jié)構(gòu)化程序設(shè)計(jì)的思想將程序結(jié)構(gòu)化后,再進(jìn)行測(cè)試。

2.Z路徑覆蓋下的循環(huán)測(cè)試方法

Z路徑覆蓋是路徑覆蓋的一種變體,它是將程序中的循環(huán)結(jié)構(gòu)簡(jiǎn)化為選擇結(jié)構(gòu)的一種路徑覆蓋。

循環(huán)簡(jiǎn)化的目的是限制循環(huán)的次數(shù),無(wú)論循環(huán)的形式是怎樣的,也無(wú)論循環(huán)體實(shí)際執(zhí)行的次數(shù)是多少,簡(jiǎn)化后的循環(huán)測(cè)試只考慮執(zhí)行循環(huán)體一次和零次(不執(zhí)行)兩種情況,即考慮執(zhí)行時(shí)進(jìn)入循環(huán)體一次和跳過循環(huán)體這兩種情況,如圖6-8所示。

圖6-8Z路徑覆蓋下的循環(huán)測(cè)試方法6.4.4產(chǎn)生測(cè)試用例的其他方法

在實(shí)踐中,除了前面給出的各種方法外,通常還可以采用以下三種方法來(lái)補(bǔ)充設(shè)計(jì)測(cè)試用例:

(1)通過非路徑分析得到測(cè)試用例。通過這種方法得到的測(cè)試用例基本上是測(cè)試人員憑工作經(jīng)驗(yàn)得到的,甚至是猜測(cè)得到的。

(2)尋找尚未測(cè)試過的路徑并生成相應(yīng)的測(cè)試用例。這種方法需要窮舉被測(cè)程序的所有路徑,并與前面已測(cè)試路徑進(jìn)行對(duì)比。

(3)通過指定特定路徑來(lái)生成相應(yīng)的測(cè)試用例。6.4.5最少測(cè)試用例數(shù)計(jì)算

為實(shí)現(xiàn)測(cè)試的邏輯覆蓋,必須設(shè)計(jì)足夠多的測(cè)試用例,并使用這些測(cè)試用例執(zhí)行被測(cè)程序,實(shí)施測(cè)試。我們關(guān)心的是,對(duì)于某個(gè)具體的程序來(lái)說,至少需要設(shè)計(jì)多少個(gè)測(cè)試用例。這里提供一種估算最少測(cè)試用例數(shù)的方法。

我們知道,結(jié)構(gòu)化程序是由三種基本控制結(jié)構(gòu)組成的:順序型(構(gòu)成串行操作)、選擇型(構(gòu)成分支操作)和重復(fù)型(構(gòu)成循環(huán)操作)。為了把問題化簡(jiǎn),避免出現(xiàn)測(cè)試用例極多的組合爆炸,應(yīng)把構(gòu)成循環(huán)操作的重復(fù)型結(jié)構(gòu)用選擇結(jié)構(gòu)代替。這樣,任意一個(gè)循環(huán)便改造成進(jìn)入循環(huán)體或不進(jìn)入循環(huán)體的分支操作,如圖6-9所示。

圖6-9用N-S圖表示程序的三種基本控制結(jié)構(gòu)例2圖6-10給出了兩個(gè)順序執(zhí)行的分支結(jié)構(gòu)。當(dāng)兩個(gè)分支謂詞P1和P2取不同值時(shí),將分別執(zhí)行a或b及c或d操作。

顯然,要測(cè)試這個(gè)小程序,需要至少提供4個(gè)測(cè)試用例才能做到邏輯覆蓋,使得ac、ad、bc及bd操作均得到檢驗(yàn)。其實(shí),這里的4是圖中的第1個(gè)分支謂詞引出的兩個(gè)操作及第2個(gè)分支謂詞引出的兩個(gè)操作組合起來(lái)而得到的,即2

×

2

=

4。并且,這里的2是由兩個(gè)并列的操作,即1

+

1

=

2而得到的。

對(duì)于一般的、更為復(fù)雜的問題,估算最少測(cè)試用例個(gè)數(shù)的原則也是同樣的,即:

圖6-10分支結(jié)構(gòu)

(1)如果在N-S圖中存在有并列的層次A1、A2,A1和A2的最少測(cè)試用例個(gè)數(shù)分別為a1、a2,則由A1、A2兩層所組合的N-S圖對(duì)應(yīng)的最少測(cè)試用例數(shù)為a1

×

a2。

(2)如果在N-S圖中不存在有并列的層次,則對(duì)應(yīng)的最少測(cè)試用例數(shù)等于并列的操作的個(gè)數(shù),即N-S圖中除謂詞之外的操作框的個(gè)數(shù)。

例3如圖6-11、圖6-12所示的兩個(gè)N-S圖,至少需要多少個(gè)測(cè)試用例才能完成邏輯覆蓋?

圖6-11程序N-S圖1

(1)對(duì)于圖6-11,由于圖中并不存在并列的層次,因而最少測(cè)試用例數(shù)等于并列操作的個(gè)數(shù),即為1

+

1

+

1

=

3。

(2)對(duì)于圖6-12,由于圖中沒有包含并列的層次,因而最少測(cè)試用例數(shù)也是并列的操作的個(gè)數(shù),即為1

+

1

+

1

+

1

+

1

=

5。

圖6-12程序N-S圖2例4如圖6-13所示的N-S圖,至少需要多少個(gè)測(cè)試用例才能完成邏輯覆蓋?

分析圖6-13:圖中的2345和67是并列的兩層。其中,2345層對(duì)應(yīng)的最少測(cè)試用例

數(shù)為

1

+

1

+

1

+

1

+

1

=

5

67層對(duì)應(yīng)的測(cè)試用例數(shù)為

1

+

1

+

1

=

3

2345和67這兩層組合后對(duì)應(yīng)的測(cè)試用例數(shù)為

5

×

3

=

15

圖6-13程序N-S圖3最后,由于兩層組合后的部分是不滿足謂詞1時(shí)所要做的操作,因此還要加上滿足謂詞1要做的操作,因此整個(gè)程序所需測(cè)試用例數(shù)為15

+

1

=

16。

圖6-14所示程序流程圖描述的功能是:最多輸入50個(gè)值(以

-1作為輸入結(jié)束標(biāo)志),計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。要求畫出控制流圖,計(jì)算環(huán)形復(fù)雜度,并對(duì)程序進(jìn)行路徑覆蓋法測(cè)試。6.5應(yīng)用實(shí)踐

圖6-14程序流程圖

(1)導(dǎo)出控制流圖,如圖6-15所示。

(2)計(jì)算環(huán)形復(fù)雜度V(G):

V(G)

=6(個(gè)區(qū)域)

V(G)

=

E

-

N

+

2

=

16

-

12

+

2

=

6

V(G)

=

P

+

1

=

5

+

1

=

6

(3)確定基本路徑集合(即獨(dú)立路徑集合)??纱_定以下6條獨(dú)立路徑:

路徑1:1→2→9→10→12;

路徑2:1→2→9→11→12;

圖6-15控制流圖路徑3:1→2→3→9→10→12;

路徑4:1→2→3→4→5→8→2…;

路徑5:1→2→3→4→5→6→8→2…;

路徑6:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論