軟件工程導(dǎo)論_課件之第7章_實(shí)現(xiàn)(第五版)(張海潘編著)_第1頁
軟件工程導(dǎo)論_課件之第7章_實(shí)現(xiàn)(第五版)(張海潘編著)_第2頁
軟件工程導(dǎo)論_課件之第7章_實(shí)現(xiàn)(第五版)(張海潘編著)_第3頁
軟件工程導(dǎo)論_課件之第7章_實(shí)現(xiàn)(第五版)(張海潘編著)_第4頁
軟件工程導(dǎo)論_課件之第7章_實(shí)現(xiàn)(第五版)(張海潘編著)_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、為了便于調(diào)試和提高軟件可靠性,語言特點(diǎn)應(yīng)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯(cuò)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤;誤;n為了降低軟件開發(fā)和維護(hù)的成本,選用的高級(jí)為了降低軟件開發(fā)和維護(hù)的成本,選用的高級(jí)語言應(yīng)該有良好的獨(dú)立編譯機(jī)制。語言應(yīng)該有良好的獨(dú)立編譯機(jī)制。 主要的實(shí)用標(biāo)準(zhǔn):主要的實(shí)用標(biāo)準(zhǔn):n系統(tǒng)用戶的要求系統(tǒng)用戶的要求n可以使用的編譯程序可以使用的編譯程序n可以得到的軟件工具可以得到的軟件工具n工程規(guī)模工程規(guī)模n程序員的知識(shí)程序員的知識(shí)n軟件可移植性要求軟件可移植性要求n軟件的應(yīng)用領(lǐng)域軟件的應(yīng)用領(lǐng)域7.1.2 編碼風(fēng)格編碼風(fēng)格1. 程序內(nèi)部的文檔程序內(nèi)部的文檔n恰當(dāng)?shù)臉?biāo)識(shí)符恰當(dāng)?shù)?/p>

6、標(biāo)識(shí)符n適當(dāng)?shù)淖⒔膺m當(dāng)?shù)淖⒔鈔程序的視覺組織程序的視覺組織2. 數(shù)據(jù)說明數(shù)據(jù)說明n數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化。數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化。n當(dāng)多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字當(dāng)多個(gè)變量名在一個(gè)語句中說明時(shí),應(yīng)該按字母順序排列這些變量。母順序排列這些變量。n如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)該用注解說明用程序設(shè)計(jì)語言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)該用注解說明用程序設(shè)計(jì)語言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。構(gòu)的方法和特點(diǎn)。 3. 語句構(gòu)造語句構(gòu)造n不要為了節(jié)省空間而把多個(gè)語句寫在同一行;不要為了節(jié)省空間而把多個(gè)語句寫在同一行;n盡量避免復(fù)雜的條件測(cè)試;盡量避免復(fù)雜的條件

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

8、值;邊界數(shù)值;n當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式一致;式一致;n設(shè)計(jì)良好的輸出報(bào)表;設(shè)計(jì)良好的輸出報(bào)表;n給所有輸出數(shù)據(jù)加標(biāo)志。給所有輸出數(shù)據(jù)加標(biāo)志。 5. 效率效率n效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。n效率是性能要求,因此應(yīng)該在需求分析階段確效率是性能要求,因此應(yīng)該在需求分析階段確定效率方面的要求。定效率方面的要求。n效率是靠好設(shè)計(jì)來提高的。效率是靠好設(shè)計(jì)來提高的。n程序的效率和程序的簡(jiǎn)單程度是一致的,不要程序的效率和程序的簡(jiǎn)單程度是一致的,不要犧牲程序的清晰性和可讀性來不必要地提

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

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

