軟件工程導論_課件之第7章_實現(第五版)(張海潘編著)_第1頁
軟件工程導論_課件之第7章_實現(第五版)(張海潘編著)_第2頁
軟件工程導論_課件之第7章_實現(第五版)(張海潘編著)_第3頁
軟件工程導論_課件之第7章_實現(第五版)(張海潘編著)_第4頁
軟件工程導論_課件之第7章_實現(第五版)(張海潘編著)_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第7章章 實現實現7.1 編碼編碼7.2 軟件測試基礎軟件測試基礎7.3 單元測試單元測試7.4 集成測試集成測試7.5 確認測試確認測試7.6 白盒測試技術白盒測試技術7.7 黑盒測試技術黑盒測試技術7.8 調試調試7.9 軟件可靠性軟件可靠性 n通常把編碼和測試統(tǒng)稱為實現。通常把編碼和測試統(tǒng)稱為實現。n所謂編碼就是把軟件設計結果翻譯成用某種程序設計所謂編碼就是把軟件設計結果翻譯成用某種程序設計語言書寫的程序。語言書寫的程序。n軟件測試在軟件生命周期中橫跨兩個階段。軟件測試在軟件生命周期中橫跨兩個階段。q通常在編寫出每個模塊之后就對它做單元測試。通常在編寫出每個模塊之后就對它做單元測試。q

2、在這個階段結束之后,對軟件系統(tǒng)還應該進行各種綜合測試,在這個階段結束之后,對軟件系統(tǒng)還應該進行各種綜合測試,通常由專門的測試人員承擔這項工作。通常由專門的測試人員承擔這項工作。n通過測試發(fā)現錯誤之后還必須診斷并改正錯誤,這就通過測試發(fā)現錯誤之后還必須診斷并改正錯誤,這就是調試的目的。調試是測試階段最困難的工作。是調試的目的。調試是測試階段最困難的工作。n在對測試結果進行收集和評價的時候,使用故障率數在對測試結果進行收集和評價的時候,使用故障率數據,估計軟件將來出現故障的情況并預測軟件的可靠據,估計軟件將來出現故障的情況并預測軟件的可靠性。性。 7.1 編碼編碼7.1.1 選擇程序設計語言選擇程

3、序設計語言n機器語言,幾乎不使用。機器語言,幾乎不使用。n匯編語言,特殊場合使用。匯編語言,特殊場合使用。n高級語言,明顯優(yōu)于匯編語言。高級語言,明顯優(yōu)于匯編語言。 程序設計語言的劃代:程序設計語言的劃代: 劃代劃代語言語言特點特點級別級別1GL機器語言機器語言程序不直觀,編程出錯率高程序不直觀,編程出錯率高運行效率高運行效率高低級低級2GL匯編語言匯編語言比機器語言直觀,減少了出錯率比機器語言直觀,減少了出錯率與機器碼一樣長與機器碼一樣長特殊情況下才使用特殊情況下才使用3GLBASICPASCALC、C+等等利用類英語的語句和命令利用類英語的語句和命令一條語句相當于一條語句相當于5-10條機

4、器碼條機器碼要規(guī)定詳細的算法過程要規(guī)定詳細的算法過程高級高級4GL數據庫查詢語言數據庫查詢語言程序生成器程序生成器圖形語言圖形語言與自然語言接近與自然語言接近一條語句相當于一條語句相當于30-50條機器碼條機器碼非過程化問題定義非過程化問題定義運行開銷大,效率低運行開銷大,效率低選擇語言的理想標準:選擇語言的理想標準:n為了使程序容易測試和維護以減少軟件的總成為了使程序容易測試和維護以減少軟件的總成本,所選用的高級語言應該有理想的模塊化機本,所選用的高級語言應該有理想的模塊化機制,以及可讀性好的控制結構和數據結構;制,以及可讀性好的控制結構和數據結構;n為了便于調試和提高軟件可靠性,語言特點應

5、為了便于調試和提高軟件可靠性,語言特點應該使編譯程序能夠盡可能多地發(fā)現程序中的錯該使編譯程序能夠盡可能多地發(fā)現程序中的錯誤;誤;n為了降低軟件開發(fā)和維護的成本,選用的高級為了降低軟件開發(fā)和維護的成本,選用的高級語言應該有良好的獨立編譯機制。語言應該有良好的獨立編譯機制。 主要的實用標準:主要的實用標準:n系統(tǒng)用戶的要求系統(tǒng)用戶的要求n可以使用的編譯程序可以使用的編譯程序n可以得到的軟件工具可以得到的軟件工具n工程規(guī)模工程規(guī)模n程序員的知識程序員的知識n軟件可移植性要求軟件可移植性要求n軟件的應用領域軟件的應用領域7.1.2 編碼風格編碼風格1. 程序內部的文檔程序內部的文檔n恰當的標識符恰當的

6、標識符n適當的注解適當的注解n程序的視覺組織程序的視覺組織2. 數據說明數據說明n數據說明的次序應該標準化。數據說明的次序應該標準化。n當多個變量名在一個語句中說明時,應該按字當多個變量名在一個語句中說明時,應該按字母順序排列這些變量。母順序排列這些變量。n如果設計時使用了一個復雜的數據結構,則應如果設計時使用了一個復雜的數據結構,則應該用注解說明用程序設計語言實現這個數據結該用注解說明用程序設計語言實現這個數據結構的方法和特點。構的方法和特點。 3. 語句構造語句構造n不要為了節(jié)省空間而把多個語句寫在同一行;不要為了節(jié)省空間而把多個語句寫在同一行;n盡量避免復雜的條件測試;盡量避免復雜的條件

7、測試;n盡量減少對盡量減少對“非非”條件的測試;條件的測試;n避免大量使用循環(huán)嵌套和條件嵌套;避免大量使用循環(huán)嵌套和條件嵌套;n利用括號使邏輯表達式或算術表達式的運算次利用括號使邏輯表達式或算術表達式的運算次序清晰直觀。序清晰直觀。 4. 輸入輸出輸入輸出n對所有輸入數據都進行檢驗;對所有輸入數據都進行檢驗;n檢查輸入項重要組合的合法性;檢查輸入項重要組合的合法性;n保持輸入格式簡單;保持輸入格式簡單;n使用數據結束標記,不要要求用戶指定數據的數目;使用數據結束標記,不要要求用戶指定數據的數目;n明確提示交互式輸入的請求,詳細說明可用的選擇或明確提示交互式輸入的請求,詳細說明可用的選擇或邊界數

