第四章-白盒測試及其用例的設計_第1頁
第四章-白盒測試及其用例的設計_第2頁
第四章-白盒測試及其用例的設計_第3頁
第四章-白盒測試及其用例的設計_第4頁
第四章-白盒測試及其用例的設計_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、四川大學錦城學院四川大學錦城學院 軟件測試軟件測試第4章 白盒測試及其用例的設計4.1 4.2 4.3 4.4 4.5 4.6 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試本章教學目標理論環(huán)節(jié)理論環(huán)節(jié) 學習理解白盒測試方法的基本概念 學習理解白盒測試的覆蓋理論 學習掌握白盒測試的路徑表達 學習掌握白盒測試的基本路徑測試法實踐環(huán)節(jié)實踐環(huán)節(jié) 通過案例運用學習掌握覆蓋問題的解決方法 運用基本路徑測試方法進行實際程序測試四川大學錦城學院四川大學錦城學院 軟件測試軟件測試白盒測試是把測試對象看做一個透明的盒子,它允白盒測試是把測試對象看做一個透明的盒子,它允許測試人員利用程序內(nèi)部的邏輯結構及有關信

2、息,許測試人員利用程序內(nèi)部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測設計或選擇測試用例,對程序所有邏輯路徑進行測試。試。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.1 白盒測試方法 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 白盒測試法檢查程序內(nèi)部邏輯結構,對所有邏輯路徑進行測試,是一種窮舉路徑的測試方法。 窮舉路徑測試無法檢查出程序本身是否違反了設計規(guī)范,即程序是否是一個錯誤的程序。窮舉路徑測試不可能查出程序因為遺漏路徑而出錯。窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關的錯誤。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試四川大學錦城學院四川大學錦城學院

3、 軟件測試軟件測試保證一個模塊中的。所有邏輯值均需測試 兩種情況。檢查程序的內(nèi)部數(shù)據(jù)結構,保證其結構的有效性。在上下邊界及可操作范圍內(nèi)運行所有循環(huán)。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試主要是檢查程序的內(nèi)部結構、邏輯、循環(huán)和路徑。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.2 程序結構分析4.2.1 4.2.2 4.2.3 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.2.1 控制流圖 控制流圖(可簡稱流圖)是對程序流程圖進行簡化后得到的,它可以更加突出的表示程序控制流的結構。 控制流圖中包括兩種圖形符號:節(jié)點和控制流線。節(jié)點由帶標號的圓圈表示節(jié)點由帶標號的圓圈表

4、示,可代表一個或多個語句、一個處理框序列和一個條件判定框(假設不包含復合條件)。控制流線由帶箭頭的弧或線表示,可稱為邊控制流線由帶箭頭的弧或線表示,可稱為邊。它代表程序中的控制流。 對于復合條件,則可將其分解為多個單個條件,并映射成控制流圖。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試常見結構的控制流圖其中,包含條件的節(jié)點被稱為(也叫謂詞節(jié)點),由判定節(jié)點發(fā)出的邊必須終止于某一個節(jié)點,由邊和節(jié)點所限定的范圍被稱為。順序結構順序結構IF選擇結構選擇結構WHILE重復重復結構結構UNTIL重復重復結構結構CASE選擇選擇結構結構圖4-1 控制流圖四川大學錦城學院四川大學錦城學院 軟件測試軟件

5、測試圖圖4-2 復合條件的控制流圖復合條件的控制流圖四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.2.2 環(huán)形復雜度 環(huán)形復雜度也稱為圈復雜度,它是一種為程序邏輯復雜度提供定量尺度的軟件度量。 環(huán)形復雜度的應用可以將環(huán)形復雜度用于基本路徑方法,它可以提供:;。采用流圖的術語,即獨立路徑必須至少包含一條在本次定義路徑之前不曾用過的邊。 測試可以被設計為基本路徑集的執(zhí)行過程,但基本路徑集通常并不唯一。 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試計算環(huán)形復雜度的方法 環(huán)形復雜度以圖論為基礎,為我們提供了非常有用的軟件度量??捎萌缦氯N方法之一來計算環(huán)形復雜度:控制流圖中區(qū)域的數(shù)量對應

