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

下載本文檔

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

文檔簡介

1、第一部分第一部分傳統(tǒng)的軟件工程方法傳統(tǒng)的軟件工程方法第二章第二章 系統(tǒng)分析系統(tǒng)分析 第三章第三章 需求分析需求分析 第四章第四章 軟件設(shè)計軟件設(shè)計 第五章第五章 編碼與測試編碼與測試 第五章 編碼與測試&51 程序編碼程序編碼&52 測試的基本概念測試的基本概念&53 兩種測試類型兩種測試類型&54 白盒測試方法的用例設(shè)計白盒測試方法的用例設(shè)計&55 黑盒測試方法的用例設(shè)計黑盒測試方法的用例設(shè)計&56 軟件的測試步驟軟件的測試步驟&57 調(diào)試與排錯調(diào)試與排錯&58 軟件可靠性軟件可靠性&59 本章重點本章重點51 程序編碼

2、程序編碼基本任務:基本任務: 將軟件設(shè)計的結(jié)果翻譯成計算機可以將軟件設(shè)計的結(jié)果翻譯成計算機可以“理解理解”的形成的形成使用某種語言描述的使用某種語言描述的程序。程序。程序的質(zhì)量主要取決于軟件設(shè)計的質(zhì)程序的質(zhì)量主要取決于軟件設(shè)計的質(zhì)量,程序設(shè)計語言的特性和編碼途徑也對量,程序設(shè)計語言的特性和編碼途徑也對程序的可靠性、可讀性、可測試性和可維程序的可靠性、可讀性、可測試性和可維護性產(chǎn)生深遠的影響。護性產(chǎn)生深遠的影響。511 程序設(shè)計語言的選擇程序設(shè)計語言的選擇F 項目的應用領(lǐng)域項目的應用領(lǐng)域 (附表附表)F 系統(tǒng)用戶的要求系統(tǒng)用戶的要求F 可以得到的軟件工具可以得到的軟件工具F 工程規(guī)模工程規(guī)模F

3、軟件可移植性要求軟件可移植性要求F 軟件開發(fā)人員的知識水平、心理因素軟件開發(fā)人員的知識水平、心理因素程序設(shè)計語言及應用領(lǐng)域參考表程序設(shè)計語言及應用領(lǐng)域參考表類 型可選語言商用數(shù)據(jù)處理COBOL科學工程計算和模擬 FORTRAN PASCAL實時軟件匯編語言 Ada系統(tǒng)軟件匯編語言 C Ada智能軟件LISP PROLOG512 編碼風格編碼風格編碼風格(程序設(shè)計風格、編程風編碼風格(程序設(shè)計風格、編程風格),格),是指導人們編寫出邏輯簡明清晰、是指導人們編寫出邏輯簡明清晰、易讀易懂程序的基本原則。包括:易讀易懂程序的基本原則。包括:1、源程序文檔化:、源程序文檔化:2、數(shù)據(jù)說明:對數(shù)據(jù)添加說明

4、。數(shù)據(jù)說明:對數(shù)據(jù)添加說明。3、語句結(jié)構(gòu):結(jié)構(gòu)化、庫函數(shù)、可讀性。、語句結(jié)構(gòu):結(jié)構(gòu)化、庫函數(shù)、可讀性。4、輸入、輸入/輸出(輸出(I/O):):友好、方便使用。友好、方便使用。512 編碼風格編碼風格源程序文檔化源程序文檔化為了提高程序的可維護性,源代碼也為了提高程序的可維護性,源代碼也需要實現(xiàn)文檔化(內(nèi)部文檔編制)。包括需要實現(xiàn)文檔化(內(nèi)部文檔編制)。包括:1、符號名的命名:、符號名的命名:2、程序注釋:序言、功能等。程序注釋:序言、功能等。3、標準的書寫格式:、標準的書寫格式:分層縮進分層縮進的寫法顯示嵌套結(jié)構(gòu)層次。的寫法顯示嵌套結(jié)構(gòu)層次。512 編碼風格編碼風格源程序文檔化源程序文檔化i