8、值;邊界數值;n當程序設計語言對格式有嚴格要求時,應保持輸入格當程序設計語言對格式有嚴格要求時,應保持輸入格式一致;式一致;n設計良好的輸出報表;設計良好的輸出報表;n給所有輸出數據加標志。給所有輸出數據加標志。 5. 效率效率n效率主要指處理機時間和存儲器容量兩個方面。效率主要指處理機時間和存儲器容量兩個方面。n效率是性能要求,因此應該在需求分析階段確效率是性能要求,因此應該在需求分析階段確定效率方面的要求。定效率方面的要求。n效率是靠好設計來提高的。效率是靠好設計來提高的。n程序的效率和程序的簡單程度是一致的,不要程序的效率和程序的簡單程度是一致的,不要犧牲程序的清晰性和可讀性來不必要地提

9、高效犧牲程序的清晰性和可讀性來不必要地提高效率。率。 效率問題:效率問題:n程序運行時間程序運行時間n存儲器效率存儲器效率n輸入輸出的效率輸入輸出的效率(1) 程序運行時間程序運行時間n寫程序之前先簡化算術的和邏輯的表達式;寫程序之前先簡化算術的和邏輯的表達式;n仔細研究嵌套的循環(huán),以確定是否有語句可以從內層仔細研究嵌套的循環(huán),以確定是否有語句可以從內層往外移;往外移;n盡量避免使用多維數組;盡量避免使用多維數組;n盡量避免使用指針和復雜的表;盡量避免使用指針和復雜的表;n使用執(zhí)行時間短的算術運算;使用執(zhí)行時間短的算術運算;n不要混合使用不同的數據類型;不要混合使用不同的數據類型;n盡量使用整

10、數運算和布爾表達式。盡量使用整數運算和布爾表達式。n在效率是決定性因素的應用領域,盡量使用有良好優(yōu)在效率是決定性因素的應用領域,盡量使用有良好優(yōu)化特性的編譯程序,以自動生成高效目標代碼。化特性的編譯程序,以自動生成高效目標代碼。 (2) 存儲器效率存儲器效率n使用能保持功能域的結構化控制結構,是提高使用能保持功能域的結構化控制結構,是提高效率的好方法。效率的好方法。n在微處理機中如果要求使用最少的存儲單元,在微處理機中如果要求使用最少的存儲單元,則應選用有緊縮存儲器特性的編譯程序,在非則應選用有緊縮存儲器特性的編譯程序,在非常必要時可以使用匯編語言。常必要時可以使用匯編語言。n提高執(zhí)行效率的技

11、術通常也能提高存儲器效率。提高執(zhí)行效率的技術通常也能提高存儲器效率。提高存儲器效率的關鍵同樣是提高存儲器效率的關鍵同樣是“簡單簡單”。 (3) 輸入輸出的效率輸入輸出的效率n如果用戶為了給計算機提供輸入信息或為了理如果用戶為了給計算機提供輸入信息或為了理解計算機輸出的信息,所需花費的腦力勞動是解計算機輸出的信息,所需花費的腦力勞動是經濟的,那么人和計算機之間通信的效率就高。經濟的,那么人和計算機之間通信的效率就高。因此,簡單清晰同樣是提高人機通信效率的關因此,簡單清晰同樣是提高人機通信效率的關鍵。鍵。 例例1:注釋:注釋/* ADD AMOUNT TO TOTAL */TOTAL = AMOU

12、NT+TOTAL/* ADD MONTHLY-SALES TO ANNUAL-TOTAL */TOTAL = AMOUNT+TOTAL例例2:視覺組織:視覺組織空格空格 (A17)ANDNOT(B49)ORC (A17) AND NOT (B49) OR C 例例3:視覺組織:視覺組織移行移行 IF () THEN IF () THEN ELSE ENDIF ELSE ENDIF例例4:數據說明標準化:數據說明標準化 INTEGER size,length,width,cost,price INTEGER cost,length,price,size,width例例5:一行一條語句:一行一條語

13、句 FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF AJAT THEN T:=J; IF TI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; END END; FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF AJAT THEN T:=J; IF TI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; END END;例例6:強調清晰性:強調清晰性 AI=AI+AT; AT=AI-AT; AI=AI-AT; WORK=AT

14、; AT=AI; AI=WORK;例例7:簡單直接:簡單直接 for (i=1; i=n; i+) for (j=1; j=n; j+) Vij=(i/j)*(j/i) for (i=1; i=n; i+) for (j=1; j=n; j+) if (i=j) Vij=1; else Vij=0;例例8:避免不必要的轉移:避免不必要的轉移 IF (XY) GOTO 30 IF (YZ) GOTO 50 SMALL=Z GOTO 70 30 IF (XZ) GOTO 60 AMALL=Z GOTO 70 50 SMALL=Y GOTO 70 60 SMALL=X 70 CONTINUESMAL

15、L=X;IF (YSMALL) SMALL=Y;IF (Z=a)if (char=z) cout “This is a letter.”;else cout =a & char=z) cout “This is a letter.”;else cout “This is not a letter.”;例例10:少用否定條件:少用否定條件if ( !(char 9) )if (char = 0 & char = 9)7.2 軟件測試基礎軟件測試基礎7.2.1 軟件測試的目標軟件測試的目標n測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過程;程;n好

16、的測試方案是極可能發(fā)現迄今為止尚未發(fā)現好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案;的錯誤的測試方案;n成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤成功的測試是發(fā)現了至今為止尚未發(fā)現的錯誤的測試。的測試。 n所有測試都應該能追溯到用戶需求;所有測試都應該能追溯到用戶需求;n應該遠在測試開始之前就制定出測試計劃;應該遠在測試開始之前就制定出測試計劃;n把把Pareto原理應用到軟件測試中;原理應用到軟件測試中;n應該從應該從“小規(guī)模小規(guī)模”測試開始,并逐步進行測試開始,并逐步進行“大大規(guī)模規(guī)?!睖y試;測試;n窮舉測試是不可能的;窮舉測試是不可能的;n為了達到最佳的測試效果,應該由獨立的第

