軟件工程軟件測試_第1頁
軟件工程軟件測試_第2頁
軟件工程軟件測試_第3頁
軟件工程軟件測試_第4頁
軟件工程軟件測試_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第 八八 章章8 一、軟件測試的目的和重要性一、軟件測試的目的和重要性因為開發(fā)工作的前期不可避免地會引入錯誤,測因為開發(fā)工作的前期不可避免地會引入錯誤,測試的試的目的是為了發(fā)現(xiàn)和改正錯誤目的是為了發(fā)現(xiàn)和改正錯誤,這對于某些涉,這對于某些涉及人的生命安全或重要的軍事、經(jīng)濟目標(biāo)的項目及人的生命安全或重要的軍事、經(jīng)濟目標(biāo)的項目顯得尤其重要。顯得尤其重要。19631963年美國飛往火星的火箭爆炸,原因是年美國飛往火星的火箭爆炸,原因是FORTRANFORTRAN程序:程序:DO 5 I=1DO 5 I=1,3 3 誤寫為:誤寫為:DO 5 I=1. 3 DO 5 I=1. 3 損失損失1000100

2、0萬美元。萬美元。19671967年蘇聯(lián)年蘇聯(lián)“聯(lián)盟一號聯(lián)盟一號”宇宙飛船返回時因忽略宇宙飛船返回時因忽略一個小數(shù)點,在進(jìn)入大氣層時打不開降落傘而一個小數(shù)點,在進(jìn)入大氣層時打不開降落傘而燒毀。燒毀。1、軟件測試的開銷大、軟件測試的開銷大按照按照Boehm的統(tǒng)計,軟件測試的開銷大約占總成的統(tǒng)計,軟件測試的開銷大約占總成本的本的30%-50%。例如:。例如:APPOLLO登月計劃,登月計劃,80%的經(jīng)費用于軟件測試。的經(jīng)費用于軟件測試。2、不能進(jìn)行、不能進(jìn)行“窮舉窮舉”測試測試只有將所有可能的情況都測試到,才有可能檢查只有將所有可能的情況都測試到,才有可能檢查出所有的錯誤。但這是不可能的:出所有的

3、錯誤。但這是不可能的:例:程序例:程序P有兩個整型輸入量有兩個整型輸入量 X、Y,輸出量為輸出量為Z,在在32位機上運行。所有的測試數(shù)據(jù)組(位機上運行。所有的測試數(shù)據(jù)組(Xi,Yi)的的數(shù)目為:數(shù)目為: 2 2 = 2 1毫秒執(zhí)行毫秒執(zhí)行1次,共需次,共需5億年。億年。323264PXYZ3、軟件測試難度大、軟件測試難度大根據(jù)上述分析,既然不能進(jìn)行根據(jù)上述分析,既然不能進(jìn)行 “窮舉窮舉”測試,測試,又要查出盡可能多的錯誤,軟件測試工作的難又要查出盡可能多的錯誤,軟件測試工作的難度大。只有選擇度大。只有選擇 “高效的測試用例高效的測試用例”什么是什么是“高效的測試用例高效的測試用例”?如何選擇如

4、何選擇“高效的測試用例高效的測試用例”?這就是本章討論的主要問題!這就是本章討論的主要問題!3 3、充分注意測試中的群集現(xiàn)象。、充分注意測試中的群集現(xiàn)象。1 1、盡量不由程序設(shè)計者進(jìn)行測試。、盡量不由程序設(shè)計者進(jìn)行測試。2 2、關(guān)鍵是注重測試用例的選擇。、關(guān)鍵是注重測試用例的選擇。輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預(yù)期的輸出結(jié)果)輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預(yù)期的輸出結(jié)果)既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。用例既能檢查應(yīng)完成的任務(wù),也能夠檢查不應(yīng)該用例既能檢查應(yīng)完成的任務(wù),也能夠檢查不應(yīng)該完成的任務(wù)。完成的任務(wù)。長期保存測試用例。長期保存測試用例。模塊測試模

5、塊測試整體測試整體測試功能測試功能測試預(yù)測試預(yù)測試系統(tǒng)測試系統(tǒng)測試驗收測試驗收測試安裝測試安裝測試概要設(shè)計審查概要設(shè)計審查詳細(xì)設(shè)計審查詳細(xì)設(shè)計審查代碼審查代碼審查 測試測試 (單元測試)單元測試)(組裝測試)(組裝測試)(有效性測試)(有效性測試)(確認(rèn)測試)(確認(rèn)測試)軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試一、靜態(tài)分析方法一、靜態(tài)分析方法指以人工的、非形式化的方法對程序進(jìn)行分析和指以人工的、非形式化的方法對程序進(jìn)行分析和測試。測試。桌前檢查桌前檢查代碼會審代碼會審步行檢查步行檢查步行檢查時,還常使用以下分析方法:步行檢查時,還常使用以下分析方法: 調(diào)

6、用圖調(diào)用圖從語義的角度考察程序的控制路線。從語義的角度考察程序的控制路線。 數(shù)據(jù)流分析圖數(shù)據(jù)流分析圖檢查分析變量的定義和引用情況。檢查分析變量的定義和引用情況。無論無論Y 為何值,都為何值,都不能夠調(diào)用子程序不能夠調(diào)用子程序。READYY0NX:=YX1) AND (B=0) A1) AND (B=0) THEN X:=X/A ; THEN X:=X/A ; IF (A=2) OR (X1) IF (A=2) OR (X1) THEN X:=X+1 THEN X:=X+1END;END;1 1)選擇邏輯覆蓋標(biāo)準(zhǔn)。)選擇邏輯覆蓋標(biāo)準(zhǔn)。2 2)按照覆蓋標(biāo)準(zhǔn)列出所有情況。)按照覆蓋標(biāo)準(zhǔn)列出所有情況。

7、3 3)選擇確定測試用例。)選擇確定測試用例。4 4)驗證分析運行結(jié)果與預(yù)期結(jié)果。)驗證分析運行結(jié)果與預(yù)期結(jié)果。邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)白盒法舉例白盒法舉例Procedure Procedure (VAR A,B,X:REALVAR A,B,X:REAL);); BEGIN BEGIN IF IF(A1) AND (B=0) A1) AND (B=0) THEN X:=X/A ; THEN X:=X/A ; IF (A=2) OR (X1) IF (A=2) OR (X1) THEN X:=X+1 THEN X:=X+1 END; END;A1ANDB=0X:=X/AA=2OR X1X:=X+1YNY