5、f () if()elseelseif () if()elseelse52 軟件測試的基本概念軟件測試的基本概念軟件測試是軟件開發(fā)工作的最后一個環(huán)節(jié)。由于人認識客觀事物的主觀性,難免在開發(fā)的軟件產(chǎn)品中產(chǎn)生錯誤。為了給用戶交付一個高質(zhì)量的軟件系統(tǒng),必須對開發(fā)的系統(tǒng)進行嚴格的測試,以便盡可能多的發(fā)現(xiàn)錯誤。 軟件測試是保證軟件質(zhì)量,提高軟件可靠性的關(guān)鍵。521 基本概念基本概念軟件產(chǎn)品最大的成本是檢測軟件錯誤、修正軟件錯誤的成本。在整個軟件開發(fā)中:測試工作量40%(1)預防錯誤: 幾乎不可實現(xiàn)(2)發(fā)現(xiàn)錯誤: 軟件測試目的找錯521 基本概念基本概念522 測試的目的與地位測試的目的與地位G.J.M

6、yers在中認為: “程序測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程.” E.W.Dijkstra 指出:“程序測試能證明錯誤的存在,但不能證明錯誤不存在.” 測試的目的是發(fā)現(xiàn)程序中的錯誤,是為了證明程序有錯,而不是證明程序無錯. 把證明程序無錯當作測試目的不把證明程序無錯當作測試目的不僅是不正確的僅是不正確的, , 完全做不到的,而且完全做不到的,而且對做好測試沒有任何益處,甚至是對做好測試沒有任何益處,甚至是十十分有害分有害的的. . 軟件測試要設(shè)法使軟件發(fā)生故障軟件測試要設(shè)法使軟件發(fā)生故障, ,暴露軟件錯誤暴露軟件錯誤 測試的測試的“成功成功”與與“失敗失敗” 能夠發(fā)現(xiàn)錯誤的測試是成功的能夠發(fā)現(xiàn)

7、錯誤的測試是成功的測試,否則是失敗的測試。測試,否則是失敗的測試。 “測試的目的是說明程序正確地執(zhí)行測試的目的是說明程序正確地執(zhí)行它應有的功能它應有的功能”也是也是錯誤錯誤的的. .例:程序例:程序TriangleTriangle,輸入三個整數(shù),表示一輸入三個整數(shù),表示一個三角形的三個邊長,該程序產(chǎn)生一個結(jié)果個三角形的三個邊長,該程序產(chǎn)生一個結(jié)果,指出該三角形是等邊三角形、等腰三角形,指出該三角形是等邊三角形、等腰三角形還是不等邊三角形。還是不等邊三角形。 為說明其能正確執(zhí)行它的功能,可使用為說明其能正確執(zhí)行它的功能,可使用“測試用例測試用例”(3,4,5),(5,5,6),(6,6,6),

8、”(3,4,5),(5,5,6),(6,6,6), 程序都能給出正確結(jié)果,是否就可認為程序程序都能給出正確結(jié)果,是否就可認為程序是正確的?是正確的?523 測試與調(diào)試測試與調(diào)試(排錯排錯) 測試測試 ( (test) test) 調(diào)試調(diào)試 ( (debug)debug)以已知條件開始以已知條件開始, , 使用預先定義的程序使用預先定義的程序, ,有預知的結(jié)果有預知的結(jié)果以不可知內(nèi)部以不可知內(nèi)部條件開始條件開始, ,結(jié)果一般結(jié)果一般不可預見不可預見有計劃有計劃被動的被動的由獨立的測試組由獨立的測試組,在不了解軟件設(shè)計,在不了解軟件設(shè)計的條件下完成的條件下完成由程序作者進行由程序作者進行發(fā)現(xiàn)錯誤發(fā)

9、現(xiàn)錯誤找出錯誤位置,排除找出錯誤位置,排除524 測試階段工作步驟測試階段工作步驟F單元測試: 檢驗每個模塊能否單獨 工作.F集成測試: 檢驗概要設(shè)計中模塊接 口設(shè)計問題F確認測試: 以需求規(guī)格說明書為檢 驗尺度F系統(tǒng)測試: 綜合檢驗F平行運行:新舊兩套系統(tǒng)并行運行,對照檢驗 測試可視為分析、設(shè)計、編碼三個階段的最終復審,以保證軟件質(zhì)量.525 測試階段測試階段與前期工作的關(guān)系與前期工作的關(guān)系 程序中的問題根源可能在開發(fā)前期的各階段解決、糾正錯誤也必須追溯到前期工作。測測試試與與開開發(fā)發(fā)前前期期工工作作的的關(guān)關(guān)系系決定軟件與系統(tǒng)的配合關(guān)系決定軟件與系統(tǒng)的配合關(guān)系需求分析需求分析概要設(shè)計概要設(shè)計