17、三為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。方從事測試工作。7.2.2 軟件測試準則軟件測試準則7.2.3 測試方法測試方法黑盒測試黑盒測試(功能測試功能測試):n把程序看作一個黑盒子;把程序看作一個黑盒子;n完全不考慮程序的內部結構和處理過程;完全不考慮程序的內部結構和處理過程;n是在程序接口進行的測試。是在程序接口進行的測試。白盒測試白盒測試(結構測試結構測試):n把程序看成裝在一個透明的盒子里;把程序看成裝在一個透明的盒子里;n測試者完全知道程序的結構和處理算法;測試者完全知道程序的結構和處理算法;n按照程序內部的邏輯測試程序,檢測程序中的主按照程序內部的邏輯測試程序,檢測

18、程序中的主要執(zhí)行通路是否都能按預定要求正確工作。要執(zhí)行通路是否都能按預定要求正確工作。黑盒測試不可能實現窮盡測試:黑盒測試不可能實現窮盡測試:n假設有程序假設有程序P,輸入量微,輸入量微A和和B,輸出量為,輸出量為C。n如果計算機的字長為如果計算機的字長為32位,位,A和和B的數據類型的數據類型都是整數類型。將都是整數類型。將A和和B的可能取值進行排列的可能取值進行排列組合,輸入數據的可能性有:組合,輸入數據的可能性有:232232264種。種。n假設這個程序執(zhí)行一次需要假設這個程序執(zhí)行一次需要1毫秒,要完成所毫秒,要完成所有的測試,計算機需要連續(xù)工作有的測試,計算機需要連續(xù)工作5億年。億年。

19、白盒測試也不能實現窮盡測試:白盒測試也不能實現窮盡測試:n圖中所示的一個小程序的控制圖中所示的一個小程序的控制流程。曲線代表執(zhí)行次數不超流程。曲線代表執(zhí)行次數不超過過20的循環(huán),循環(huán)體中共有的循環(huán),循環(huán)體中共有5條通路。條通路。n可能執(zhí)行的路徑有可能執(zhí)行的路徑有520條,近似條,近似為為1014條可能的路徑。條可能的路徑。n如果完成一個路徑的測試需要如果完成一個路徑的測試需要1毫秒,那么整個測試過程需毫秒,那么整個測試過程需要要3170年。年。黑盒測試與白盒測試優(yōu)缺點比較:黑盒測試與白盒測試優(yōu)缺點比較: 黑盒測試黑盒測試白盒測試白盒測試優(yōu)優(yōu)點點適用于各階段測試適用于各階段測試從產品功能角度測試

20、從產品功能角度測試容易入手生成測試數據容易入手生成測試數據可構成測試數據使特定程可構成測試數據使特定程 序部分得到測試序部分得到測試有一定的充分性度量手段有一定的充分性度量手段可獲較多工具支持可獲較多工具支持缺缺點點某些代碼得不到測試某些代碼得不到測試如果規(guī)格說明有誤,則無如果規(guī)格說明有誤,則無法發(fā)現法發(fā)現不易進行充分性測試不易進行充分性測試通常不易生成測試數據通常不易生成測試數據無法對未實現規(guī)格說明的部無法對未實現規(guī)格說明的部分進行測試分進行測試工作量大,通常只用于單元工作量大,通常只用于單元測試,有應用局限測試,有應用局限性性質質一種確認技術,回答一種確認技術,回答“我們我們在構造一個正確

21、的系統(tǒng)嗎?在構造一個正確的系統(tǒng)嗎?”一種驗證技術,回答一種驗證技術,回答“我們在我們在正確地構造一個系統(tǒng)嗎?正確地構造一個系統(tǒng)嗎?”7.2.4 測試步驟測試步驟1. 模塊測試模塊測試(單元測試單元測試)n保證每個模塊作為一個單元能正確運行;保證每個模塊作為一個單元能正確運行;n發(fā)現的往往是編碼和詳細設計的錯誤。發(fā)現的往往是編碼和詳細設計的錯誤。2. 子系統(tǒng)測試子系統(tǒng)測試n把經過單元測試的模塊放在一起形成一個子系把經過單元測試的模塊放在一起形成一個子系統(tǒng)來測試;統(tǒng)來測試;n著重測試模塊的接口。著重測試模塊的接口。3. 系統(tǒng)測試系統(tǒng)測試n把經過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來把經過測試的子系統(tǒng)裝

22、配成一個完整的系統(tǒng)來測試;測試;n發(fā)現的往往是軟件設計中的錯誤,也可能發(fā)現發(fā)現的往往是軟件設計中的錯誤,也可能發(fā)現需求說明中的錯誤;需求說明中的錯誤;n不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測和組裝兩重含義,通常稱為集成測試。和組裝兩重含義,通常稱為集成測試。 4. 驗收測試驗收測試(確認測試確認測試)n把軟件系統(tǒng)作為單一的實體進行測試;把軟件系統(tǒng)作為單一的實體進行測試;n它是在用戶積極參與下進行的,而且可能主要它是在用戶積極參與下進行的,而且可能主要使用實際數據使用實際數據(系統(tǒng)將來要處理的信息系統(tǒng)將來要處理的信息)進行測進行測試;試;n發(fā)現的往往是系

23、統(tǒng)需求說明書中的錯誤。發(fā)現的往往是系統(tǒng)需求說明書中的錯誤。5. 平行運行平行運行n同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng);統(tǒng);n比較新舊兩個系統(tǒng)的處理結果;比較新舊兩個系統(tǒng)的處理結果;n可以在準生產環(huán)境中運行新系統(tǒng)而又不冒風險;可以在準生產環(huán)境中運行新系統(tǒng)而又不冒風險;n用戶能有一段熟悉新系統(tǒng)的時間;用戶能有一段熟悉新系統(tǒng)的時間;n可以驗證用戶指南和使用手冊之類的文檔;可以驗證用戶指南和使用手冊之類的文檔;n能夠以準生產模式對新系統(tǒng)進行全負荷測試,可能夠以準生產模式對新系統(tǒng)進行全負荷測試,可以用測試結果驗證性能指標。以用測試結果驗證性能指標。 7

24、.2.5 測試階段的信息流測試階段的信息流n輸入信息有兩類:輸入信息有兩類: q軟件配置,包括需求說明書、設計說明書和源程序軟件配置,包括需求說明書、設計說明書和源程序清單等;清單等; q測試配置,包括測試計劃和測試方案。測試配置,包括測試計劃和測試方案。 7.3 單元測試單元測試n單元測試集中檢測模塊;單元測試集中檢測模塊;n單元測試和編碼屬于軟件過程的同一個階段;單元測試和編碼屬于軟件過程的同一個階段;n可以應用人工測試和計算機測試這樣兩種不同可以應用人工測試和計算機測試這樣兩種不同類型的測試方法;類型的測試方法;n單元測試主要使用白盒測試技術,對多個模塊單元測試主要使用白盒測試技術,對多