8、N邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)使得程序中每個語句至少使得程序中每個語句至少都能被執(zhí)行一次。都能被執(zhí)行一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde滿足語句覆蓋的情況:滿足語句覆蓋的情況: 執(zhí)行路徑:執(zhí)行路徑:aceace選擇用例:選擇用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3) 用例格式:用例格式: 輸入輸入(A,B,X)(A,B,X),輸出,輸出(A,B,X)(A,B,X)YNYN使得程序中每個判定至少為使得程序中每個判定至少為TRUE TRUE 或或FALSEFALSE各一次。各一次。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde覆蓋

9、情況:覆蓋情況:應(yīng)執(zhí)行路徑應(yīng)執(zhí)行路徑ace abd 或:或: abe acd選擇用例選擇用例(其一):其一): (2,0,4),(2,0,3) ace (2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd (1,1,1),(1,1,1) abd (2,1,1),(2,1,2) abe (2,1,1),(2,1,2) abe (3,0,3),(3,1,1) acd (3,0,3),(3,1,1) acdYYNNA1ANDB=0X:=X/AA=2OR X1X:=X+1abcde使得判定中的每個條件獲使得判定中的每個條件獲得各種可能的結(jié)果。得各種可能的結(jié)果。應(yīng)滿足以下覆蓋情

10、況:應(yīng)滿足以下覆蓋情況:判定一判定一: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1選擇用例:選擇用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3) aceace (1,1,1),(1,1,1) (1,1,1),(1,1,1) a abdbdNNYY2 2A1A20 0B=04 4X11 1A1A=21 1B01 1X1注意注意:(1,0,3),(1,0,4):(1,0,3),(1,0,4) a abebe(2,1,1),(2,1,2)(2,1,1),(2,1,2) abeabe滿足條件覆蓋,但不滿足判斷滿足條件覆蓋,但不滿足判斷覆蓋。覆蓋。

11、同時滿足判斷覆蓋和條同時滿足判斷覆蓋和條件覆蓋。件覆蓋。A1ANDB=0X:=X/AA=2OR X1X:=X+1abcde應(yīng)滿足以下覆蓋情況:應(yīng)滿足以下覆蓋情況: 條件條件: A1, A1, B=0, B0 A=2, A2, X1, X1 應(yīng)執(zhí)行路徑應(yīng)執(zhí)行路徑ace abd 或:或: acd abe選擇用例:選擇用例: (2,0,4),(2,0,3) (2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (abd) (1,1,1),(1,1,1) (abd)YYNN使得每個判定中條件的各種使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。可能組合都至少出現(xiàn)一次。A1X

12、:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN編譯系統(tǒng)下的執(zhí)行情況:編譯系統(tǒng)下的執(zhí)行情況:部分路徑未被執(zhí)行。部分路徑未被執(zhí)行。滿足以下覆蓋情況:滿足以下覆蓋情況: A1, B =0 A1, B0 A1, B =0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1選擇用例:選擇用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) (2,1,1),(2,1,2) (2,1,1),(2,1,2) (1,0,3),(1,0,4) (1,0,3),(1,0,4) (1,1,1),(1,1,1) (1,1,1),(1,1,1) 等等價價分分類類法法

13、邊邊值值分分析析法法錯錯誤誤推推測測法法因因果果圖圖法法(2)(2)黑盒法黑盒法 不考慮程序的內(nèi)部結(jié)構(gòu)與特性,不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性只根據(jù)程序功能或程序的外部特性設(shè)計測試用例。設(shè)計測試用例?;舅枷耄夯舅枷耄焊鶕?jù)程序的根據(jù)程序的I/O特性,將程序的定義域特性,將程序的定義域劃分為有限個等價區(qū)段劃分為有限個等價區(qū)段 “等價類等價類”,從等價類,從等價類中選擇出的用例,具有中選擇出的用例,具有“代表性代表性”。等價類分為:等價類分為:有效等價類有效等價類 對于程序的規(guī)格說明,是合理的、對于程序的規(guī)格說明,是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。有意義的輸入數(shù)據(jù)構(gòu)

14、成的集合。無效等價類無效等價類 對于程序的規(guī)格說明,是不合理的、對于程序的規(guī)格說明,是不合理的、沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。 應(yīng)按照輸入條件(如輸入值的范圍,值的個數(shù),值應(yīng)按照輸入條件(如輸入值的范圍,值的個數(shù),值的集合,輸入條件必須如何)劃分為有效等價類和無效的集合,輸入條件必須如何)劃分為有效等價類和無效等價類。等價類。例如:每個學(xué)生可選修例如:每個學(xué)生可選修1-31-3門課程門課程可以劃分一個有效等價類:選修可以劃分一個有效等價類:選修1-31-3門課程。門課程??梢詣澐謨蓚€無效等價類:未選修課,選修課超過可以劃分兩個無效等價類:未選修課,選修課超過3 3

15、門。門。 顯然,關(guān)鍵是顯然,關(guān)鍵是如何劃分等價類如何劃分等價類A A 為每個等價類編號;為每個等價類編號;B B 使一個測試用例盡可能覆蓋多個有效等價類使一個測試用例盡可能覆蓋多個有效等價類C C 特別要注意特別要注意: :一個測試用例只能覆蓋一個無效等價類。一個測試用例只能覆蓋一個無效等價類。等價分類法步驟等價分類法步驟例:設(shè)三角形的三條邊為例:設(shè)三角形的三條邊為A,B,C。(1)如果能夠構(gòu)成三角形的三條邊,必須滿足:)如果能夠構(gòu)成三角形的三條邊,必須滿足:A0,B0,C0,且且A+BC,B+CA,A+CB(2)如果是等腰三角形,判斷是否)如果是等腰三角形,判斷是否A=B, 或或B=C, 或

16、或A=C(3)如果是等邊三角形,判斷是否)如果是等邊三角形,判斷是否A=B,且,且B=C,且,且A=C分別列出這三種情況的等價類。分別列出這三種情況的等價類。輸入條件輸入條件有效等價類有效等價類無效等價類無效等價類是否是三角形的是否是三角形的三條邊三條邊A0,B0,C0,且且A+BC,B+CA,A+CBA=0, B=0, C=0, A+B=C,B+C=A,A+C=B是否是等腰三角是否是等腰三角形形A=B, B=C, A=CAB and BC and AC是否是等邊三角是否是等邊三角形形A=B and B=C and A=CAB , BC , AC 基本思想:基本思想: 選擇等價類的邊緣值作為測