10、詳細設(shè)計詳細設(shè)計 編編 碼碼單元測試單元測試集成測試集成測試確認測試確認測試系統(tǒng)測試系統(tǒng)測試開發(fā)前期出現(xiàn)錯誤的擴展開發(fā)前期出現(xiàn)錯誤的擴展計劃計劃需求需求分析分析設(shè)設(shè)計計編編碼碼測測試試A A AB B軟件生存期各階段間需軟件生存期各階段間需求求保持的正確性保持的正確性用戶要求用戶要求用戶用戶: :我要什么我要什么? ?運行結(jié)果運行結(jié)果計算機計算機: :程序運行得程序運行得到的結(jié)果到的結(jié)果源程序源程序程序員程序員: :我要讓計算我要讓計算機什么做機什么做? ?設(shè)計說明書設(shè)計說明書設(shè)計員設(shè)計員: :我要讓軟件我要讓軟件做什么做什么? ?需求說明書需求說明書分析員分析員: :我可以提我可以提供什么供

11、什么? ?12345理解正確性理解正確性表達正確性表達正確性理解正確性理解正確性設(shè)計正確性設(shè)計正確性表達正確性表達正確性理解正確性理解正確性編碼正確性編碼正確性運行正確性運行正確性輸入正確性輸入正確性相符嗎相符嗎? ?526 軟件測試的對象軟件測試的對象軟件測試不等于程序測試,軟件測試應貫穿于軟件定義與開發(fā)的整個期間; 據(jù)美國一家公司統(tǒng)計,查出的軟件錯誤中,屬于需求分析和軟件設(shè)計的錯誤約占 64%,屬于程序編寫的錯誤僅占 36%。程序編寫的許多錯誤是“先天的”。527 測試的基本原則測試的基本原則(1)(1)開發(fā)和測試隊伍分別建立開發(fā)和測試隊伍分別建立(2)(2)測試用例測試用例(測試用的一組

12、輸入數(shù)據(jù)、環(huán)測試用的一組輸入數(shù)據(jù)、環(huán)境平臺和運行條件境平臺和運行條件)應由輸入數(shù)據(jù)和預應由輸入數(shù)據(jù)和預期的輸出結(jié)果兩部分組成期的輸出結(jié)果兩部分組成. .(3)(3)兼顧合理的輸入和不合理的輸入數(shù)據(jù)兼顧合理的輸入和不合理的輸入數(shù)據(jù)(4)(4)應檢查程序是否作了不該做的事應檢查程序是否作了不該做的事(5)(5)程序修改后要回歸測試程序修改后要回歸測試(6)(6)應長期保留測試用例,直至系統(tǒng)廢棄。應長期保留測試用例,直至系統(tǒng)廢棄。程序測試舉例例:程序 Triangle, 輸入三個整 數(shù),表示一個三角形的三個邊 長,該程序產(chǎn)生一個結(jié)果,指 出該三角形是等邊三角形、等 腰三角形還是不等邊三角形。判斷三角

13、型的測試用例設(shè)計: 輸入數(shù)據(jù) 預期結(jié)果(1) 6;6;6 等邊(2) 8;8;4 等腰(3) 4;5;6 一般 還應輸入非法數(shù)據(jù): 0; 7; 9 -7;3; 5 a; 2; 7 等528 軟件錯誤的分類軟件錯誤的分類F 功能錯(需求分析錯誤)F 軟件結(jié)構(gòu)錯F 數(shù)據(jù)錯F 編碼錯F 軟件集成錯F 測試定義與測試執(zhí)行錯誤 529 軟件測試信息流軟件測試信息流測試過程需要三類輸入:測試過程需要三類輸入:軟件配置軟件配置: :需求規(guī)格說明書需求規(guī)格說明書 軟件設(shè)計說明書軟件設(shè)計說明書 被測源程序被測源程序測試配置測試配置: :測試計劃測試計劃 測試用例測試用例( (測試數(shù)據(jù)測試數(shù)據(jù)) ) 測試驅(qū)動程序