25、個模塊的測試可以并行地進行。的測試可以并行地進行。 7.3.1 測試重點測試重點n模塊接口模塊接口n局部數據結構局部數據結構n重要的執(zhí)行通路重要的執(zhí)行通路n出錯處理通路出錯處理通路n邊界條件邊界條件7.3.2 代碼審查代碼審查n由審查小組正式進行測試稱為代碼審查;由審查小組正式進行測試稱為代碼審查;n可查出可查出30%70%的邏輯設計錯誤和編碼錯誤;的邏輯設計錯誤和編碼錯誤;n審查小組組成:審查小組組成:q組長組長q程序的設計者程序的設計者q程序的編寫者程序的編寫者q程序的測試者程序的測試者n一次審查會上可以發(fā)現許多錯誤,可以減少系統(tǒng)一次審查會上可以發(fā)現許多錯誤,可以減少系統(tǒng)驗證的總工作量。驗

26、證的總工作量。 7.3.3 計算機測試計算機測試n必須為每個單元測試開發(fā)驅動程序和必須為每個單元測試開發(fā)驅動程序和(或或)存根存根程序。程序。q驅動程序是一個驅動程序是一個“主程序主程序”,它接收測試數據,它接收測試數據,傳送給被測試的模塊,并且印出有關的結果。傳送給被測試的模塊,并且印出有關的結果。q存根程序代替被測試的模塊所調用的模塊。它使存根程序代替被測試的模塊所調用的模塊。它使用被它代替的模塊的接口,可能做最少量的數據用被它代替的模塊的接口,可能做最少量的數據操作,印出對入口的檢驗或操作結果,并且把控操作,印出對入口的檢驗或操作結果,并且把控制歸還給調用它的模塊。制歸還給調用它的模塊。

27、n驅動程序和存根程序代表開銷,通常并不把它驅動程序和存根程序代表開銷,通常并不把它們作為軟件產品的一部分交給用戶。們作為軟件產品的一部分交給用戶。7.4 集成測試集成測試n集成測試是測試和組裝軟件的系統(tǒng)化技術,主集成測試是測試和組裝軟件的系統(tǒng)化技術,主要目標是發(fā)現與接口有關的問題。要目標是發(fā)現與接口有關的問題。n由模塊組裝成程序時有兩種方法:由模塊組裝成程序時有兩種方法:q非漸增式測試方法非漸增式測試方法q漸增式測試方法漸增式測試方法非漸增式測試方法:非漸增式測試方法:n先分別測試每個模塊,再把所有模塊按設計要先分別測試每個模塊,再把所有模塊按設計要求放在一起結合成所要的程序;求放在一起結合成

28、所要的程序;n非漸增式測試一下子把所有模塊放在一起,并非漸增式測試一下子把所有模塊放在一起,并把龐大的程序作為一個整體來測試,測試者面把龐大的程序作為一個整體來測試,測試者面對的情況十分復雜。對的情況十分復雜。n在龐大的程序中想要診斷定位一個錯誤是非常在龐大的程序中想要診斷定位一個錯誤是非常困難的,改正錯誤更是極端困難,而且一旦改困難的,改正錯誤更是極端困難,而且一旦改正一個錯誤之后,馬上又會遇到新的錯誤。正一個錯誤之后,馬上又會遇到新的錯誤。 漸增式測試方法:漸增式測試方法:n把下一個要測試的模塊同已經測試好的那些模把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試;塊結合起來進行測

29、試;n測試完以后再把下一個應該測試的模塊結合進測試完以后再把下一個應該測試的模塊結合進來測試,每次增加一個模塊;來測試,每次增加一個模塊;n實際上同時完成單元測試和集成測試;實際上同時完成單元測試和集成測試;n把程序劃分成小段來構造和測試,在這個過程把程序劃分成小段來構造和測試,在這個過程中比較容易定位和改正錯誤;中比較容易定位和改正錯誤;n漸增方式有兩種集成策略:漸增方式有兩種集成策略:q自頂向下自頂向下q自底向上自底向上7.4.1 自頂向下集成自頂向下集成n從主控制模塊開始,沿著程序的控制層次向下從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結合起來。移動,逐漸把各個模塊結合

30、起來。n在把附屬于主控制模塊的在把附屬于主控制模塊的那些模塊組裝到程序結構那些模塊組裝到程序結構中去時,或者使用深度優(yōu)中去時,或者使用深度優(yōu)先的策略,或者使用寬度先的策略,或者使用寬度優(yōu)先的策略。優(yōu)先的策略。q深度優(yōu)先:先組裝在軟件深度優(yōu)先:先組裝在軟件結構的一條主控制通路上結構的一條主控制通路上的所有模塊。的所有模塊。q寬度優(yōu)先:沿軟件結構水寬度優(yōu)先:沿軟件結構水平地移動,把處于同一個平地移動,把處于同一個控制層次上的所有模塊組控制層次上的所有模塊組裝起來。裝起來。按深度優(yōu)先策略組裝按深度優(yōu)先策略組裝按寬度優(yōu)先策略組裝按寬度優(yōu)先策略組裝把模塊結合進軟件結構的過程由下述把模塊結合進軟件結構的過

31、程由下述4個步驟完成:個步驟完成:n第一步,對主控制模塊進行測試,測試時用存根程序第一步,對主控制模塊進行測試,測試時用存根程序代替所有直接附屬于主控制模塊的模塊;代替所有直接附屬于主控制模塊的模塊;n第二步,根據選定的結合策略第二步,根據選定的結合策略(深度優(yōu)先或寬度優(yōu)先深度優(yōu)先或寬度優(yōu)先),每次用一個實際模塊代換一個存根程序每次用一個實際模塊代換一個存根程序(新結合進來新結合進來的模塊往往又需要新的存根程序的模塊往往又需要新的存根程序);n第三步,在結合進一個模塊的同時進行測試;第三步,在結合進一個模塊的同時進行測試;n第四步,為了保證加入模塊沒有引進新的錯誤,可能第四步,為了保證加入模塊