17、試用例,選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用讓每個等價類的邊界都得到測試,選擇測試用例既考慮例既考慮輸入輸入亦考慮亦考慮輸出輸出。 分析步驟:分析步驟: A A 先劃分等價類。先劃分等價類。B B 選擇測試用例,測試等價類邊界。選擇測試用例,測試等價類邊界。 邊界邊界選擇原則:選擇原則: A A 按照輸入值范圍的邊界。按照輸入值范圍的邊界。B B 按照輸入按照輸入/ /輸出值個數(shù)的邊界。輸出值個數(shù)的邊界。C C 輸出值域的邊界。輸出值域的邊界。D D 輸入輸入/ /輸出有序集的邊界。輸出有序集的邊界。按照輸入值范圍的邊界。按照輸入值范圍的邊界。 例如:輸入值

18、的范圍是例如:輸入值的范圍是-1.0-1.0至至1.01.0,則可選擇用例,則可選擇用例: : 1.01.0、1.01.0、-1.001-1.001、1.0011.001。按照輸入按照輸入/ /輸出值個數(shù)的邊界。輸出值個數(shù)的邊界。 例如:輸入文件可有例如:輸入文件可有1-2551-255個記錄,則設(shè)計用例:文個記錄,則設(shè)計用例:文件的記錄數(shù)為件的記錄數(shù)為 0 0個、個、1 1個、個、255255個、個、256256個。個。輸出值域的邊界。輸出值域的邊界。 例如:檢索文獻(xiàn)摘要,最多例如:檢索文獻(xiàn)摘要,最多4 4篇。設(shè)計用例:可檢索篇。設(shè)計用例:可檢索0 0篇、篇、1 1篇、篇、4 4篇,和篇,和

19、5 5篇(錯誤)。篇(錯誤)。 D D 輸入輸入/ /輸出有序集(輸出有序集(如順序文件、線性表)如順序文件、線性表)的邊界。的邊界。 應(yīng)選擇第一個元素和最后一個元素。應(yīng)選擇第一個元素和最后一個元素。 憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發(fā)生錯誤的特殊情況,選擇測能有的錯誤和容易發(fā)生錯誤的特殊情況,選擇測試用例。試用例。把輸入條件視為把輸入條件視為“因因”,把輸出條件視為,把輸出條件視為“果果”,將黑盒看成是從因到果的網(wǎng)絡(luò)圖,采用,將黑盒看成是從因到果的網(wǎng)絡(luò)圖,采用邏輯圖的形式來表達(dá)功能說明書中輸入條件的各邏輯圖的形式來表達(dá)功能說明書

20、中輸入條件的各種組合與輸出的關(guān)系。根據(jù)這種關(guān)系可選擇高效種組合與輸出的關(guān)系。根據(jù)這種關(guān)系可選擇高效的測試用例。的測試用例。 因果圖是一種形式化語言,是一種組合邏輯因果圖是一種形式化語言,是一種組合邏輯網(wǎng)絡(luò)圖。網(wǎng)絡(luò)圖。 因果圖的基本符號因果圖的基本符號0 - 0 - 表示表示“不出現(xiàn)不出現(xiàn)”1 - 1 - 表示表示“出現(xiàn)出現(xiàn)” 恒等恒等若若a a為為1 1,則,則b b為為1 1,否則,否則b b為為0 0。 “非非”函數(shù)函數(shù) 若若a a為為1 1,則,則b b為為0 0,否則,否則b b為為1 1。 “ “或或”函數(shù)函數(shù) 若若a a或或b b為為1 1,則,則d d為為1 1,否則,否則d d