14、測試驅(qū)動程序測試工具測試工具: :軟件測試信息流軟件測試信息流軟件軟件配置配置測試測試測試測試配置配置測試測試工具工具結(jié)果結(jié)果分析分析排錯排錯可靠性可靠性 分析分析測試測試結(jié)果結(jié)果錯誤錯誤預期預期結(jié)果結(jié)果出錯率出錯率 改正改正的軟件的軟件預測預測的可的可靠性靠性5210 測試的方法與技術(shù)測試的方法與技術(shù)軟件測試的軟件測試的策略和方法策略和方法靜態(tài)測靜態(tài)測試方法試方法動態(tài)測動態(tài)測試方法試方法人工測試方法人工測試方法計算機輔助靜計算機輔助靜態(tài)分析方法態(tài)分析方法白盒測試方法白盒測試方法黑盒測試方法黑盒測試方法窮舉測試方法窮舉測試方法靜態(tài)測試:靜態(tài)測試: 基本特征是在對軟件進行分析、檢基本特征是在對軟

15、件進行分析、檢查和測試查和測試,不實際運行被測試的軟件不實際運行被測試的軟件. . 靜態(tài)測試約可找出靜態(tài)測試約可找出303070%70%的邏輯的邏輯設(shè)計錯誤設(shè)計錯誤. . 對對需求規(guī)格說明書需求規(guī)格說明書、軟件設(shè)計說明軟件設(shè)計說明書書、源程序源程序做結(jié)構(gòu)分析、流程圖分析做結(jié)構(gòu)分析、流程圖分析、符號執(zhí)行來找錯、符號執(zhí)行來找錯. . 動態(tài)測試:動態(tài)測試:通過運行軟件來檢驗軟件的動通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性態(tài)行為和運行結(jié)果的正確性. .動態(tài)測試的兩個基本要素:動態(tài)測試的兩個基本要素:u 被測試程序被測試程序u 測試數(shù)據(jù)(測試用例)測試數(shù)據(jù)(測試用例)動態(tài)測試方法動態(tài)測試方法(

16、1)(1)選取定義域有效值選取定義域有效值, ,或定義域或定義域 外無效值外無效值. .(2)(2)對已選取值決定對已選取值決定預期的結(jié)果預期的結(jié)果(3)(3)用選取值執(zhí)行程序用選取值執(zhí)行程序(4)(4)執(zhí)行結(jié)果執(zhí)行結(jié)果 與與(2)(2)結(jié)果相比結(jié)果相比, , 不吻和程序有錯不吻和程序有錯. .53 兩種類型的測試兩種類型的測試1 黑盒測試2 白盒測試531 黑盒測試黑盒測試又稱: 功能測試 數(shù)據(jù)驅(qū)動測試 基于規(guī)格說明書的測試532 白盒測試白盒測試又稱: 結(jié)構(gòu)測試 玻璃盒測試 基于覆蓋的測試. 根據(jù)被測程序的邏輯結(jié)構(gòu)設(shè)計測試用例;力求提高測試覆蓋率;533 黑盒與白盒測試比較黑盒與白盒測試比

17、較黑盒測試是從用戶觀點,按規(guī)格說明書要求的輸入數(shù)據(jù)與輸出數(shù)據(jù)的對應關(guān)系設(shè)計測試用例,是根據(jù)程序外部特征進行測試。 白盒測試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進行測試。534 窮舉測試窮舉測試例:輸入 三條邊長 黑盒測試可采用的測試用例數(shù)(設(shè)字長16位)執(zhí)行時間: 設(shè)測試一次需1ms 共需一萬年.=2 =2 X2 X2 3X10X2 X2 3X101616161616161414534 窮舉測試窮舉測試白盒測試例:含5個分支,循環(huán)次數(shù)20,從A到B的可能路徑執(zhí)行時間: 設(shè)測試一次需2ms 窮舉測試需5億年.=5+5 +.+5 +5 =5+5 +.+5 +5 101020201 12 219191414A A