32、沒有引進新的錯誤,可能需要進行回歸測試需要進行回歸測試(即,全部或部分地重復以前做過即,全部或部分地重復以前做過的測試的測試)。n從第二步開始不斷地重復進行上述過程,直到構造起從第二步開始不斷地重復進行上述過程,直到構造起完整的軟件結構為止。完整的軟件結構為止。 優(yōu)點:優(yōu)點:n能夠在測試的早期對主要的控制或關鍵的抉擇能夠在測試的早期對主要的控制或關鍵的抉擇進行檢驗。進行檢驗。n如果選擇深度優(yōu)先的結合方法,可以在早期實如果選擇深度優(yōu)先的結合方法,可以在早期實現軟件的一個完整的功能并且驗證這個功能。現軟件的一個完整的功能并且驗證這個功能。缺點:缺點:n存根程序代替了低層次的模塊,在軟件結構中存根程

33、序代替了低層次的模塊,在軟件結構中沒有重要的數據自下往上流。沒有重要的數據自下往上流。用下述步驟可以實現自底向上的結合策略:用下述步驟可以實現自底向上的結合策略:n第一步,把低層模塊組合成實現某個特定的軟第一步,把低層模塊組合成實現某個特定的軟件子功能的族;件子功能的族;n第二步,寫一個驅動程序第二步,寫一個驅動程序(用于測試的控制程用于測試的控制程序序),協調測試數據的輸入和輸出;,協調測試數據的輸入和輸出;n第三步,對由模塊組成的子功能族進行測試;第三步,對由模塊組成的子功能族進行測試;n第四步,去掉驅動程序,沿軟件結構自下向上第四步,去掉驅動程序,沿軟件結構自下向上移動,把子功能族組合起

34、來形成更大的子功能移動,把子功能族組合起來形成更大的子功能族。族。n上述第二步到第四步實質上構成了一個循環(huán)。上述第二步到第四步實質上構成了一個循環(huán)。 7.4.2 自底向上集成自底向上集成自底向上結合自底向上結合自底向上結合自底向上結合7.4.3 不同集成測試策略的比較不同集成測試策略的比較不同集成測試方法的比較:不同集成測試方法的比較:方法方法優(yōu)點優(yōu)點缺點缺點非漸非漸增式增式沒有錯誤隔離手段沒有錯誤隔離手段主要設計錯誤發(fā)現遲主要設計錯誤發(fā)現遲潛在可重用代碼測試不充分潛在可重用代碼測試不充分需要驅動程序和存根程序需要驅動程序和存根程序自頂自頂向下向下具有錯誤隔離手段具有錯誤隔離手段主要設計錯誤發(fā)

35、現早主要設計錯誤發(fā)現早不需要驅動程序不需要驅動程序潛在可重用代碼測試不充分潛在可重用代碼測試不充分需要存根程序需要存根程序自底自底向上向上具有錯誤隔離手段具有錯誤隔離手段潛在可重用代碼能充分測試潛在可重用代碼能充分測試不需要存根程序不需要存根程序主要設計錯誤發(fā)現遲主要設計錯誤發(fā)現遲需要驅動程序需要驅動程序混合混合具有錯誤隔離手段具有錯誤隔離手段主要設計錯誤發(fā)現早主要設計錯誤發(fā)現早潛在可重用代碼能充分測試潛在可重用代碼能充分測試混合策略:混合策略:n改進的自頂向下測試方法改進的自頂向下測試方法q基本上使用自頂向下的測試方法,但是在早期使基本上使用自頂向下的測試方法,但是在早期使用自底向上的方法測

36、試軟件中的少數關鍵模塊。用自底向上的方法測試軟件中的少數關鍵模塊。q能在測試的早期發(fā)現關鍵模塊中的錯誤;測試關能在測試的早期發(fā)現關鍵模塊中的錯誤;測試關鍵模塊時需要驅動程序。鍵模塊時需要驅動程序。n混合法混合法q對軟件結構中較上層使用的自頂向下方法與對軟對軟件結構中較上層使用的自頂向下方法與對軟件結構中較下層使用的自底向上方法相結合。件結構中較下層使用的自底向上方法相結合。q兼有兩種方法的優(yōu)缺點,當被測試的軟件中關鍵兼有兩種方法的優(yōu)缺點,當被測試的軟件中關鍵模塊比較多時,這種混合法可能是最好的折衷方模塊比較多時,這種混合法可能是最好的折衷方法。法。7.4.4 回歸測試回歸測試n回歸測試是指重新

37、執(zhí)行已經做過的測試的某個回歸測試是指重新執(zhí)行已經做過的測試的某個子集,以保證測試過程中的變化沒有帶來非預子集,以保證測試過程中的變化沒有帶來非預期的副作用。期的副作用。n回歸測試就是用于保證由于調試或其他原因引回歸測試就是用于保證由于調試或其他原因引起的變化,不會導致非預期的軟件行為或額外起的變化,不會導致非預期的軟件行為或額外錯誤的測試活動。錯誤的測試活動。n回歸測試可以通過重新執(zhí)行全部測試用例的一回歸測試可以通過重新執(zhí)行全部測試用例的一個子集人工地進行,也可以使用自動化的捕獲個子集人工地進行,也可以使用自動化的捕獲回放工具自動進行?;胤殴ぞ咦詣舆M行。 7.5 確認測試確認測試n確認測試也稱

38、為驗收測試,它的目標是驗證軟確認測試也稱為驗收測試,它的目標是驗證軟件的有效性。件的有效性。n軟件有效性的一個簡單定義是:如果軟件的功軟件有效性的一個簡單定義是:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就能和性能如同用戶所合理期待的那樣,軟件就是有效的。是有效的。n需求分析階段產生的軟件需求規(guī)格說明書,準需求分析階段產生的軟件需求規(guī)格說明書,準確地描述了用戶對軟件的合理期望,因此是軟確地描述了用戶對軟件的合理期望,因此是軟件有效性的標準,也是進行確認測試的基礎。件有效性的標準,也是進行確認測試的基礎。 n確認測試必須有用戶積極參與,或者以用戶為確認測試必須有用戶積極參與,或者以用戶為