6、于環(huán)形復雜度。給定控制流圖G的環(huán)形復雜度V(G),定義為 V(G) = E-N+2 其中,E是控制流圖中邊的數(shù)量,N是控制流圖中的節(jié)點數(shù)量。給定控制流圖G的環(huán)形復雜度V(G),也可定義為 V(G) = P+1 其中,P是控制流圖G中判定節(jié)點的數(shù)量。 導出獨立路徑集:導出獨立路徑集:路徑1:5-15 (iRecordNum=0)路徑2:5-7-8-14-5-15 (iRecordNum0,iType=0)路徑3:5-7-9-11-14-5-15 (iRecordNum0,iType=1)路徑4:5-7-9-13-14-5-15 (iRecordNum0,iType0,iType1) 環(huán)形復雜度:

7、環(huán)形復雜度:V(G) = E-N+2 = V(G) = 10-8+2=4 orV(G) = P+1 = V(G) = 3+1=4四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.2.3 圖矩陣 圖矩陣是控制流圖的矩陣表示形式。 圖矩陣是一個方形矩陣,其維數(shù)等于控制流圖的節(jié)點數(shù)。矩陣中的每列和每行都對應于標識的節(jié)點,矩陣元素對應于節(jié)點間的邊。 通常,控制流圖中的結點用數(shù)字標識,邊則用字母標識。如果在控制流圖中從第 i 個結點到第 j 個結點有一個標識為 x 的邊相連接,則在對應圖矩陣的第 i 行第 j 列有一個非空的元素 x 。節(jié)點1(5)2(7)3(8)4(9)5(11)6(13)7(14

8、)8(15)1(5)ab2(7)ce3(8)d4(9)fh5(11)g6(13)i7(14)j8(15)abcdefghij表表4-1 圖矩陣圖矩陣四川大學錦城學院四川大學錦城學院 軟件測試軟件測試習題 根據(jù)左圖給出的程序流程圖,完成以下要求:(1)畫出相應的控制流圖。(2)計算環(huán)形復雜度。(3)給出相應的圖矩陣。(4)找出程序的獨立路徑集合。c四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.3 覆蓋測試4.3.1 4.3.2 4.3.3 4.3.4 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.3.1 測試覆蓋率 測試覆蓋率:用于確定測試所執(zhí)行到的覆蓋項的百分比。其中的覆蓋項是

9、指作為測試基礎的一個入口或?qū)傩裕热缯Z句、分支、條件等。 測試覆蓋率可以表示出測試的充分性,在測試分析報告中可以作為量化指標的依據(jù),測試覆蓋率越高效果越好。但覆蓋率不是目標,只是一種手段。 測試覆蓋率包括功能點覆蓋率和結構覆蓋率:功能點覆蓋率大致用于表示軟件已經(jīng)實現(xiàn)的功能與軟件需要實現(xiàn)的功能之間的比例關系。結構覆蓋率包括語句覆蓋率、分支覆蓋率、循環(huán)覆蓋率、路徑覆蓋率等等。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 邏輯覆蓋是以的設計測試用例的技術。它屬白盒測試。 根據(jù)覆蓋目標的不同,可分為:語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋路徑覆蓋4.3.2 邏輯覆蓋法四川大學錦城學院四

10、川大學錦城學院 軟件測試軟件測試 選擇足夠多的測試用例,使得程序中的每個可執(zhí)行語句至少執(zhí)行一次。 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 語句覆蓋 通過執(zhí)行足夠的測試用例,使得程序中的每個判定至少都獲得一次“真”值和“假”值, 也就是使程序中的每個取“真”分支和取“假”分支至少均經(jīng)歷一次,也稱為“”。 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 語句覆蓋 判定覆蓋 設計足夠多的測試用例,使得程序中每個判定包含的每個條件的可能取值(真/假)都至少滿足一次。 判定條件覆蓋 條件