18、B B534 窮舉測試窮舉測試 不論黑盒還是白盒測試都不能進行窮盡測試, 所以軟件測試不可能發(fā)現(xiàn)程序中存在的所有錯誤, 因此需精心設(shè)計測試方案, 力爭盡可能少的次數(shù),測出盡可能多的錯誤.黑盒測試與白盒測試能發(fā)現(xiàn)的錯誤C CB BA AD D- -只能用黑盒測試發(fā)現(xiàn)的錯誤只能用黑盒測試發(fā)現(xiàn)的錯誤A- -只能用白盒測試發(fā)現(xiàn)的錯誤只能用白盒測試發(fā)現(xiàn)的錯誤- -兩種方法都能發(fā)現(xiàn)的錯誤兩種方法都能發(fā)現(xiàn)的錯誤- -兩種方法都不能發(fā)現(xiàn)的錯誤兩種方法都不能發(fā)現(xiàn)的錯誤BCD54 白盒測試的測試用例設(shè)計白盒測試的測試用例設(shè)計邏輯覆蓋法:一系列測試方法總稱,特點是逐漸進行越來越完整的通路測試。例:PROCEDURE

19、 SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A IF (A=2) OR (X1) THEN X:=X+1 END; 541 邏輯覆蓋準則邏輯覆蓋準則(1)語句覆蓋(2)判定覆蓋(3)條件覆蓋(4)判定/條件覆蓋(5)條件組合覆蓋(6)路徑覆蓋(7)點覆蓋(8)邊覆蓋1語句覆蓋開始開始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce使程序中每個語使程序中每個語句至少執(zhí)行一次句至少執(zhí)行一次只需設(shè)計一個測試用例:輸入數(shù)據(jù):A=2,B=0,X=4即達到了語句覆蓋;

20、語句覆蓋是最弱的邏輯覆蓋2判定覆蓋開始開始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce例:可設(shè)計兩組測試用例:A=3,B=0 ,X=3 可覆蓋c、d分支 A=2,B=1 ,X=1 可覆蓋b、e分支 兩組測試用例可覆蓋所有判定的真假分支判定覆蓋仍是弱的邏輯覆蓋3 條件覆蓋 使每個判定的每個條件的可能取值至少執(zhí)行一次。第一判定表達式第一判定表達式: :設(shè)設(shè)條件條件 A1A1 取真取真 記為記為 T1T1 假假 T1T1 條件條件 B=1B=1 取真取真 記為記為 T2T2 假假 T2T2第二判定表達式第二判定表達式: :設(shè)設(shè)條件條件 A=2A

21、=2 取真取真 記為記為 T3T3 假假 T3T3 條件條件 X1X1 取真取真 記為記為 T4T4 假假 T4T43 條件覆蓋開始開始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce滿足條件滿足條件: T1,T1, T2,T2 T3,T3 T4,T4測試用例 通過 滿足的 覆蓋A B X 路徑 條件 分支1 0 3 abe T1,T2,T3,T4 b,e2 1 1 abe T1,T2,T3,T4 b,e 兩個測試用例覆蓋了四個條件八種可能取值。未覆蓋c、d分支,不滿足判定覆蓋的要求.條件覆蓋不一定包含判定覆蓋判定覆蓋也不一定包含條件覆蓋4

22、判定/條件覆蓋 選取足夠多的測試用例,使判斷中的每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次.判定/條件 覆蓋開始開始(A1) AND (B=0)(A=2) OR (X1)返回返回X=X/AX=X+1FFTTabdce滿足條件滿足條件: T1,T1, T2,T2 T3,T3 T4,T4測試用例 通過 滿足的 覆蓋A B X 路徑 條件 分支2 0 4 ace T1,T2,T3,T4 c,e2 1 1 abd T1,T2,T3,T4 b,d 能同時滿足判定、條件兩種覆蓋標準。取值。測試用例 通過 滿足的 覆蓋A B X 路徑 條件 分支2 0 3 ace T1,T2,T3,T4 c,e2 1 1 abe T1,T2,T3,T4 b,e1 0 3 abe T1,T2,T3,T4 b,e1 1 1 abd T1,T2,T3,T4 b,d (5)條件組合覆蓋 所有可能的條件取值組合至少執(zhí)行一次 A1, B=0 A1, B0 A 1, B=0 A 1, B0 A=2,

溫馨提示

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

評論

0/150

提交評論