39、主進行。主進行。n使用用戶界面輸入測試數據并且分析評價測試使用用戶界面輸入測試數據并且分析評價測試的輸出結果。的輸出結果。n通常在驗收之前由開發(fā)單位對用戶進行培訓。通常在驗收之前由開發(fā)單位對用戶進行培訓。 7.5.1 確認測試的范圍確認測試的范圍n確認測試的一個重要內容是復查軟件配置。確認測試的一個重要內容是復查軟件配置。n復查的目的是保證軟件配置的所有成分都齊全,復查的目的是保證軟件配置的所有成分都齊全,質量符合要求,文檔與程序完全一致,具有完質量符合要求,文檔與程序完全一致,具有完成軟件維護所必須的細節(jié),而且已經編好目錄。成軟件維護所必須的細節(jié),而且已經編好目錄。 7.5.2 軟件配置復查

40、軟件配置復查nAlpha測試由用戶在開發(fā)者的場所進行,并且測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者對用戶的在開發(fā)者對用戶的“指導指導”下進行測試。下進行測試。Alpha測試是在受控的環(huán)境中進行的。測試是在受控的環(huán)境中進行的。nBeta測試由軟件的最終用戶們在一個或多個客測試由軟件的最終用戶們在一個或多個客戶場所進行。開發(fā)者通常不在戶場所進行。開發(fā)者通常不在Beta測試的現場,測試的現場,因此,因此,Beta測試是軟件在開發(fā)者不能控制的環(huán)測試是軟件在開發(fā)者不能控制的環(huán)境中的境中的“真實真實”應用。應用。7.5.3 Alpha和和Beta測試測試測試階段測試階段主要依據主要依據測試人員測試人員

41、測試方式測試方式主要測試內容主要測試內容單元測試單元測試 系統(tǒng)設計文檔系統(tǒng)設計文檔 開發(fā)小組開發(fā)小組 白盒測試白盒測試接口測試接口測試路徑測試路徑測試 子系統(tǒng)子系統(tǒng)測試測試系統(tǒng)設計文檔系統(tǒng)設計文檔需求文檔需求文檔獨立測試獨立測試小組小組白盒測試白盒測試黑盒測試黑盒測試接口測試接口測試路徑測試路徑測試功能測試功能測試性能測試性能測試 系統(tǒng)測試系統(tǒng)測試 需求文檔需求文檔獨立測試獨立測試小組小組黑盒測試黑盒測試功能測試功能測試健壯性測試健壯性測試性能測試性能測試用戶界面測試用戶界面測試安全性測試安全性測試壓力測試壓力測試可靠性測試可靠性測試安裝安裝/反安裝測試反安裝測試 驗收測試驗收測試 需求文檔需

42、求文檔用戶用戶黑盒測試黑盒測試測試總結:測試總結:1. 接口測試接口測試n每個接口可能有多個輸入參數,每個參數有每個接口可能有多個輸入參數,每個參數有 “典型值典型值”、“邊界值邊界值”、“異常值異常值”之分。之分。n根據接口的定義,可以推斷某種輸入應當產生根據接口的定義,可以推斷某種輸入應當產生什么樣的輸出。輸出包括函數的返回值和輸出什么樣的輸出。輸出包括函數的返回值和輸出參數。參數。 n觀察是否有程序語句從來沒有被執(zhí)行過。觀察是否有程序語句從來沒有被執(zhí)行過。n要特別留意函數體內的錯誤處理程序塊。要特別留意函數體內的錯誤處理程序塊。 2. 路徑測試路徑測試n想遍歷測試幾乎是不可能的,不測試或

43、者胡亂想遍歷測試幾乎是不可能的,不測試或者胡亂找?guī)讞l路徑測試卻又不行。找?guī)讞l路徑測試卻又不行。 n輸入與對應的輸出之間的路徑是唯一的。由于輸入與對應的輸出之間的路徑是唯一的。由于接口測試時的輸入是有代表性的,因此相應的接口測試時的輸入是有代表性的,因此相應的路徑也具有代表性。路徑也具有代表性。n路徑測試檢查表:數據類型、變量值、邏輯判路徑測試檢查表:數據類型、變量值、邏輯判斷、循環(huán)、內存管理、文件斷、循環(huán)、內存管理、文件I/O、錯誤處理。、錯誤處理。3. 功能測試功能測試n功能測試的基本方法是構造一些合理輸入(在功能測試的基本方法是構造一些合理輸入(在需求范圍之內),檢查輸出是否與期望相同。需

44、求范圍之內),檢查輸出是否與期望相同。n功能測試有兩種比較好的測試方法:等價劃分功能測試有兩種比較好的測試方法:等價劃分法和邊界值分析法。法和邊界值分析法。 n等價劃分是指把輸入空間劃分為幾個等價劃分是指把輸入空間劃分為幾個“等價區(qū)等價區(qū)間間”,在每個,在每個“等價區(qū)間等價區(qū)間”中只需要測試一個中只需要測試一個典型值就可以了。典型值就可以了。n邊界值測試法是對等價劃分法的補充。除了典邊界值測試法是對等價劃分法的補充。除了典型值外還要用邊界值作為測試用例。型值外還要用邊界值作為測試用例。 4. 健壯性測試健壯性測試n健壯性是指在異常情況下,軟件能正常運行的健壯性是指在異常情況下,軟件能正常運行的

45、能力。能力。n健壯性有兩層含義:健壯性有兩層含義:q容錯能力。容錯性測試通常構造一些不合理的輸容錯能力。容錯性測試通常構造一些不合理的輸入來引誘軟件出錯。入來引誘軟件出錯。q恢復能力恢復能力 ?;謴蜏y試重點考察以下幾項:。恢復測試重點考察以下幾項:n系統(tǒng)能否重新運行;系統(tǒng)能否重新運行;n有無重要的數據丟失;有無重要的數據丟失;n是否毀壞了其它相關的軟件硬件。是否毀壞了其它相關的軟件硬件。 5. 性能測試性能測試n性能測試即測試軟件處理事務的速度,一是為性能測試即測試軟件處理事務的速度,一是為了檢驗性能是否符合需求,二是為了得到某些了檢驗性能是否符合需求,二是為了得到某些性能數據供人們參考。性能

46、數據供人們參考。 n有時人們關心測試的有時人們關心測試的“絕對值絕對值” 。n有時人們關心測試的有時人們關心測試的“相對值相對值” 。 6. 用戶界面測試用戶界面測試n絕大多數軟件擁有圖形用戶界面。絕大多數軟件擁有圖形用戶界面。n圖形用戶界面的測試重點是正確性、易用性和圖形用戶界面的測試重點是正確性、易用性和視覺效果。視覺效果。n在評價易用性和視覺效果時,主觀性非常強,在評價易用性和視覺效果時,主觀性非常強,應當考慮多個人的觀點。應當考慮多個人的觀點。 7. 信息安全測試信息安全測試n信息安全性是指防止系統(tǒng)被非法入侵的能力,信息安全性是指防止系統(tǒng)被非法入侵的能力,既屬于技術問題又屬于管理問題。