11、組合覆蓋 路徑覆蓋四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 語句覆蓋 判定覆蓋 條件覆蓋 設計足夠多的測試用例,使得程序中每個判定包含的每個條件的所有情況(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結果(真/假)也至少出現(xiàn)一次。(滿足判定/條件覆蓋的測試用例一定同時滿足判定覆蓋和條件覆蓋。) 條件組合覆蓋 路徑覆蓋四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 通過執(zhí)行足夠的測試用例,使得程序中每個判定的所有可能的條件取值組合都至少出現(xiàn)一次。(滿足組合覆蓋的測試用例一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。) 路徑覆蓋四川大學錦城學

12、院四川大學錦城學院 軟件測試軟件測試 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 設計足夠多的測試用例,要求覆蓋程序中所有可能的路徑。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試邏輯覆蓋法(續(xù))組合覆蓋判斷/條件覆蓋判斷覆蓋條件覆蓋語句覆蓋int DoWork (int x,int y,int z) int k=0,j=0; if ( (x3)&(z5) ) j=x*y+10; /語句塊2 j=j%3; /語句塊3 return j;四川大學錦城學院四川大學錦城學院 軟件測試軟件測試X3 & z5執(zhí)行語句塊執(zhí)行語句塊3FFTTabdce四川大學錦城學院四川大

13、學錦城學院 軟件測試軟件測試 L1(a b d)= x3 and z5= x3 and z3 and z5= x=4 and z3 and z5四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 L2(a c d)= x3 and z5= x3 or z3 and z5= x=4 and z10 or z 10 and y5 or x3 and y5四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 L3(a b e)= x3 and z5= x3 and z5 = x3 and z3 and z5= x3 or z5 = x3 and x4 and y5 or z10 and x4 and

14、y5四川大學錦城學院四川大學錦城學院 軟件測試軟件測試語句覆蓋 語句覆蓋就是設計若干個測試用例,運行被測程序,使得。選擇執(zhí)行路徑:選擇執(zhí)行路徑: L1(a b d)設計測試用例:設計測試用例: 輸入:輸入:4,6,5 預計輸出:預計輸出:1 實際輸出:實際輸出:?如果將第一個條件中的如果將第一個條件中的andand改為改為oror,或?qū)⒌诙€條件中的或?qū)⒌诙€條件中的oror改為改為andand,該測試用例測試不出錯誤。該測試用例測試不出錯誤。語句覆蓋可以保證程序中的每個語句都得語句覆蓋可以保證程序中的每個語句都得到執(zhí)行,但發(fā)現(xiàn)不了判定中邏輯運算的錯到執(zhí)行,但發(fā)現(xiàn)不了判定中邏輯運算的錯誤,即它