21、為為0 0。 “ “與與”函數(shù)函數(shù) 若若a a與與b b同為同為1 1,則,則d d為為1 1,否則,否則d d為為0 0。abababd dabd d對對“與與”、“或或”函數(shù)的限制符號函數(shù)的限制符號E E約束(異)約束(異) 排斥排斥即即a a、b b不能同時為不能同時為1 1。I I約束(或)約束(或) 包容包容a a、b b、c c不能同時為不能同時為0 0。O O約束(唯一約束(唯一) 選一選一 a a、b b中僅有一個為中僅有一個為1 1。R R約束(要求約束(要求) 需要需要 a a為為1 1時,時,b b必須為必須為1 1M M約束(強制約束(強制) 屏蔽屏蔽 若若a a為為1

22、 1時,則時,則b b強制為強制為1 1。abEabcIabRabO OabM分析規(guī)范,即將問題分為若干可工作的步驟。分析規(guī)范,即將問題分為若干可工作的步驟。標(biāo)識出規(guī)范中的原因與結(jié)果。標(biāo)識出規(guī)范中的原因與結(jié)果。原因原因輸入條件輸入條件 結(jié)果結(jié)果輸出或系統(tǒng)變換輸出或系統(tǒng)變換將因果圖轉(zhuǎn)換為有限項判斷表。將因果圖轉(zhuǎn)換為有限項判斷表。將判斷表的每一列,轉(zhuǎn)換為一個測試用例。將判斷表的每一列,轉(zhuǎn)換為一個測試用例。規(guī)范:文件名第一列字符必須為規(guī)范:文件名第一列字符必須為A A或或B B,第二列字第二列字符必須為數(shù)字。滿足則修改文件。第一字符不正符必須為數(shù)字。滿足則修改文件。第一字符不正確發(fā)出信息確發(fā)出信息X

23、 X1212,第二個字符不正確發(fā)出信息第二個字符不正確發(fā)出信息X X1313。1 1. .分析規(guī)范分析規(guī)范原原 因因 結(jié)結(jié) 果果1 1 第一列字符為第一列字符為A A 50 50修改文件修改文件2 2 第一列字符為第一列字符為B B 51 51發(fā)信息發(fā)信息X X12123 3 第二列字符為數(shù)字第二列字符為數(shù)字 52 52發(fā)信息發(fā)信息X X1313中間結(jié)點中間結(jié)點是導(dǎo)出結(jié)果的進(jìn)一步原因。是導(dǎo)出結(jié)果的進(jìn)一步原因??紤]到原因考慮到原因1 1、2 2不可能同時為不可能同時為1 1,加上,加上E E約束。約束。1111515035212E發(fā)發(fā) X 12發(fā)發(fā) X 13 修改文件修改文件12345678條條

24、件件原原因因111100001100110010101010111100動動作作結(jié)結(jié)果果000011101000010101測試用例測試用例A3A8AMA?B5B4BNB!C2X6DYPI11515052測試步驟及策略測試步驟及策略 所有測試過程都應(yīng)采用綜合測試策略;即先所有測試過程都應(yīng)采用綜合測試策略;即先作靜態(tài)分析,再作動態(tài)測試。并事先制訂測試計作靜態(tài)分析,再作動態(tài)測試。并事先制訂測試計劃。測試過程通??煞謩?。測試過程通??煞? 4步進(jìn)行:步進(jìn)行:單元單元測試測試單元單元測試測試單元單元測試測試被測被測模塊模塊被測被測模塊模塊集成集成測試測試設(shè)計設(shè)計信息信息已測試已測試的模塊的模塊確認(rèn)確認(rèn)

25、測試測試已集成已集成的模塊的模塊軟件軟件需求需求系統(tǒng)系統(tǒng)測試測試已確認(rèn)已確認(rèn)的軟件的軟件可交付可交付的軟件的軟件系統(tǒng)其系統(tǒng)其他元素他元素1 1. .測試內(nèi)容測試內(nèi)容模塊模塊模塊接口測試模塊接口測試局部數(shù)據(jù)結(jié)構(gòu)測試局部數(shù)據(jù)結(jié)構(gòu)測試重要路徑測試重要路徑測試錯誤處理測試錯誤處理測試邊界條件測試邊界條件測試I/O I/O 參數(shù)值的個數(shù)、類參數(shù)值的個數(shù)、類型、次序、格式是否正型、次序、格式是否正確,確,I/OI/O文件屬性、操作文件屬性、操作是否正確等。是否正確等。數(shù)據(jù)說明是否正確、數(shù)據(jù)說明是否正確、一致,變量及其初值一致,變量及其初值定義是否正確等。定義是否正確等。檢查檢查“錯誤處錯誤處理程序理程序”

26、本身本身的錯誤。的錯誤。邊界條件常包括循環(huán)邊邊界條件常包括循環(huán)邊界,最大最小值、控制界,最大最小值、控制流中等于、大于、小于流中等于、大于、小于的比較值等。的比較值等。重要重要路徑通常是指完成路徑通常是指完成模塊功能的主要路徑,模塊功能的主要路徑,一般是控制結(jié)構(gòu)。一般是控制結(jié)構(gòu)。也稱單元測試(也稱單元測試(unit testingunit testing ) )考慮到被測模塊與其它模塊的聯(lián)系,因此測試時需考慮到被測模塊與其它模塊的聯(lián)系,因此測試時需要使用兩類要使用兩類輔助模塊輔助模塊來模擬其他模塊。來模擬其他模塊。驅(qū)動模塊驅(qū)動模塊(driverdriver) 模擬主程序模擬主程序功能,用于向被

27、測模塊傳遞數(shù)據(jù),接功能,用于向被測模塊傳遞數(shù)據(jù),接收、打印從被測模塊返回的數(shù)據(jù)。收、打印從被測模塊返回的數(shù)據(jù)。樁模塊樁模塊(stubstub) 又稱為假模塊,又稱為假模塊,用于模擬那些由被測模塊所調(diào)用的下用于模擬那些由被測模塊所調(diào)用的下屬模塊功能。屬模塊功能。一般,驅(qū)動模塊比樁模塊容易設(shè)計。但都是額外開一般,驅(qū)動模塊比樁模塊容易設(shè)計。但都是額外開銷。測試方法以白盒法為主。銷。測試方法以白盒法為主。被測模塊被測模塊驅(qū)動模塊驅(qū)動模塊樁模塊樁模塊樁模塊樁模塊樁模塊樁模塊二、組裝測試二、組裝測試(Integration TestingIntegration Testing)1 1. .組裝測試的任務(wù)組

28、裝測試的任務(wù)確定模塊組裝方案,將經(jīng)過測試的模塊組裝為確定模塊組裝方案,將經(jīng)過測試的模塊組裝為一個完整的系統(tǒng)。組裝方案分為一個完整的系統(tǒng)。組裝方案分為漸增式漸增式及及非漸非漸增式。增式。測試方法以黑盒法為主,按照組裝方案進(jìn)行測試方法以黑盒法為主,按照組裝方案進(jìn)行測試。測試。也稱為也稱為聯(lián)合測試聯(lián)合測試或或集成測試,集成測試,重點測試模塊的接重點測試模塊的接口部分,需設(shè)計測試過程使用的驅(qū)動模塊或樁??诓糠郑柙O(shè)計測試過程使用的驅(qū)動模塊或樁模塊。塊。問題:問題:漸增式與非漸增式各有何優(yōu)、缺點?為什漸增式與非漸增式各有何優(yōu)、缺點?為什么通常采用漸增式?么通常采用漸增式? 漸增式是先進(jìn)行模塊測試,然后將

29、這些模漸增式是先進(jìn)行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng),每連接一個模塊進(jìn)行塊逐步組裝成較大的系統(tǒng),每連接一個模塊進(jìn)行一次測試一次測試。兩種方案:兩種方案:設(shè)計驅(qū)動模塊或樁模塊,對每一個新組裝的子設(shè)計驅(qū)動模塊或樁模塊,對每一個新組裝的子系統(tǒng)進(jìn)行測試,對發(fā)現(xiàn)問題較多的子系統(tǒng)或模系統(tǒng)進(jìn)行測試,對發(fā)現(xiàn)問題較多的子系統(tǒng)或模塊應(yīng)該用白盒法作回歸測試。塊應(yīng)該用白盒法作回歸測試。自頂而下增值自頂而下增值增值增值自頂而下增值自頂而下增值M1M4M3M2M6M5程序模塊示意圖程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測試主控模塊第一步,測試主控模塊M1設(shè)設(shè)計樁模塊計樁模塊S1、S

30、2、S3,模擬模擬被被M1調(diào)用的調(diào)用的M2、M3、M4。M2M3M4第二步,依次用第二步,依次用M2、M3、M4替代樁模塊替代樁模塊S1、S2、S3,每替代一次進(jìn)行一次測試。每替代一次進(jìn)行一次測試。S4S4S4S5S5第三步,對由主控模塊第三步,對由主控模塊M1和和模塊模塊M2、M3、M4構(gòu)成的子構(gòu)成的子系統(tǒng)進(jìn)行測試,設(shè)計樁模塊系統(tǒng)進(jìn)行測試,設(shè)計樁模塊S4、S5。M5M6第四步,依次用模塊第四步,依次用模塊M5和和M6替代樁模塊替代樁模塊S4、S5,并同時并同時進(jìn)行新的測試。組裝測試完進(jìn)行新的測試。組裝測試完畢。畢。增值增值M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把

31、已測試的子系第四步,把已測試的子系統(tǒng)按程序結(jié)構(gòu)連接起來完統(tǒng)按程序結(jié)構(gòu)連接起來完成程序整體的組裝測試。成程序整體的組裝測試。D4D4D4D5D5D5M1M4M3M2M6M5程序模塊示意圖程序模塊示意圖第一步,對最底層的模塊第一步,對最底層的模塊M3、M5、M6進(jìn)行測試進(jìn)行測試,設(shè)計驅(qū)動模設(shè)計驅(qū)動模塊塊D1、D2、D3來模擬調(diào)用。來模擬調(diào)用。第三步,設(shè)計驅(qū)動模塊第三步,設(shè)計驅(qū)動模塊D4、D5 和和D6模擬調(diào)用,分別對新子系模擬調(diào)用,分別對新子系統(tǒng)進(jìn)行測試。統(tǒng)進(jìn)行測試。第二步,用實際模塊第二步,用實際模塊M2、M1和和M4替換驅(qū)動模塊替換驅(qū)動模塊D1、D2、D3。D6 無論是無論是自頂而下增值還是自

32、底而上增值,還可選擇自頂而下增值還是自底而上增值,還可選擇深度優(yōu)先深度優(yōu)先或者或者寬度優(yōu)先寬度優(yōu)先增值。增值。 舉例:按自頂而下增值法,寫出下圖中分別按照舉例:按自頂而下增值法,寫出下圖中分別按照深深度優(yōu)先度優(yōu)先或者或者寬度優(yōu)先寬度優(yōu)先增值的模塊組裝次序。增值的模塊組裝次序。ABCDHGJEFIKLMN問問 題題(1 1)自頂而下增值與)自頂而下增值與增值各有何優(yōu)、增值各有何優(yōu)、缺點?缺點?(2 2)為什么在實際的組裝測試中,都應(yīng)該采用)為什么在實際的組裝測試中,都應(yīng)該采用混合增值的方法?混合增值的方法?(3 3)請自己設(shè)計)請自己設(shè)計 2-3 2-3個混合增值的測試方法。個混合增值的測試方法