11、術(shù)通常也能提高存儲(chǔ)器效率。提高執(zhí)行效率的技術(shù)通常也能提高存儲(chǔ)器效率。提高存儲(chǔ)器效率的關(guān)鍵同樣是提高存儲(chǔ)器效率的關(guān)鍵同樣是“簡(jiǎn)單簡(jiǎn)單”。 (3) 輸入輸出的效率輸入輸出的效率n如果用戶為了給計(jì)算機(jī)提供輸入信息或?yàn)榱死砣绻脩魹榱私o計(jì)算機(jī)提供輸入信息或?yàn)榱死斫庥?jì)算機(jī)輸出的信息,所需花費(fèi)的腦力勞動(dòng)是解計(jì)算機(jī)輸出的信息,所需花費(fèi)的腦力勞動(dòng)是經(jīng)濟(jì)的,那么人和計(jì)算機(jī)之間通信的效率就高。經(jīng)濟(jì)的,那么人和計(jì)算機(jī)之間通信的效率就高。因此,簡(jiǎn)單清晰同樣是提高人機(jī)通信效率的關(guān)因此,簡(jiǎn)單清晰同樣是提高人機(jī)通信效率的關(guā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:數(shù)據(jù)說明標(biāo)準(zhǔn)化:數(shù)據(jù)說明標(biāo)準(zhǔn)化 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:強(qiáng)調(diào)清晰性:強(qiáng)調(diào)清晰性 AI=AI+AT; AT=AI-AT; AI=AI-AT; WORK=AT

14、; AT=AI; AI=WORK;例例7:簡(jiǎn)單直接:簡(jiǎn)單直接 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:避免不必要的轉(zhuǎn)移:避免不必要的轉(zhuǎn)移 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 軟件測(cè)試基礎(chǔ)軟件測(cè)試基礎(chǔ)7.2.1 軟件測(cè)試的目標(biāo)軟件測(cè)試的目標(biāo)n測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程;程;n好

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

37、執(zhí)行已經(jīng)做過的測(cè)試的某個(gè)回歸測(cè)試是指重新執(zhí)行已經(jīng)做過的測(cè)試的某個(gè)子集,以保證測(cè)試過程中的變化沒有帶來非預(yù)子集,以保證測(cè)試過程中的變化沒有帶來非預(yù)期的副作用。期的副作用。n回歸測(cè)試就是用于保證由于調(diào)試或其他原因引回歸測(cè)試就是用于保證由于調(diào)試或其他原因引起的變化,不會(huì)導(dǎo)致非預(yù)期的軟件行為或額外起的變化,不會(huì)導(dǎo)致非預(yù)期的軟件行為或額外錯(cuò)誤的測(cè)試活動(dòng)。錯(cuò)誤的測(cè)試活動(dòng)。n回歸測(cè)試可以通過重新執(zhí)行全部測(cè)試用例的一回歸測(cè)試可以通過重新執(zhí)行全部測(cè)試用例的一個(gè)子集人工地進(jìn)行,也可以使用自動(dòng)化的捕獲個(gè)子集人工地進(jìn)行,也可以使用自動(dòng)化的捕獲回放工具自動(dòng)進(jìn)行。回放工具自動(dòng)進(jìn)行。 7.5 確認(rèn)測(cè)試確認(rèn)測(cè)試n確認(rèn)測(cè)試也稱

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

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

40、軟件配置復(fù)查nAlpha測(cè)試由用戶在開發(fā)者的場(chǎng)所進(jìn)行,并且測(cè)試由用戶在開發(fā)者的場(chǎng)所進(jìn)行,并且在開發(fā)者對(duì)用戶的在開發(fā)者對(duì)用戶的“指導(dǎo)指導(dǎo)”下進(jìn)行測(cè)試。下進(jìn)行測(cè)試。Alpha測(cè)試是在受控的環(huán)境中進(jìn)行的。測(cè)試是在受控的環(huán)境中進(jìn)行的。nBeta測(cè)試由軟件的最終用戶們?cè)谝粋€(gè)或多個(gè)客測(cè)試由軟件的最終用戶們?cè)谝粋€(gè)或多個(gè)客戶場(chǎng)所進(jìn)行。開發(fā)者通常不在戶場(chǎng)所進(jìn)行。開發(fā)者通常不在Beta測(cè)試的現(xiàn)場(chǎng),測(cè)試的現(xiàn)場(chǎng),因此,因此,Beta測(cè)試是軟件在開發(fā)者不能控制的環(huán)測(cè)試是軟件在開發(fā)者不能控制的環(huán)境中的境中的“真實(shí)真實(shí)”應(yīng)用。應(yīng)用。7.5.3 Alpha和和Beta測(cè)試測(cè)試測(cè)試階段測(cè)試階段主要依據(jù)主要依據(jù)測(cè)試人員測(cè)試人員

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

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

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

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

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

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

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

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

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

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

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