15、并不是一種充分的檢驗方法??烧`,即它并不是一種充分的檢驗方法??梢哉f語句覆蓋是最弱的邏輯覆蓋準則。以說語句覆蓋是最弱的邏輯覆蓋準則。 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試判定覆蓋 判定覆蓋就是設計若干個測試用例,運行被測程序,使得。 判定覆蓋又稱為。選擇執(zhí)行路徑:選擇執(zhí)行路徑: L1(a b d) L4(a c e)設計測試用例:設計測試用例: 輸入:輸入:4,6,5 覆蓋覆蓋L1 2,5,5 覆蓋覆蓋L4 預計輸出:預計輸出:1,0 實際輸出:實際輸出:就判定覆蓋而言,即使一個布爾表達式含有就判定覆蓋而言,即使一個布爾表達式含有多個邏輯表達式,也只需要測試每個布爾表多個邏輯表達

16、式,也只需要測試每個布爾表達式的值為真和假兩種情況就可以了。達式的值為真和假兩種情況就可以了。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試判定覆蓋 分析: 上述兩個測試用例不僅滿足了判定覆蓋,同時還做到語句覆蓋。從這點看似乎判定覆蓋比語判定覆蓋比語句覆蓋更強一些,但仍然無法確定判定內(nèi)部條件句覆蓋更強一些,但仍然無法確定判定內(nèi)部條件的錯誤。的錯誤。例如把第二個判定中的條件y5錯誤寫為y3)&(z3 取真值記為T1,取假值記為T1 條件z5) ): 條件x=4 取真值記為T3,取假值記為T3 條件y5 取真值記為T4,取假值記為T4四川大學錦城學院四川大學錦城學院 軟件測試軟件測試T

17、RUEFALSEX34,6,52,5,5Z54,6,52,5,52,5,15四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=4、y=6、z=5 abd T1、T2、T3、T4 bdX=2、y=5、z=5aceT1、T2、 T3、T4ce x=2、y=5、 z=15 aceT1、T2、 T3、T4 ce 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=4、y=6、z=5 abd T1、T2、T3、T4 bd x=2、y=5、 z=15 ace T1、T2、 T3、T4 ce分析:分析:下面這組測試用例不但覆蓋了下面這組測試用例不但覆蓋了4個條件的全部個

18、條件的全部8種情況,而種情況,而且將兩個判定的且將兩個判定的4個分支個分支b、c、d、e也同時覆蓋了,即同也同時覆蓋了,即同時達到了條件覆蓋和判定覆蓋。時達到了條件覆蓋和判定覆蓋。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 分析:分析: 這組測試用例,則雖然滿足了條件覆蓋,但只是這組測試用例,則雖然滿足了條件覆蓋,但只是覆蓋了程序中第一個判定的取假分支覆蓋了程序中第一個判定的取假分支c 和第二個和第二個判定的取真分支判定的取真分支d,不滿足判定覆蓋的要求。,不滿足判定覆蓋的要求。 測試用例 執(zhí)行路徑 覆蓋條件覆蓋分支x=2、y=6、z=5 acd T1、T2、 T3、T4 cdx=4、

19、y=5、z=15 acd T1、T2、 T3、T4 cd四川大學錦城學院四川大學錦城學院 軟件測試軟件測試判定/條件覆蓋 判定/條件覆蓋實際上是將判定覆蓋和條件覆蓋結合起來的一種方法,即:設計足夠的測試用例,設計足夠的測試用例,使得判定中每個條件的所有可能取值至少滿足一使得判定中每個條件的所有可能取值至少滿足一次,同時每個判定的可能結果也至少出現(xiàn)一次。次,同時每個判定的可能結果也至少出現(xiàn)一次。 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=4、y=6、z=5 abd T1、T2、T3、T4 bd x=2、y=5、 z=15 ace T1、T2、 T3、T4 ce四川大學錦城學院四川大學錦城學院

20、軟件測試軟件測試判定/條件覆蓋(續(xù)) 分析:從表面上看,判定/條件覆蓋測試了各個判定中的所有條件的取值,但實際上,編譯器在檢查含有多個條件的邏輯表達式時,某些情況下的某些條件將會被其它條件所掩蓋。因此,判定/條件覆蓋也不一定能夠完全檢查出邏輯表達式中的錯誤。 例如:對于第一個判定(x3)&(z3和z3為假,則編譯器將不再檢查z5)來說,若條件x=4滿足,就認為該判定為真,這時將不會再檢查y5,那么同樣也無法發(fā)現(xiàn)這個條件中的錯誤。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試組合覆蓋 組合覆蓋就是要使設計的測試用例能覆蓋每一個判定的使設計的測試用例能覆蓋每一個判定的所有可能的條件取值

21、組合。所有可能的條件取值組合。 對DoWork函數(shù)中的各個判定的條件取值組合加以標記: 1、x3, z3, z=10 記做T1 T2,第一個判定的取假分支 3、x=3, z10 記做T1 T2,第一個判定的取假分支 4、x=10 記做T1 T2,第一個判定的取假分支 5、x=4, y5 記做T3 T4,第二個判定的取真分支 6、x=4, y5 記做T3 T4,第二個判定的取真分支 8、x!=4, y8 AND Y5X0 OR Y0引用語句1引用語句2NYNYX16 OR Y10引用語句3NY四川大學錦城學院四川大學錦城學院 軟件測試軟件測試X8 AND Y5X0 OR Y0引用語句1引用語句2

22、NYNYX16 OR Y10引用語句3NY語句覆蓋用例:語句覆蓋用例:覆蓋路徑1:a-e-f 用例1:17,11覆蓋路徑2:a-b-d用例2:7,4覆蓋路徑3:a-b-c用例3:0,-1afedcbg判定覆蓋用例:判定覆蓋用例:覆蓋路徑1:a-e-f 用例1:17,11覆蓋路徑2:a-b-d用例2:7,4覆蓋路徑3:a-b-c用例3:0,-1覆蓋路徑4:a-e-g用例4:9,6 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=17、y=11 aef T1、T2、T3、T4 、T5、T6ef x=0、y=-1abc -T1、-T2、-T3、-T4、-T5、-T6 bc條件覆蓋條件覆蓋四川大學錦城學院

23、四川大學錦城學院 軟件測試軟件測試 測試用例 執(zhí)行路徑 覆蓋條件 覆蓋分支 x=17、y=11 aef T1、T2、T3、T4 、T5、T6ef x=0、y=-1abc -T1、-T2、-T3、-T4、-T5、-T6 bcx=7、y=4abd-T1、T2、-T3-T4、T5、-T6bdx=9、y=6aegT1、T2、-T3、T4、T5、-T6eg判定判定/條件覆蓋條件覆蓋X8:真為T1,假為-T1X0:真為T2,假為-T2 X16:真為T3,假為-T3y5:真為T4,假為-T4 y0:真為T5,假為-T5 y10:真為T6,假為-T6四川大學錦城學院四川大學錦城學院 軟件測試軟件測試組合覆蓋組

24、合覆蓋1.X8,Y5:T1T42.X8,Y=5:T1-T43.X5:-T1T44.X=8,Y0,Y0:T2T56.X0,Y=0:T2-T57.X0:-T2T58.X=0,Y16,Y10:T3T610.X16,Y=10:T3-T611.X10:-T3T612.X=16,Y3 & Z=3 & Z10) 按照我們前面設計的測試用例(x的值取2或4)來看,邏輯覆蓋對這樣的小問題都無能為力。分析出現(xiàn)這一情況的原因在于:錯誤區(qū)域僅僅在x=3這個點上,即僅當x的值取3時,測試才能發(fā)現(xiàn)錯誤。面對這類情況,我們應該從中吸取的教訓是測試工作要有重點,要多針對容易要多針對容易發(fā)生問題的地方設計測試用

25、例。發(fā)生問題的地方設計測試用例。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 ESTCA(Error Sensitive Test Cases Analysis )錯誤敏感測試用例分析規(guī)則:錯誤敏感測試用例分析規(guī)則:在容易發(fā)生問題的地方設計測試用例,即重視程序中謂在容易發(fā)生問題的地方設計測試用例,即重視程序中謂詞(條件判斷)的取值。詞(條件判斷)的取值。 這一規(guī)則雖然并不完備,但在普通程序中卻是有效的。原因在于這是一種經(jīng)驗型的覆蓋準則,規(guī)則本身針對了程序編寫人員容易發(fā)生的錯誤,或是圍繞著發(fā)生錯誤的頻繁區(qū)域,從而提高了發(fā)現(xiàn)錯誤的命中率。具體規(guī)則如下: ESTCA覆蓋規(guī)則四川大學錦城學院四川

26、大學錦城學院 軟件測試軟件測試 規(guī)則1 對于A rel B型 (rel可以是) 的分支謂詞,應適當?shù)倪x擇A與B的值,使得測試執(zhí)行到該分支語句時,AB的情況分別出現(xiàn)一次。 這是為了檢測邏輯符號寫錯的情況這是為了檢測邏輯符號寫錯的情況,如將“AB”。 規(guī)則2 對于A rel C型 (rel可以是或, A是變量,C是常量)的分支謂詞:當rel為時,應適當?shù)倪x擇A的值,使A=C+M。 這是為了檢測這是為了檢測“差差1”之類的錯誤之類的錯誤,如“A1”錯寫成“A0”。 規(guī)則3 對外部輸入變量賦值,使其在每一個測試用例中均有不同的值與符號,并與同一組測試用例中其他變量的值與符號不同。 這是為了檢測程序語句

27、中的錯誤這是為了檢測程序語句中的錯誤,如應該引用某一變量而錯誤的引用成了一個常量。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試LCSAJ準則 LCSAJ (Linear Code Sequence and Jump) 的字面含義是線性代碼序列與跳轉(zhuǎn)。在程序中,一個在程序中,一個LCSAJ是一組是一組順序執(zhí)行的代碼,以控制跳轉(zhuǎn)為其結束點順序執(zhí)行的代碼,以控制跳轉(zhuǎn)為其結束點。 LCSAJ的起點是根據(jù)程序本身決定的。它的起點可以是程序第一行或轉(zhuǎn)移語句的入口點,或是控制流可跳達的點。 如果有幾個LCSAJ首尾相接,且第一個LCSAJ起點為程序起點,最后一個LCSAJ終點為程序終點,這樣的LCSA

28、J串就組成了程序的一條路徑(LCSAJ路徑路徑)。一條LCSAJ程序路徑可能是由2個、3個或多個LCSAJ組成的。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 基于LCSAJ與路徑的關系,提出了層次LCSAJ覆蓋準則。它是一個分層分層的覆蓋準則,可以概括的描述為:第一層 語句覆蓋。第二層 分支覆蓋。第三層 LCSAJ覆蓋,即程序中的每一個LCSAJ都至少在測試中經(jīng)歷過一次。第四層 兩兩LCSAJ覆蓋,即程序中的每兩個相連的LCSAJ組合起來在測試中都要經(jīng)歷一次。第n+2層 每n個首尾相連的LCSAJ組合在測試中都要經(jīng)歷一次。 在實施測試時,若要實現(xiàn)上述的層次LCSAJ覆蓋,需要產(chǎn)生被測程

29、序的所有LCSAJ。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 找出前面DoWork函數(shù)的所有LCSAJ和LCSAJ路徑。 LCSAJ(5個): (1)int k=0,j=0; if ( (x3)&(z5) ) (3)if ( (x=4)|(y5) ) (4)j=x*y+10; j=j%3 (5)j=j%3 LCSAJ路徑(4條): (1)-(2)-(4) (1)-(2)-(5) (1)-(3)-(4) (1)-(3)-(5)四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.4 路徑測試4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 四川大學錦城學院四川大學錦城

30、學院 軟件測試軟件測試4.4.1 路徑表達式 為了滿足路徑覆蓋,必須首先確定具體的路徑以及路徑的個數(shù)。我們通常采用控制流圖的邊(弧)序列和節(jié)點序列表示某一條具體路徑,更為概括的表示方法為:(1)弧a和弧b相乘,表示為ab,它表明路徑是先經(jīng)歷弧a,接著再經(jīng)歷弧b,弧a和弧b是先后相接的。(2)弧a和弧b相加,表示為a+b,它表明兩條弧是“或”的關系,是并行的路段。 路徑數(shù)的計算: 在路徑表達式中,將所有弧均以數(shù)值1來代替,再進行表達式的相乘和相加運算,最后得到的數(shù)值即為該程序的路徑數(shù)。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.4.2 基本路徑測試方法 路徑測試就是從一個程序的入口開始

31、,執(zhí)行所經(jīng)歷的各個語句的完整過程。從廣義的角度講,任何有關路徑分析的測試都可以被稱為路徑測試。 完成路徑測試的理想情況是做到路徑覆蓋,但對于復雜性大的程序要做到所有路徑覆蓋(測試所有可執(zhí)行路徑)是不可能的。 在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個獨立路徑都被測試過,那么可以認為程序中的每個語句都已經(jīng)檢驗過了,即達到了語句覆蓋。這種測試方法就是通常所說的基本路徑測試方法。 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 基本路徑測試方法是在控制流圖的基礎上,通過分析控制結構的環(huán)形復雜度,導出執(zhí)行路徑的基本集,再從該基本集設計測試用例。基本路徑測試方法包括以下4個步驟:(1)畫出

32、程序的控制流圖。(2)計算程序的環(huán)形復雜度,導出程序基本路徑集中的獨立路徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。(3)導出基本路徑集,確定程序的獨立路徑。(4)根據(jù)(3)中的獨立路徑,設計測試用例的輸入數(shù)據(jù)和預期輸出。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試void Sort ( int iRecordNum, int iType )1 2 int x=0;3 int y=0;4 while ( iRecordNum- 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 el

33、se12 x=y+20;13 14 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 基本路徑測試法實現(xiàn)步驟:基本路徑測試法實現(xiàn)步驟: 畫出控制流圖: 如右圖所示 計算環(huán)形復雜度: 10(條邊)- 8(個節(jié)點)+ 2 = 4 導出獨立路徑(用語句編號表示) 路徑1:414 路徑2:46714 路徑3:4691013414 路徑4:4691213414467910121314四川大學錦城學院四川大學錦城學院 軟件測試軟件測試輸入數(shù)據(jù)預期輸出測試用例1irecordnum = 0itype = 0 x = 0y = 0測試用例2irecordnum = 1itype = 0 x = 0y = 0

34、測試用例3irecordnum = 1itype = 1x = 10y = 0測試用例4irecordnum = 1itype = 2x = 0y = 20 設計測試用例:四川大學錦城學院四川大學錦城學院 軟件測試軟件測試基本路徑測試法總結 基本路徑測試方法把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),程序中的循環(huán)體最多只執(zhí)行一次獨立路徑覆蓋。 它是在程序控制流圖的基礎上,分析控制構造的環(huán)路復雜性,導出基本可執(zhí)行路徑集合,設計測試用例的方法。設計出的測試用例要保證在測試中,程序的每一個可執(zhí)行語句至少要執(zhí)行一次。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.4.3 循環(huán)測試方法 從本質(zhì)上說,循環(huán)測試的

35、目的就是檢查循環(huán)結構的有效性。 通常,循環(huán)可以劃分為簡單循環(huán)、嵌套循環(huán)、串接循環(huán)和 非結構循環(huán)4類。(1)測試簡單循環(huán)測試簡單循環(huán)。設其循環(huán)的最大次數(shù)為n ,可采用以下測試集: 跳過整個循環(huán);跳過整個循環(huán); 只循環(huán)一次;只循環(huán)一次; 只循環(huán)兩次;只循環(huán)兩次; 循環(huán)循環(huán) m 次,其中次,其中m=2,對于P-use的程序圖出度=2d,C-use當且僅當USE(v,n)是計算使用,對于C-use的程序圖入度=a&c=A&c=0&c=a&c=A&c=0&c=9) digit+; else other+ printf(“其中:字母數(shù)=%d空格數(shù)=%d 數(shù)字

36、數(shù)=%d 其它字符數(shù)=%dn”,letters,space,digit,other);1235746891011四川大學錦城學院四川大學錦城學院 軟件測試軟件測試1243510976811n na ac cd dm mi ih hg gf fe eb bl lk kj j其它其它 為數(shù)字為數(shù)字 為空格為空格 為字母為字母 while while 語句語句 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試(2)復雜性為:5(3)獨立路徑為: ab acdfn acegin acehjln acehkmn 測試用例為:序號測試用例覆 蓋 獨 立路徑預期結果備注1輸入空串a(chǎn)b輸出結果都為0 2輸入

37、“ab”acdfn正確給出字符個數(shù) 3輸入“ a ”a c e g in正確給出空格個數(shù) 4輸入“8”a c e h j ln正確給出數(shù)字個數(shù) 5輸入“#”a c e h k mn正確給出其他字符個數(shù) 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試(4) N-S圖(5) 最少測試用例數(shù):52:是否為空字符串5:是否為空格7:是否為數(shù)字3:是否為字母114689四川大學錦城學院四川大學錦城學院 軟件測試軟件測試(6) 條件組合測試用例1:記c!=n為T12:-T13:記a=c=z |A=c=Z為T2T34: -T2T35: T2-T36: -T2-T37: 記c= 為T48: -T49: 記

38、0=c=9為T510: -T5序號序號測試用例測試用例覆蓋組合覆蓋組合預期結果預期結果1空字符串2輸出結果都為02aB 1&1,3,7,9正確輸出字符數(shù),空格數(shù),數(shù)字數(shù)以及其他字符數(shù)3B1,4,8,10正確輸出字符數(shù)4k 1,5,7,10正確輸出字符數(shù)和空格數(shù)511,6,8,9正確輸出數(shù)字個數(shù)四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.5 其他白盒測試方法4.5.1 4.5.2 4.5.3 四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.5.1 符號測試 符號測試的基本思想是允許程序的輸入不僅僅是具體的數(shù)值數(shù)據(jù),而且包括符號值。這里所說的符號值可以是基本符號變量值,也可

39、以是這些符號變量值的一個表達式。 符號測試是基于代數(shù)運算執(zhí)行的測試,是測試和驗證的折衷方法。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.5.2 變異測試 程序變異方法是一種錯誤驅(qū)動測試錯誤驅(qū)動測試。所謂錯誤驅(qū)動測試方法,是指該方法是針對某類特定程序錯誤的。 程序強變異程序強變異 要運行所有的變異因子,從而成倍的提高了測試成本; 決定程序與其變異因子是否等價是一個遞歸不可解的問題。 程序弱變異程序弱變異 是一種測試數(shù)據(jù)選擇的準則; 可以減少程序運行的次數(shù); 可能出現(xiàn)“負負得正”的情況。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.5.3 程序插樁 程序插樁(program in

40、strumentation)是一種基本的測試手段,在軟件測試中有著廣泛的作用。 一、方法簡介 程序插樁方法簡單的說是借助于往被測程序中插入操作來實現(xiàn)測試目的的方法。 以計算整數(shù)X和Y的最大公約數(shù)程序為例,說明插樁方法的要點。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試圖中的虛線框并不是原來的內(nèi)容,而是為了紀錄語句執(zhí)行次數(shù)而插入的。這些虛線框要完成的工作都是計數(shù)語句。C(i)=C(i)+1在程序入口處插入對計數(shù)器C(i)的初始化語句在程序出口處加入打印語句即構成完整的插樁程序四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 二、設計程序插樁時序考慮的問題 (1)探測哪些信息? (2)在程

41、序的哪些地方設置探測點; (3)需要設置那些探測點。1、2需結合具體的問題解決可根據(jù)控制結構考慮在沒有分支結構的程序段只需一個插樁語句在沒有分支結構的程序段只需一個插樁語句四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 至少應在哪些部位設置計數(shù)語句 程序塊的第一個可執(zhí)行語句之前 有標號的可執(zhí)行語句處 循環(huán)終端語句之后 選擇語句之后 輸入輸出語句之后 函數(shù)調(diào)用之后 跳轉(zhuǎn)語句之后四川大學錦城學院四川大學錦城學院 軟件測試軟件測試4.6 單元測試由于一個模塊或一個方法(Method)并不是一個獨立的程序,在考慮測試它時要同時考慮它和外界的聯(lián)系,因此要用到一些輔助模塊,來模擬與所測模塊相聯(lián)系的其他

42、模塊。一般把這些輔助模塊分為兩種: 1、驅(qū)動模塊(driver):相當于所測模塊的主程序。 2、樁模塊(stub):用于代替所測模塊調(diào)用的子模塊。 那么,所測模塊和與它相關的驅(qū)動模塊及樁模塊共同構成了一個“測試環(huán)境”,如圖所示。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試被測單元驅(qū)動模塊樁模塊1樁模塊樁模塊N測試結果測試用例四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 單元測試策略 自頂向下(Top Down Unit Testing)的單元測試策略 自底向上的單元測試策略(Bottom up Unit Testing) 孤立的單元測試策略四川大學錦城學院四川大學錦城學院 軟件測試

43、軟件測試 自頂向下的單元測試自頂向下的單元測試 一)步驟: 1. 從最頂層開始,把頂層調(diào)用的單元做成樁模塊。 2. 對第二層測試,使用上面已測試的單元做驅(qū)動模塊。 3. 依次類推,直到全部單元測試結束。 二)優(yōu)點:可以在集成測試之前為系統(tǒng)提供早期的集成途徑。 三)缺點: 1. 單元測試被樁模塊控制,隨著單元測試的不斷進行,測試過程也會變得越來越復雜,測試難度以及開發(fā)和維護的成本都不斷增加;四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 2. 要求的低層次的結構覆蓋率也難以得到保證; 3. 由于需求變更或其他原因而必須更改任何一個單元時,就必須重新測試該單元下層調(diào)用的所有單元; 4. 低層單

44、元測試依賴頂層測試,無法進行并行測試,使測試進度受到不同程度的影響,延長測試周期。 四)總結:從上述分析中,不難看出該測試策略的成本要高于孤立的單元測試成本,因此從測試成本方面來考慮,并不是最佳的單元測試策略。四川大學錦城學院四川大學錦城學院 軟件測試軟件測試 自底向上的單元測試自底向上的單元測試 一)步驟:1、先對模塊調(diào)用圖上的最底層模塊開始測試,模擬調(diào)用該模塊的模塊為驅(qū)動模塊。 2、其次,對上一層模塊進行單元測試,用已經(jīng)被測試過的模塊做樁模塊。3、依次類推,直到全部單元測試結束。 二)優(yōu)點:不需要單獨設計樁模塊。 三)缺點:1. 隨著單元測試的不斷進行,測試過程會變得越來越復雜,測試周期延長,測試和維護的成本增加;隨著各個基本單元逐步加入,系統(tǒng)會變得異常龐大,因此測試人員不容易控制;越接近頂層的模塊的測試其結構覆蓋率就越難以保證;四川大學錦城學院四川大學錦城學院 軟件測試軟件測試2. 另外,頂層測試易受底層模塊變更的影響,任何一個模塊修改之后,直接或間接調(diào)用該模塊的所有單元都要重新測試。 3. 由于只有在底層單元測試完畢之后才能夠進行頂層單元的測試,所以并行性不好。 4. 自底向上的單元測試也不能和詳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論