47、既屬于技術問題又屬于管理問題。n信息安全性測試有如下步驟:信息安全性測試有如下步驟:q為非法入侵設立目標;為非法入侵設立目標;q邀請(或懸賞)一些人扮演黑客,讓他們想盡辦邀請(或懸賞)一些人扮演黑客,讓他們想盡辦法入侵系統(tǒng),實現法入侵系統(tǒng),實現“目標目標”。q如果有人成功了,請他詳述入侵的過程。如果有人成功了,請他詳述入侵的過程。8. 壓力測試壓力測試n壓力測試也叫負荷測試,即獲取系統(tǒng)能正常運壓力測試也叫負荷測試,即獲取系統(tǒng)能正常運行的極限狀態(tài)。行的極限狀態(tài)。 n壓力測試的主要任務是:構造正確的輸入,使壓力測試的主要任務是:構造正確的輸入,使勁折騰系統(tǒng)卻讓它剛好不癱瘓。勁折騰系統(tǒng)卻讓它剛好不癱

48、瘓。 n壓力測試的一個變種是敏感測試。壓力測試的一個變種是敏感測試。n敏感測試目的是發(fā)現什么樣的輸入可能會引發(fā)敏感測試目的是發(fā)現什么樣的輸入可能會引發(fā)不穩(wěn)定現象。不穩(wěn)定現象。 9. 可靠性測試可靠性測試n可靠性是指在一定的環(huán)境下、給定的時間內、可靠性是指在一定的環(huán)境下、給定的時間內、系統(tǒng)不發(fā)生故障的概率。系統(tǒng)不發(fā)生故障的概率。n軟件可靠性測試可能會花費很長時間。軟件可靠性測試可能會花費很長時間。 n比較實用的辦法是,讓用戶使用該系統(tǒng),記錄比較實用的辦法是,讓用戶使用該系統(tǒng),記錄每一次發(fā)生故障的時刻。計算出相鄰故障的時每一次發(fā)生故障的時刻。計算出相鄰故障的時間間隔,注意要去掉非工作時間。間間隔,

49、注意要去掉非工作時間。n統(tǒng)計出不發(fā)生故障的統(tǒng)計出不發(fā)生故障的“最小時間間隔最小時間間隔”、“最最大時間間隔大時間間隔”和和“平均時間間隔平均時間間隔”。 10. 安裝安裝/反安裝測試反安裝測試n目前市面上有非常流行的、專門制作安裝目前市面上有非常流行的、專門制作安裝/反反安裝程序的一些工具,如安裝程序的一些工具,如Install Shelled。n主要測試工作:主要測試工作: q至少在標準配置和最低配置兩種環(huán)境下測試;至少在標準配置和最低配置兩種環(huán)境下測試;q如果有安裝界面,應當嘗試各種選項,如選擇如果有安裝界面,應當嘗試各種選項,如選擇“全部全部”、“部分部分”、“升級升級”等。等。 7.6

50、 白盒測試技術白盒測試技術n所謂測試方案包括具體的測試目的(例如,預所謂測試方案包括具體的測試目的(例如,預定要測試的具體功能),應該輸入的測試數據定要測試的具體功能),應該輸入的測試數據和預期的結果。通常又把測試數據和預期的輸和預期的結果。通常又把測試數據和預期的輸出結果稱為測試用例。出結果稱為測試用例。7.6.1 邏輯覆蓋邏輯覆蓋n有選擇地執(zhí)行程序中某些最有代表性的通路是有選擇地執(zhí)行程序中某些最有代表性的通路是對窮盡測試的惟一可行的替代辦法。對窮盡測試的惟一可行的替代辦法。n從覆蓋源程序語句的詳盡程度分析,大致有以從覆蓋源程序語句的詳盡程度分析,大致有以下一些不同的覆蓋標準:下一些不同的覆

51、蓋標準:q語句覆蓋語句覆蓋q判定覆蓋判定覆蓋 q條件覆蓋條件覆蓋 q判定判定/條件覆蓋條件覆蓋 q條件組合覆蓋條件組合覆蓋 1. 語句覆蓋語句覆蓋n含義:選擇足夠多的測含義:選擇足夠多的測試數據,使被測程序中試數據,使被測程序中每個語句至少執(zhí)行一次。每個語句至少執(zhí)行一次。n分析:分析: 執(zhí)行路徑執(zhí)行路徑sacbedn測試用例:測試用例: A2,B0,X4 覆蓋覆蓋sacbed語句覆蓋特點:語句覆蓋特點:n語句覆蓋對程序的邏輯覆蓋很少。語句覆蓋對程序的邏輯覆蓋很少。n語句覆蓋只關心判定表達式的值,而沒有分別語句覆蓋只關心判定表達式的值,而沒有分別測試判定表達式中每個條件取不同值時的情況。測試判定

52、表達式中每個條件取不同值時的情況。n語句覆蓋是很弱的邏輯覆蓋標準。語句覆蓋是很弱的邏輯覆蓋標準。 2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)n含義:不僅每個語句必須含義:不僅每個語句必須至少執(zhí)行一次,而且每個至少執(zhí)行一次,而且每個判定的每種可能的結果都判定的每種可能的結果都應該至少執(zhí)行一次。應該至少執(zhí)行一次。n所有判定分支:所有判定分支: (1) a點判定為點判定為T (2) a點判定為點判定為F (3) b點判定為點判定為T (4) b點判定為點判定為F2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)n測試用例:測試用例: . 滿足滿足(1)(4) A3,B0,X3 覆蓋覆蓋sacbd .