52、表達(dá)式中每個(gè)條件取不同值時(shí)的情況。n語句覆蓋是很弱的邏輯覆蓋標(biāo)準(zhǔn)。語句覆蓋是很弱的邏輯覆蓋標(biāo)準(zhǔn)。 2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)n含義:不僅每個(gè)語句必須含義:不僅每個(gè)語句必須至少執(zhí)行一次,而且每個(gè)至少執(zhí)行一次,而且每個(gè)判定的每種可能的結(jié)果都判定的每種可能的結(jié)果都應(yīng)該至少執(zhí)行一次。應(yīng)該至少執(zhí)行一次。n所有判定分支:所有判定分支: (1) a點(diǎn)判定為點(diǎn)判定為T (2) a點(diǎn)判定為點(diǎn)判定為F (3) b點(diǎn)判定為點(diǎn)判定為T (4) b點(diǎn)判定為點(diǎn)判定為F2. 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)n測(cè)試用例:測(cè)試用例: . 滿足滿足(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特點(diǎn):比語句覆蓋強(qiáng),但特點(diǎn):比語句覆蓋強(qiáng),但對(duì)程序邏輯的覆蓋程度仍對(duì)程序邏輯的覆蓋程度仍不高。不高。 3. 條件覆蓋條件覆蓋n含義:不僅每個(gè)語句至少含義:不僅每個(gè)語句至少執(zhí)行一次,而且使判定表執(zhí)行一次,而且使判定表達(dá)式中的每個(gè)條件都取到達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果。各種可能的結(jié)果。n所有條件:所有條件: (1)A1 (2)A1 (3)B0 (4

54、)B0 (5)A2 (6)A2 (7)X1 (8)X13. 條件覆蓋條件覆蓋n測(cè)試用例:測(cè)試用例: . 滿足滿足(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或者或者條件覆蓋特點(diǎn):條件覆蓋特點(diǎn):n條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗姑總€(gè)條條件覆蓋通常比判定覆蓋強(qiáng),因?yàn)樗姑總€(gè)條件都取到了兩個(gè)不同的結(jié)果,判定覆蓋卻只關(guān)件

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

56、cbed . 滿足條件滿足條件(2)(4)(6)(8) 和判定和判定(2)(4) A1,B1,X1 覆蓋覆蓋sabd n特點(diǎn):有時(shí)判定特點(diǎn):有時(shí)判定/條件覆蓋也并不比條件覆蓋更強(qiáng)。條件覆蓋也并不比條件覆蓋更強(qiáng)。 5. 條件組合覆蓋條件組合覆蓋n含義:要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)含義:要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。式中條件的各種可能組合都至少出現(xià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測(cè)試用例:測(cè)試用例: .滿足滿足(1)(5) A2,B0,X4 覆蓋覆蓋sacbed .滿足滿足(2)(6) A2,B1,X1 覆蓋覆蓋sabed .滿足滿足(3)(7) A1,B0,X2 覆蓋覆蓋sabed . 滿足滿足(4)(8) A1,B1,X1 覆蓋覆蓋sabd條件組合覆蓋特點(diǎn):條件組合覆蓋特點(diǎn):n條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。條件組合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強(qiáng)的。滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。條件覆蓋標(biāo)準(zhǔn)。n但是,條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù)

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

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

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

溫馨提示

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