33、。 自頂而下增值自頂而下增值優(yōu)點:能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問題。優(yōu)點:能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問題。缺點:無法驗證樁模塊是否完全模擬了下屬模塊的缺點:無法驗證樁模塊是否完全模擬了下屬模塊的功能。功能。增值增值優(yōu)點:驅(qū)動模塊較容易編寫樁模塊,能夠盡早查出優(yōu)點:驅(qū)動模塊較容易編寫樁模塊,能夠盡早查出底層涉及較復(fù)雜的算法和實際的底層涉及較復(fù)雜的算法和實際的I/OI/O模塊中的錯誤。模塊中的錯誤。缺點:最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問題。缺點:最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問題。常見的常見的混合增值方案:混合增值方案:衍變的自頂而下衍變的自頂而下先自底而上集成子系統(tǒng),再自頂而下集成總系統(tǒng)。先自底而上集成子

34、系統(tǒng),再自頂而下集成總系統(tǒng)。自底而上自底而上自頂而下增值自頂而下增值對含有讀操作的子系統(tǒng)采用自底而上。對含有讀操作的子系統(tǒng)采用自底而上。對含有寫操作的子系統(tǒng)采用自頂而下。對含有寫操作的子系統(tǒng)采用自頂而下?;貧w測試回歸測試在回歸測試中自底而上,對其余部分(引起是對在回歸測試中自底而上,對其余部分(引起是對修改過的子系統(tǒng))采用自頂而下。修改過的子系統(tǒng))采用自頂而下。1 1. .任務(wù)任務(wù) 又稱為有效性測試或功能測試。其任務(wù)是驗證又稱為有效性測試或功能測試。其任務(wù)是驗證系統(tǒng)的功能、性能等特性是否符合需求規(guī)格說明。系統(tǒng)的功能、性能等特性是否符合需求規(guī)格說明。選擇測試人員選擇測試人員選擇測試用例選擇測試用

35、例實際運行測試實際運行測試軟件計劃軟件計劃用戶文檔用戶文檔開發(fā)文檔開發(fā)文檔源程序文本源程序文本支持環(huán)境支持環(huán)境有效性有效性測試測試軟件軟件配置配置審查審查管理管理機構(gòu)機構(gòu)裁決裁決專家專家鑒定會鑒定會交用戶交用戶運行維護運行維護測試報告測試報告軟件配置軟件配置(1 1)有效性測試)有效性測試 制定測試計劃,運用黑盒法,驗證軟件特制定測試計劃,運用黑盒法,驗證軟件特性是否與需求符合。性是否與需求符合。(2 2)軟件配置復(fù)查)軟件配置復(fù)查 軟件配置軟件配置指軟件工程過程中所產(chǎn)生的指軟件工程過程中所產(chǎn)生的所有信息項:文檔、報告、程序、表格、數(shù)所有信息項:文檔、報告、程序、表格、數(shù)據(jù)。據(jù)。 隨著軟件工程

36、過程的進(jìn)展軟件配置項隨著軟件工程過程的進(jìn)展軟件配置項(SCI software Configuration Item)得到得到快速增加和變化。應(yīng)復(fù)查快速增加和變化。應(yīng)復(fù)查SCI是否齊全。是否齊全。(3 3) 測試和測試和 測試測試 測試測試 是在開發(fā)機構(gòu)的監(jiān)督下,由個別用戶在是在開發(fā)機構(gòu)的監(jiān)督下,由個別用戶在確認(rèn)測試階段后期對軟件進(jìn)行測試,目的是評價確認(rèn)測試階段后期對軟件進(jìn)行測試,目的是評價軟件的軟件的FLURPSFLURPS(功能、局域化、可使用性、可靠功能、局域化、可使用性、可靠性、性能和支持)性、性能和支持),注重界面和特色。注重界面和特色。 測試測試 由由支持軟件預(yù)發(fā)行支持軟件預(yù)發(fā)行的