53、 滿足滿足(2)(3) A2,B1,X1 覆蓋覆蓋sabed2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)n或者或者 . 滿足滿足(1)(3) A2,B0,X3 覆蓋覆蓋sacbed . 滿足滿足(2)(4) A3,B1,X1 覆蓋覆蓋sabdn特點:比語句覆蓋強,但特點:比語句覆蓋強,但對程序邏輯的覆蓋程度仍對程序邏輯的覆蓋程度仍不高。不高。 3. 條件覆蓋條件覆蓋n含義:不僅每個語句至少含義:不僅每個語句至少執(zhí)行一次,而且使判定表執(zhí)行一次,而且使判定表達式中的每個條件都取到達式中的每個條件都取到各種可能的結果。各種可能的結果。n所有條件:所有條件: (1)A1 (2)A1 (3)B0 (4

54、)B0 (5)A2 (6)A2 (7)X1 (8)X13. 條件覆蓋條件覆蓋n測試用例:測試用例: . 滿足滿足(1)(3)(5)(7) A2,B0,X4 覆蓋覆蓋sacbed . 滿足滿足(2)(4)(6)(8) A1,B1,X1 覆蓋覆蓋sabd 3. 條件覆蓋條件覆蓋n或者或者 . 滿足滿足(1)(3)(5)(8) A2,B0,X1 覆蓋覆蓋sacbed . 滿足滿足(2)(4)(6)(7) A1,B1,X2 覆蓋覆蓋sabedn或者或者條件覆蓋特點:條件覆蓋特點:n條件覆蓋通常比判定覆蓋強,因為它使每個條條件覆蓋通常比判定覆蓋強,因為它使每個條件都取到了兩個不同的結果,判定覆蓋卻只關件

55、都取到了兩個不同的結果,判定覆蓋卻只關心整個判定表達式的值。但也有反例,如第二心整個判定表達式的值。但也有反例,如第二組測試用例。組測試用例。n判定覆蓋不一定包含條件覆蓋,條件覆蓋也不判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。一定包含判定覆蓋。4. 判定判定/條件覆蓋條件覆蓋n含義:使得判定表達式中的每個條件都取到各種可能含義:使得判定表達式中的每個條件都取到各種可能的值,每個判定表達式也都取到各種可能的結果。的值,每個判定表達式也都取到各種可能的結果。n測試用例:測試用例: . 滿足條件滿足條件(1)(3)(5)(7) 和判定和判定(1)(3) A2,B0,X4 覆蓋覆蓋sa

56、cbed . 滿足條件滿足條件(2)(4)(6)(8) 和判定和判定(2)(4) A1,B1,X1 覆蓋覆蓋sabd n特點:有時判定特點:有時判定/條件覆蓋也并不比條件覆蓋更強。條件覆蓋也并不比條件覆蓋更強。 5. 條件組合覆蓋條件組合覆蓋n含義:要求選取足夠多的測試數據,使得每個判定表達含義:要求選取足夠多的測試數據,使得每個判定表達式中條件的各種可能組合都至少出現一次。式中條件的各種可能組合都至少出現一次。n條件組合:條件組合: (1)A1,B0 (2)A1,B0 (3)A1,B0 (4)A1,B0 (5)A2,X1 (6)A2,X1 (7)A2,X1 (8)A2,X1 5. 條件組合覆

57、蓋條件組合覆蓋n測試用例:測試用例: .滿足滿足(1)(5) A2,B0,X4 覆蓋覆蓋sacbed .滿足滿足(2)(6) A2,B1,X1 覆蓋覆蓋sabed .滿足滿足(3)(7) A1,B0,X2 覆蓋覆蓋sabed . 滿足滿足(4)(8) A1,B1,X1 覆蓋覆蓋sabd條件組合覆蓋特點:條件組合覆蓋特點:n條件組合覆蓋是前述幾種覆蓋標準中最強的。條件組合覆蓋是前述幾種覆蓋標準中最強的。滿足條件組合覆蓋標準的測試數據,也一定滿滿足條件組合覆蓋標準的測試數據,也一定滿足判定覆蓋、條件覆蓋和判定足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。條件覆蓋標準。n但是,條件組合覆蓋標準的測試數據

58、并不一定但是,條件組合覆蓋標準的測試數據并不一定能使程序中的每條路徑都執(zhí)行到。(能使程序中的每條路徑都執(zhí)行到。(4組數據組數據都沒有測試到都沒有測試到sacbd) 從對程序路徑的覆蓋程度分析的邏輯覆蓋標準:從對程序路徑的覆蓋程度分析的邏輯覆蓋標準:6. 點覆蓋點覆蓋n含義:選取足夠多的測試數據,使得程序執(zhí)行路徑至含義:選取足夠多的測試數據,使得程序執(zhí)行路徑至少經過流圖的每個結點一次。少經過流圖的每個結點一次。n特點:由于流圖的每個結點與一條或多條語句相對應,特點:由于流圖的每個結點與一條或多條語句相對應,因此點覆蓋標準和語句覆蓋標準是相同的。因此點覆蓋標準和語句覆蓋標準是相同的。7. 邊覆蓋邊

59、覆蓋n含義:選取足夠多測試數據,使得程序執(zhí)行路徑至少含義:選取足夠多測試數據,使得程序執(zhí)行路徑至少經過流圖中每條邊一次。經過流圖中每條邊一次。n特點:通常邊覆蓋和判定覆蓋是一致的。特點:通常邊覆蓋和判定覆蓋是一致的。8. 路徑覆蓋路徑覆蓋n含義:選取足夠多測試數據,使程序的每條可能路徑含義:選取足夠多測試數據,使程序的每條可能路徑都至少執(zhí)行一次都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個環(huán)如果程序圖中有環(huán),則要求每個環(huán)至少經過一次至少經過一次)。 語句語句覆蓋覆蓋判判定定覆覆蓋蓋條條件件覆覆蓋蓋判定判定/條件覆蓋條件覆蓋條件組合覆蓋條件組合覆蓋路徑覆蓋路徑覆蓋點覆蓋點覆蓋邊覆蓋邊覆蓋7.6.2

60、 控制結構測試控制結構測試1. 基本路徑測試基本路徑測試n基本路徑測試是基本路徑測試是Tom McCabe提出的一種白盒提出的一種白盒測試技術。測試技術。q首先計算程序的環(huán)形復雜度;首先計算程序的環(huán)形復雜度;q以該復雜度為指南定義執(zhí)行路徑的基本集合;以該復雜度為指南定義執(zhí)行路徑的基本集合;q從該基本集合導出的測試用例可保證程序中的每從該基本集合導出的測試用例可保證程序中的每條語句至少執(zhí)行一次,而且每個條件在執(zhí)行時都條語句至少執(zhí)行一次,而且每個條件在執(zhí)行時都將分別取真、假兩種值。將分別取真、假兩種值。 i=1;total.input=total.valid=0;sum=0;DO WHILE valuei -99

溫馨提示

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

評論

0/150

提交評論