




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 自愿送禮合同范本
- 2025青島市房產(chǎn)買賣合同
- 全掛車轉(zhuǎn)讓合同范本
- 202A公司暑期工勞動(dòng)合同范本
- 攝影銷售合同范本模板
- 2024-2025學(xué)年山東省濟(jì)南七校聯(lián)考初三畢業(yè)班第二次統(tǒng)一檢測(cè)試題化學(xué)試題試卷含解析
- 廣東機(jī)電職業(yè)技術(shù)學(xué)院《武術(shù)俱樂部(初級(jí))》2023-2024學(xué)年第一學(xué)期期末試卷
- 大英縣2024-2025學(xué)年小學(xué)六年級(jí)數(shù)學(xué)畢業(yè)檢測(cè)指導(dǎo)卷含解析
- 河北省宣化一中、張北一中2025年高三開學(xué)考試-語(yǔ)文試題試卷含解析
- 河南科技職業(yè)大學(xué)《藥學(xué)監(jiān)護(hù)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年中央經(jīng)濟(jì)工作會(huì)議精神要點(diǎn)梳理
- 恒生估值業(yè)務(wù)手冊(cè)
- 鐵路票務(wù)大數(shù)據(jù)分析
- 小學(xué)數(shù)學(xué)新教材培訓(xùn)
- 汽修基礎(chǔ)理論知識(shí)單選題100道及答案解析
- 詩(shī)歌創(chuàng)作課(2023年浙江杭州中考語(yǔ)文試卷記敘文閱讀題及答案)
- 26個(gè)英文字母大小寫臨摹字貼(帶筆順)
- 2024年電工(高級(jí)技師)考前沖刺必會(huì)試題庫(kù)300題(含詳解)
- CJJT 164-2011 盾構(gòu)隧道管片質(zhì)量檢測(cè)技術(shù)標(biāo)準(zhǔn)
- 2024-2030年中國(guó)艾葉行業(yè)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 光伏與水處理技術(shù)結(jié)合
評(píng)論
0/150
提交評(píng)論