37、客戶對的客戶對FLURPSFLURPS進(jìn)行進(jìn)行測試,主要目的是測試系統(tǒng)的可支持性。測試,主要目的是測試系統(tǒng)的可支持性。unction Testing unction Testing 功能測試功能測試 ocal Area Testing ocal Area Testing 局域化測試局域化測試sability Testing sability Testing 可使用性測試可使用性測試egression Testing egression Testing 回歸測試回歸測試erformance Testing erformance Testing 性能測試性能測試upportability Test

38、ing upportability Testing 可支持可支持性測試性測試將經(jīng)過確認(rèn)測試的軟件,與計算機硬件、外設(shè)、將經(jīng)過確認(rèn)測試的軟件,與計算機硬件、外設(shè)、支持軟件等一起,在實際運行環(huán)境下測試。支持軟件等一起,在實際運行環(huán)境下測試。五、驗收測試(五、驗收測試(acceptance testingacceptance testing)驗收測試是以用戶為主的測試。驗收測試是以用戶為主的測試。(1 1)由課題組根據(jù)測試用例,自己演示系統(tǒng)所有)由課題組根據(jù)測試用例,自己演示系統(tǒng)所有功能。功能。(2 2)由教師進(jìn)行測試。)由教師進(jìn)行測試。文文檔檔文檔數(shù)量文檔數(shù)量文檔質(zhì)量文檔質(zhì)量文檔與系文檔與系統(tǒng)一致

39、性統(tǒng)一致性創(chuàng)新性創(chuàng)新性總體總體(1212分)分)(1515分)分)(5 5分)分)(3 3分)分)(3535分)分)系系統(tǒng)統(tǒng)運運行行系統(tǒng)運行系統(tǒng)運行功能、性能功能、性能系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)總體設(shè)計總體設(shè)計合理性合理性用戶界面用戶界面操作簡便、操作簡便、幫助信息幫助信息有無創(chuàng)新有無創(chuàng)新系統(tǒng)特色系統(tǒng)特色總體總體(2525分)分)(1010分)分)(1010分)分)(5分)分)(50分)分)其其它它個人工作量個人工作量驗收操作驗收操作獨立分析解獨立分析解決問題能力決問題能力 團結(jié)協(xié)作團結(jié)協(xié)作精精 神神愛護公物愛護公物遵守紀(jì)律遵守紀(jì)律 總體總體(9 9分)分)(4 4分)分)(1 1分)分)(1 1分)分

40、)(15(15分分) ) 軟件測試是保證軟件可靠性的主要手段,也是軟件開軟件測試是保證軟件可靠性的主要手段,也是軟件開發(fā)過程中最艱巨、最繁雜的任務(wù)。發(fā)過程中最艱巨、最繁雜的任務(wù)。 軟件測試方案是測試階段的關(guān)鍵技術(shù)問題,基本目軟件測試方案是測試階段的關(guān)鍵技術(shù)問題,基本目標(biāo)是選擇最少量的高效測試用例,從而盡可能多地發(fā)現(xiàn)標(biāo)是選擇最少量的高效測試用例,從而盡可能多地發(fā)現(xiàn)軟件中的問題。因此,無論哪一個測試階段,都軟件中的問題。因此,無論哪一個測試階段,都應(yīng)該采應(yīng)該采用綜合測試策略,用綜合測試策略,才能夠?qū)崿F(xiàn)測試的目標(biāo)。才能夠?qū)崿F(xiàn)測試的目標(biāo)。 最后進(jìn)行最后進(jìn)行驗收測試驗收測試(Acceptance Tes

41、ting),是以用戶為主是以用戶為主的測試,測試過程、方法和測試內(nèi)容與系統(tǒng)測試基本相同。的測試,測試過程、方法和測試內(nèi)容與系統(tǒng)測試基本相同。有時也將驗收測試與系統(tǒng)測試合二為一,此時,參加測試有時也將驗收測試與系統(tǒng)測試合二為一,此時,參加測試的人員最好包括:有經(jīng)驗的系統(tǒng)測試專家,用戶代表,軟件開的人員最好包括:有經(jīng)驗的系統(tǒng)測試專家,用戶代表,軟件開發(fā)人員及發(fā)人員及QA(質(zhì)量保證)人員也應(yīng)參加。質(zhì)量保證)人員也應(yīng)參加。 面向?qū)ο蟮臏y試,既要使用許多傳統(tǒng)的成熟的軟件測試方面向?qū)ο蟮臏y試,既要使用許多傳統(tǒng)的成熟的軟件測試方法和技術(shù),也有其不同的特點;主要反映在測試對象和內(nèi)容的法和技術(shù),也有其不同的特點

42、;主要反映在測試對象和內(nèi)容的不同。不同。 ,主要測試的對,主要測試的對象是程序代碼。象是程序代碼。 采用正式技術(shù)評審的方法,檢采用正式技術(shù)評審的方法,檢查分析與設(shè)計模型的正確性、完整查分析與設(shè)計模型的正確性、完整性和一制性。性和一制性。模型測試方法包括:模型測試方法包括: 用例場景測試;用例場景測試; 系統(tǒng)原型走查;系統(tǒng)原型走查; 需求模型一致性檢查;需求模型一致性檢查; 分析模型的檢查和走查。分析模型的檢查和走查。類測試即傳統(tǒng)測試中的單類測試即傳統(tǒng)測試中的單元測試,即驗證類的實現(xiàn)與類元測試,即驗證類的實現(xiàn)與類的規(guī)約是否一致的活動。的規(guī)約是否一致的活動。完整的類測試包括:完整的類測試包括: 類

43、屬性的測試類屬性的測試 類操作的測試類操作的測試 可能狀態(tài)下的對象測試可能狀態(tài)下的對象測試注意:不能注意:不能“孤立孤立”進(jìn)行測試,進(jìn)行測試,操作測試應(yīng)該包括其可能被調(diào)用操作測試應(yīng)該包括其可能被調(diào)用的各種情況。的各種情況。交互測試用于代替?zhèn)鹘y(tǒng)測交互測試用于代替?zhèn)鹘y(tǒng)測試方法中的集成測試。試方法中的集成測試。將類進(jìn)行聯(lián)合測試,以將類進(jìn)行聯(lián)合測試,以確定它們能否在一起共同確定它們能否在一起共同工作。工作。交互測試的方法有:交互測試的方法有: 用例或基于場景的測試用例或基于場景的測試 線程測試線程測試 對象的測試。對象的測試。測試系統(tǒng)或獨立子系統(tǒng),測試系統(tǒng)或獨立子系統(tǒng),確保系統(tǒng)無明顯故障,并滿確保系統(tǒng)

44、無明顯故障,并滿足用戶需求。足用戶需求。 系統(tǒng)測試包括:系統(tǒng)測試包括: 功能測試功能測試 壓力測試壓力測試 安全測試安全測試 兼容性測試兼容性測試 安裝測試安裝測試 恢復(fù)測試恢復(fù)測試驗收測試:交付用戶前驗收測試:交付用戶前的系統(tǒng)測試。的系統(tǒng)測試。 發(fā)布測試:為了確保系發(fā)布測試:為了確保系統(tǒng)安裝軟件包能夠正常交統(tǒng)安裝軟件包能夠正常交付使用。付使用。以及錯誤地理解了用戶需求的項目,以及錯誤地理解了用戶需求的項目,避免對于成本和資源的消耗。避免對于成本和資源的消耗。 在軟件開發(fā)過程模型中,需求、設(shè)計和編碼總是有一定的在軟件開發(fā)過程模型中,需求、設(shè)計和編碼總是有一定的時序特性。而且,需求模型、設(shè)計模型

45、和實現(xiàn)代碼之間還具備時序特性。而且,需求模型、設(shè)計模型和實現(xiàn)代碼之間還具備解釋特性。解釋特性。用戶需求是用戶對待實現(xiàn)的系統(tǒng)的要求,通常以一種非正用戶需求是用戶對待實現(xiàn)的系統(tǒng)的要求,通常以一種非正規(guī)的形式給出,具有一定的模糊性。這種模糊性帶入了設(shè)計,規(guī)的形式給出,具有一定的模糊性。這種模糊性帶入了設(shè)計,甚至代碼中,將可能引發(fā)幾倍,甚至幾十倍的錯誤,這必將極甚至代碼中,將可能引發(fā)幾倍,甚至幾十倍的錯誤,這必將極大地消耗系統(tǒng)的資源和成本。大地消耗系統(tǒng)的資源和成本。 測試實際上也是一個項目。測試實際上也是一個項目。 測試也有需求、設(shè)計和實現(xiàn),并且測試本身也會有測試測試也有需求、設(shè)計和實現(xiàn),并且測試本身

46、也會有測試( (測測試中的測試試中的測試) )。 測試作為項目開發(fā)活動中的一部分,在時間上應(yīng)該有明確測試作為項目開發(fā)活動中的一部分,在時間上應(yīng)該有明確的要求,測試計劃對于測試來說也是至關(guān)重要的。的要求,測試計劃對于測試來說也是至關(guān)重要的。 UML分析模型的每個模式,從嚴(yán)格意義上說都應(yīng)該經(jīng)過測分析模型的每個模式,從嚴(yán)格意義上說都應(yīng)該經(jīng)過測試。實際上,通常對用例模型、類對象模型以及用例中典型場試。實際上,通常對用例模型、類對象模型以及用例中典型場景進(jìn)行測試。景進(jìn)行測試。 單個用例測試采取典型應(yīng)用場景的測試方法,用例模型單個用例測試采取典型應(yīng)用場景的測試方法,用例模型的測試相當(dāng)于系統(tǒng)測試,測試的主要

47、目標(biāo)是用例模型對于用的測試相當(dāng)于系統(tǒng)測試,測試的主要目標(biāo)是用例模型對于用戶需求的可跟蹤性。戶需求的可跟蹤性。 以系統(tǒng)的用戶為主要的出發(fā)點設(shè)計測試用例,通過模擬以系統(tǒng)的用戶為主要的出發(fā)點設(shè)計測試用例,通過模擬某個系統(tǒng)用戶的行為來測試整個系統(tǒng),對于該用戶的服務(wù)提某個系統(tǒng)用戶的行為來測試整個系統(tǒng),對于該用戶的服務(wù)提供情況,從而檢查系統(tǒng)功能的完整性,用戶需求可跟蹤性等供情況,從而檢查系統(tǒng)功能的完整性,用戶需求可跟蹤性等情況。情況。 用例模型的測試從系統(tǒng)用戶的角度測試系統(tǒng)的服務(wù),并用例模型的測試從系統(tǒng)用戶的角度測試系統(tǒng)的服務(wù),并不關(guān)心每個測試用例所實現(xiàn)的功能如何,所以應(yīng)該是黑盒測不關(guān)心每個測試用例所實現(xiàn)

48、的功能如何,所以應(yīng)該是黑盒測試。試。 ( (Manager) )、( (Shipper) ) ( (Toll collector) )、( (Customer) ) ( (Creditcard) ) 角色要求系統(tǒng)提供的功能有哪些?系統(tǒng)在提供這些功能的角色要求系統(tǒng)提供的功能有哪些?系統(tǒng)在提供這些功能的時候該角色需要做什么?時候該角色需要做什么? 角色需要創(chuàng)建、閱讀、銷毀或存儲系統(tǒng)的哪些信息?角色需要創(chuàng)建、閱讀、銷毀或存儲系統(tǒng)的哪些信息? 系統(tǒng)中的哪些事件需要通知該角色?系統(tǒng)中的哪些事件需要通知該角色? (2)管理者需要閱讀創(chuàng)建、銷毀、更新或者存儲系統(tǒng)哪些信息?管理者需要閱讀創(chuàng)建、銷毀、更新或者存

49、儲系統(tǒng)哪些信息? 答:信息包括:訂單、職員答:信息包括:訂單、職員( (倉庫人員、收費人員等倉庫人員、收費人員等) )信息、信息、顧客信息、物品條目及價格信息、倉庫信息和稅務(wù)信息顧客信息、物品條目及價格信息、倉庫信息和稅務(wù)信息。(3)系統(tǒng)中的事件一定要告訴管理者嗎?系統(tǒng)中的事件一定要告訴管理者嗎? 答:是。這些事件包括:倉庫有關(guān)物品短缺以致無法滿足答:是。這些事件包括:倉庫有關(guān)物品短缺以致無法滿足某訂單;訂單數(shù)據(jù)出現(xiàn)錯誤;顧客超過期限未付款。某訂單;訂單數(shù)據(jù)出現(xiàn)錯誤;顧客超過期限未付款。 可見,管理者要使用系統(tǒng)的十個功能,因此至少可以設(shè)計可見,管理者要使用系統(tǒng)的十個功能,因此至少可以設(shè)計出十個

50、測試用例。出十個測試用例。 以第三條功能以第三條功能為例,說明用例的選擇。為例,說明用例的選擇。 假設(shè)訂貨中心共有三個倉庫,管理者要決定應(yīng)該選擇哪個假設(shè)訂貨中心共有三個倉庫,管理者要決定應(yīng)該選擇哪個倉庫處理訂單。倉庫處理訂單。 (1)(1)首先倉庫必須能夠滿足訂單上的貨物要求;首先倉庫必須能夠滿足訂單上的貨物要求; (2)(2)選擇地理位置與發(fā)貨點較近的倉庫發(fā)貨;選擇地理位置與發(fā)貨點較近的倉庫發(fā)貨; (3)(3)信譽滿意度越高的客戶就越應(yīng)該以較高的服務(wù)質(zhì)量來回報。信譽滿意度越高的客戶就越應(yīng)該以較高的服務(wù)質(zhì)量來回報。 結(jié)合考慮上面三個因素,以最少的成本取得最好的收益,三結(jié)合考慮上面三個因素,以最

51、少的成本取得最好的收益,三個訂單信息如下:個訂單信息如下:訂單號訂單號送貨地點送貨地點貨物名稱及數(shù)量貨物名稱及數(shù)量客戶信譽客戶信譽訂單訂單1 1北城某集團公司北城某集團公司G1(200)G1(200), G5(100)G5(100), G10(40)G10(40)9595訂單訂單2 2東城某街道東城某街道 G5(10)G5(10), G6(5)G6(5)8080訂單訂單3 3北城某街道北城某街道 G4(10)G4(10)8585倉庫名稱倉庫名稱倉庫位置倉庫位置存貨品名及數(shù)量存貨品名及數(shù)量訂單處理訂單處理客戶信譽度客戶信譽度A A東城東城G1(200)G1(200), G5(100)G5(100

52、), G6(1000)G6(1000), G10(70)G10(70), G11(90)G11(90)8585B B西城西城G1(1000)G1(1000), G2(100)G2(100), G5(550)G5(550), G8(150)G8(150), G10(980)G10(980)9595C C北城北城G1(220)G1(220), G4(300)G4(300), G5(350)G5(350), G7(400)G7(400), G10(700)G10(700)8080訂單號訂單號送貨地點送貨地點貨物名稱及數(shù)量貨物名稱及數(shù)量客戶信譽客戶信譽訂單訂單1 1北城某集團公司北城某集團公司G1(2

53、00)G1(200), G5(100)G5(100), G10(40)G10(40)9595訂單訂單2 2東城某街道東城某街道 G5(10)G5(10), G6(5)G6(5)8080訂單訂單3 3北城某街道北城某街道 G4(10)G4(10)8585 datedd:Daymm:Monthyy:YersDate(pDay:integer,pMonth:integer,pYers:integer)decrease(argname)printDate()calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Int

54、eger)decrease()DayMonthYers圖8.16 calendarUnit類的繼承關(guān)系calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Integer)decrease():BooleanDaymm:MonthDay(pDay:integer, pMonth:Month)setDay(pDay:integer, pMonth:Month)getDay ():integerdecrease( ):BooleanYersYear(pYear: Integer)getYear():Intgerd

55、ecrease():BooleanisLeap():BooleanMonthyy:Yearsizeindex:integer=31,28,31,30,31,30,3131,30,31,30,31Month(pMonth:integer,pYear:Year)get(Month():integergetMonthSize():Integerdecrease():Boolean例如:對例如:對datedate類中的類中的decreasedecrease方法進(jìn)行測試方法進(jìn)行測試, ,在設(shè)計測試用例時,在設(shè)計測試用例時,采用等價分類法。劃分等價類時要考慮邊界及閏年等情況。采用等價分類法。劃分等價類時要

56、考慮邊界及閏年等情況。用例用例ID月月日日年年預(yù)期結(jié)果預(yù)期結(jié)果171919981998年年7月月18日日291920042004年年9月月18日日331920002000年年3月月18日日47119981998年年6月月30日日59120042004年年8月月31日日63119981998年年2月月28日日73120042004年年2月月29日日81119981997年年12月月31日日91120042003年年12月月31日日101120001999年年12月月31日日11701998無效輸入無效輸入127322004無效輸入無效輸入 類模型是分析模型中的核心,它抽象出了問題域中的對象和類模

57、型是分析模型中的核心,它抽象出了問題域中的對象和實體,以及它們在問題域中的職責(zé)。實體,以及它們在問題域中的職責(zé)。 類圖實際上由類和類之間的關(guān)系組成,評審會的檢查單可從類圖實際上由類和類之間的關(guān)系組成,評審會的檢查單可從以下兩個方面制定。以下兩個方面制定。 (1)(1)該類在問題域中對應(yīng)的實體該類在問題域中對應(yīng)的實體( (或?qū)ο蠡驅(qū)ο? )是什么?是什么? (2)(2)履行什么職責(zé)?履行什么職責(zé)? (3)(3)在類圖中被賦予了哪些職責(zé)?在類圖中被賦予了哪些職責(zé)? (4)(4)該類在問題域中的職責(zé)和在類圖中的職責(zé)能匹配嗎?該類在問題域中的職責(zé)和在類圖中的職責(zé)能匹配嗎? (5)(5)該類的每個數(shù)據(jù)屬性都是問題域所關(guān)心的嗎?該類的每個數(shù)據(jù)屬性都是問題域所關(guān)心的嗎? (1)(1)這種類關(guān)系是反映了問題域本質(zhì)的關(guān)系還是為這種類關(guān)系是反映了問題域本質(zhì)的關(guān)系還是為管理類模型而引入的關(guān)系?管理類模型而引入的關(guān)系?( (如果類之間的關(guān)系并非如果類之間的關(guān)系并非反映問

溫馨提示

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

評論

0/150

提交評論