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

下載本文檔

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

文檔簡介

第五章 軟件測試工程,概述 軟件開發(fā)過程必須伴有質(zhì)量保證活動。 軟件測試是軟件質(zhì)量保證的關(guān)鍵元素,代表了規(guī)約、設(shè)計和編碼的最終檢查。,軟件產(chǎn)品最大的成本是檢測軟 件錯誤、修正軟件錯誤的成本。 在整個軟件開發(fā)中,測試工作量 一般占30%40%,甚至50%。 在人命關(guān)天的軟件(如飛機控制、核反應(yīng)堆等)測試所花費的時間往往是其它軟件工程活動時間之和的三到五倍,軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,或者說,軟件測試是根據(jù)軟件的規(guī)格說明(例如軟件的功能、性能、運行環(huán)境等要求)以及程序內(nèi)部結(jié)構(gòu)而設(shè)計一批測試用例,并利用這些測試用例去運行程序,以發(fā)現(xiàn)軟件錯誤的過程。,測試用例是為了測試軟件而設(shè)計的一組數(shù)據(jù),它應(yīng)該包括輸入的數(shù)據(jù)和預(yù)期輸出的結(jié)果兩部分。 測試用例=輸入數(shù)據(jù)+預(yù)期結(jié)果,軟件測試背景,軟件是人編的所以不完美 實例: Intel的pentium處理器 1994年浮點除法缺陷 2000年8月28日,1.13MHZ處理器一個可能導(dǎo)致運行程序被掛起的執(zhí)行指令問題 1999年12月3日,美國航天局火星極地登陸飛船失蹤 1991年愛國者導(dǎo)彈防御系統(tǒng)系統(tǒng)時鐘錯誤積累造成跟蹤系統(tǒng)失去精確度 千年蟲:世界各地解決2000年錯誤超過數(shù)億美元,質(zhì)量管理領(lǐng)域權(quán)威人物J.M.Juran將質(zhì)量定義為“決定產(chǎn)品性能和滿意程度的特征”, 測試注重于產(chǎn)品的滿意度。 測試應(yīng)針對這樣一種情況:軟件產(chǎn)品在一些特定的范圍內(nèi)不能滿足客戶的合理要求。 通過測試過程可以評定質(zhì)量風(fēng)險(可能的錯誤),了解被測試系統(tǒng)中存在的錯誤模式(觀察到的錯誤癥狀)。,軟件測試是一個查找錯誤的過程,所以軟件測試只能證明錯誤的存在,而不是證明程序無錯,不能保證經(jīng)過測試的程序一定沒有錯誤。 軟件測試僅僅是一個手段,根本的目的是為了糾錯,即糾正軟件中的錯誤,從而提高軟件的質(zhì)量。 測試不可能發(fā)現(xiàn)所有錯誤,只能在有限的時間和經(jīng)濟條件下,盡可能地發(fā)現(xiàn)錯誤。,質(zhì)量控制技術(shù),質(zhì)量控制活動分類,開發(fā)方法學(xué),配置管理,驗證技術(shù),評 審,正確性驗證,性能調(diào)試,組件測試,集成測試,系統(tǒng)測試,原子事務(wù),模塊冗余性,檢 錯,質(zhì)量控制,避免錯誤,容 錯,調(diào) 試,測 試,測試的目的與地位 G.J.Myers在軟件測試技巧中認(rèn)為: 1.測試是為了尋找錯誤而運行程序的過程。 2.一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的測試。 3.一個成功的測試是揭示了迄今為止尚未發(fā)現(xiàn)的錯誤的測試。,E.W.Dijkstra 指出: “程序測試能證明錯誤的存在,但不能證明錯誤不存在?!?測試的目的是發(fā)現(xiàn)程序中的錯誤,是為了證明程序有錯,而不是證明程序無錯。,把證明程序無錯當(dāng)作測試目的不僅是不正確的, 完全做不到的,而且對做好測試沒有任何益處,甚至是十分有害的。 軟件測試要設(shè)法使軟件發(fā)生故障,暴露軟件錯誤。 測試的“成功”與“失敗”:能夠發(fā)現(xiàn)錯誤的測試是成功的測試,否則是失敗的測試。,“測試的目的是說明程序正確地執(zhí)行它應(yīng)有的功能” 這種說法正確嗎? 例:程序Triangle,輸入三個整數(shù),表示一個三角形的三個邊長,該程序產(chǎn)生一個結(jié)果,指出該三角形是等邊三角形、等腰三角形還是不等邊三角形。 為說明其能正確執(zhí)行它的功能,可使用“測試用例”(3,4,5),(5,5,6),(6,6,6), 程序都能給出正確結(jié)果,是否就可認(rèn)為程序是正確的? (兩邊之和必須大于第三邊),難以說清的軟件缺陷,古諺: “一片樹葉飄落在森林中沒有人聽見,誰能說它發(fā)出了聲音?”,由于不能報告沒有看見的問題,因此,沒有看見就不能說存在軟件缺陷。,如果軟件中的問題沒有人發(fā)現(xiàn),那么它算不算軟件缺陷?”,只有看到了,才能斷言軟件缺陷,尚未 發(fā)現(xiàn)的軟件缺陷只能說是未知軟件缺陷。,眼 見 為 實,測試原則 (1)所有的測試都應(yīng)追溯到用戶需求 最嚴(yán)重的錯誤(從用戶角度)是那些導(dǎo)致軟件無法滿足需求的錯誤。 程序中的問題根源可能出現(xiàn)在開發(fā)前期的各階段,糾正錯誤也必須追溯到前期工作。,測試與開發(fā)前期工作的關(guān)系,決定軟件與系統(tǒng)的配合關(guān)系,需求分析,概要設(shè)計,詳細設(shè)計,編 碼,單元測試,集成測試,確認(rèn)測試,系統(tǒng)測試,開發(fā)前期出現(xiàn)錯誤的擴展,計劃,需求 分析,設(shè) 計,編 碼,測 試,A,A,B,軟件生存期各階段間需保持的正確性,用戶要求,用戶: 我要什么?,運行結(jié)果,計算機: 程序運行得 到的結(jié)果,源程序,程序員: 我要讓計算 機什么做?,設(shè)計說明書,設(shè)計員: 我要讓軟件 做什么?,需求說明書,分析員: 我可以提 供什么?,1,2,3,4,5,理解正確性 表達正確性,理解正確性 設(shè)計正確性 表達正確性,理解正確性 編碼正確性,運行正確性 輸入正確性,相符嗎?,測試原則 (2)應(yīng)該盡早制定測試計劃。 概要設(shè)計時應(yīng)完成測試計劃,詳細的測試用例定義可在設(shè)計模型確定后開始,所有測試可在任何代碼被產(chǎn)生之前進行計劃和設(shè)計。,測試原則 (3)應(yīng)該由第三方進行測試工作。 一個軟件項目的開發(fā)人員不應(yīng)該同時是該軟件的測試人員,基于心理因素,人們往往不愿意否定自己的工作。,測試原則 (4)窮舉測試是不可能的。 測試的最高目標(biāo)是指發(fā)現(xiàn)錯誤的可能性最高的測試,所以,測試的關(guān)鍵技術(shù)是設(shè)計一組高產(chǎn)的測試用例,好的測試方案是盡可能發(fā)現(xiàn)至今為止仍未發(fā)現(xiàn)的錯誤。從某種意義上說,測試是否成功,取決測試用例的選擇。,測試原則 (5)充分注意到錯誤的群集現(xiàn)象 經(jīng)驗表明,測試發(fā)現(xiàn)的錯誤中有80%的錯誤很可能是由20%的程序模塊造成的,這是一種錯誤群集性現(xiàn)象。也就是說,在程序段中,發(fā)現(xiàn)錯誤數(shù)目多的地方,則殘存錯誤的數(shù)目也比較多,這一現(xiàn)象已為許多程序測試實踐所證明。,測試原則 (6)測試應(yīng)該從“小規(guī)?!钡健按笠?guī)?!?通常,最初的測試重點往往是放在單個的程序模塊中,然后,進一步的測試重點放在集成的模塊族,最后是對整個系統(tǒng)進行測試。隨著測試的逐步深入展開,要集中測試容易出錯的地方。,軟件測試流程,軟件 配置,測試,測試 配置,測試 工具,結(jié)果 分析,排錯,可靠性 分析,測試 結(jié)果,錯誤,預(yù)期 結(jié)果,出錯率,改正 的軟件,預(yù)測 的可 靠性,需求規(guī)格說明書 軟件設(shè)計說明書 被測源程序,測試計劃 測試用例 (測試數(shù)據(jù)) 測試驅(qū)動程序,軟件配置:需求規(guī)格說明、設(shè)計說明書、源程序等。軟件配置中還應(yīng)包含測試配置。 測試工具:為軟件測試提供的某種服務(wù)程序。 評價:測試結(jié)果與期望結(jié)果比較,如果有差異則往往程序有錯,需要改正。 可靠性預(yù)測有3種情況可以考慮: A.如果測試發(fā)現(xiàn)嚴(yán)重錯誤,則軟件的質(zhì)量和可靠性一定不高; B.如果測試結(jié)果是軟件功能完成正常,發(fā)現(xiàn)的問題不是嚴(yán)重錯誤,也容易修改,則可能:(1)軟件質(zhì)量和可靠性可以接受;(2)所進行的測試還不足以發(fā)現(xiàn)嚴(yán)重錯誤,錯誤被潛伏下來。 C.測試沒有發(fā)現(xiàn)任何錯誤,則極有可能是測試配置選擇不當(dāng)(測試用例沒有選好),錯誤被深深地潛伏下來,這是極危險。,軟件測試對象,軟件測試的對象應(yīng)包括需求分析與設(shè)計以及編碼等所獲得一切的文檔和程序。,軟件測試方法,軟件測試方法一般可以分成靜態(tài)測試和動態(tài)測試等。 靜態(tài)測試實際上是確認(rèn)在給定的外部環(huán)境中軟件的邏輯正確性,它應(yīng)該包括需求規(guī)格說明和程序等的確認(rèn)。 動態(tài)測試也稱為機器測試,動態(tài)測試主要是通過動態(tài)分析以及程序測試來檢查程序的執(zhí)行狀態(tài),以確認(rèn)程序的正確性。,測試的方法與技術(shù),軟件測試的 策略和方法,靜態(tài)測 試方法,動態(tài)測 試方法,人工測試方法,計算機輔助靜 態(tài)分析方法,白盒測試方法,黑盒測試方法,靜態(tài)和動態(tài)測試,汽車的檢查過程: 踩油門 看車漆 打開前蓋檢查 發(fā)動汽車 聽聽發(fā)動機聲音 上路行使,靜態(tài)測試,動態(tài)測試,靜態(tài)測試:基本特征是對軟件進行 分析、檢查和審閱,不實 際運行被測試的軟件。 靜態(tài)測試約可找出3070%的邏輯設(shè)計錯誤. 對需求規(guī)格說明書、軟件設(shè)計說明書、源程序做檢查和審閱,包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過結(jié)構(gòu)分析、流圖分析、符號執(zhí)行指出軟件缺陷;,靜態(tài)測試方法 (1)人工測試方法。人工測試就是通過人工閱讀分析以及評審軟件的文檔、程序資料等等,以發(fā)現(xiàn)程序中的錯誤,尤其是一些設(shè)計上的邏輯錯誤在機器上不易發(fā)現(xiàn),需要人工復(fù)查。根據(jù)統(tǒng)計,好的人工評審,可以發(fā)現(xiàn)30%到70%的編碼或邏輯設(shè)計錯誤。 (2)計算機輔助靜態(tài)分析。為了提高測試的效率,人們可以設(shè)計一些分析工具對被測試的程序進行靜態(tài)分析,從中提取一些信息。例如,檢查程序中的局部變量和全局變量、參數(shù)的匹配、判斷與循環(huán)的嵌套匹配、潛在的死循環(huán)、不執(zhí)行的代碼、過程調(diào)用層次等等。 (3)程序正確性說明。程序正確性證明是試圖找到某種方法,確切地證明程序是沒有錯誤的。所謂證明,就是確信一個斷言真實性的論證。這種證明可以形式化的或非形式化。,動態(tài)測試:通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。 動態(tài)測試的兩個基本要素: 被測試程序 測試數(shù)據(jù)(測試用例),動態(tài)測試方法 (1)選取定義域有效值,或定義域 外無效值. (2)對已選取值決定預(yù)期的結(jié)果 (3)用選取值執(zhí)行程序 (4)執(zhí)行結(jié)果 與(2)結(jié)果相比, 不吻和則程序有錯.,動態(tài)黑盒測試 閉著眼睛測試軟件,軟件,輸入,不深入代碼細節(jié)的測試方法稱為動態(tài)黑盒測試。 軟件測試員充當(dāng)客戶來使用它。,輸出,動態(tài)白盒測試 帶上X光眼鏡測試軟件,?,3581322.293419985680302829734315,250*(1+0.015)*(1+0.015)360-1)/0.015,250*(1+0.015)*(1+0.015)360-1)/0.015,假如知道一個盒子包含一臺計算機,而另一個 盒子是人用紙筆計算,就會選擇不同的測試用例,了解軟件的運作方式會影響測試手段,窮舉測試 例:輸入 三條邊長 黑盒測試 可采用的測試用例數(shù) (設(shè)字長16位) 執(zhí)行時間: 設(shè)測試一次需1ms 共需一萬年.,=2 X2 X2 3X10,16,16,16,14,窮舉測試 白盒測試 例: 含4個分支,循環(huán)次數(shù) 20,從A到B的可能 路徑 執(zhí)行時間: 設(shè)測試一次需2ms 窮舉測試需5億年.,=5+5 +5 +5 10,20,1,2,19,14,A,B,第一次為5,第二次為5*5,不論黑盒還是白盒測試都不能 進行窮盡測試, 所以軟件測試不可 能發(fā)現(xiàn)程序中存在的所有錯誤, 因 此需精心設(shè)計測試方案, 力爭盡可 能少的次數(shù),測出盡可能多的錯誤.,兩種類型的測試 黑盒測試 又稱:功能測試 數(shù)據(jù)驅(qū)動測試 基于規(guī)格說明書的測試,白盒測試 又稱:開盒測試 結(jié)構(gòu)測試 玻璃盒測試 基于覆蓋的測試. 根據(jù)被測程序的邏輯結(jié)構(gòu)設(shè)計測試用例;力求提高測試覆蓋率;,黑盒測試與白盒測試比較 黑盒測試是從用戶觀點,按 規(guī)格說明書要求的輸入數(shù)據(jù)與輸 出數(shù)據(jù)的對應(yīng)關(guān)系設(shè)計測試用例, 是根據(jù)程序外部特征進行測試。 白盒測試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進行測試。,黑盒測試與白盒測試優(yōu)缺點比較,黑盒測試 白盒測試,優(yōu) 點,缺 點,性 質(zhì),適用于各階段測試 從產(chǎn)品功能角度測試 容易入手生成測試數(shù) 據(jù),可構(gòu)成測試數(shù)據(jù)使特定程 序部分得到測試 有一定的充分性度量手段 較多工具支持,某些代碼得不到測試 如果規(guī)格說明有誤, 則無法發(fā)現(xiàn) 不易進行充分性測試,不易生成測試數(shù)據(jù)(通常) 無法對未實現(xiàn)規(guī)格說明的 部分進行測試 工作量大,通常只用于單 元測試,有應(yīng)用局限,是一種確認(rèn)技術(shù),回答: “我們在構(gòu)造一個正確 的系統(tǒng)嗎?”,是一種驗證技術(shù),回答: “我們在正確地構(gòu)造一個系 統(tǒng)嗎?”,黑盒測試與白盒測試能發(fā)現(xiàn)的錯誤,C,B,A,D,-只能用黑盒測試發(fā)現(xiàn)的錯誤,A,-只能用白盒測試發(fā)現(xiàn)的錯誤,-兩種方法都能發(fā)現(xiàn)的錯誤,-兩種方法都不能發(fā)現(xiàn)的錯誤,B,C,D,測試用例設(shè)計 選擇測試用例是軟件測試員最重要 的一項工作。 測試用例的屬性: 屬性 描述 name 測試用例的名稱 location 可執(zhí)行的完全路徑名 input 輸入數(shù)據(jù)或命令 oracle 與測試輸入相比較的期待測試結(jié)果 log 測試生產(chǎn)的輸出,程序測試舉例 例:程序 Triangle, 輸入三個整 數(shù),表示一個三角形的三個邊 長,該程序產(chǎn)生一個結(jié)果,指 出該三角形是等邊三角形、等 腰三角形還是不等邊三角形。,判斷三角型的測試用例設(shè)計: 輸入數(shù)據(jù) 預(yù)期結(jié)果 (1) 6;6;6 等邊 (2) 8;8;4 等腰 (3) 4;5;6 一般 還應(yīng)輸入非法數(shù)據(jù): 0; 7; 9 -7;3; 5 a; 2; 7 等,白盒測試的測試用例設(shè)計 邏輯覆蓋法 (1)語句覆蓋 (2)判定覆蓋 (3)條件覆蓋 (4)判定/條件覆蓋 (5)條件組合覆蓋 (6)路徑覆蓋 (7)點覆蓋 (8)邊覆蓋,例:PROCEDURE 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;,開始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,(1)語句覆蓋 使程序中每個語句至少執(zhí)行一次,語句覆蓋,開始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,只需設(shè)計一個測試用例: 輸入數(shù)據(jù):A=2,B=0,X=4 則覆蓋ace,可以執(zhí)行程序中的每一條語句,即達到了語句覆蓋; 語句覆蓋是最弱的邏輯覆蓋,(2)判定覆蓋(分支覆蓋) 使每個判定的真假分支都至少執(zhí)行一次,判定覆蓋,開始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,例:可設(shè)計兩組測試用例: A=3,B=0 ,X=3 可覆蓋c、d分支 A=2,B=1 ,X=1 可覆蓋b、e分支 兩組測試用例可覆蓋所有判定的真假 分支。 語句覆蓋仍是弱的邏輯覆蓋。,(3)條件覆蓋 使每個判定的每個條件的可能取值至少執(zhí)行一次,第一判定表達式: 設(shè)條件 A1 取真 記為 T1 假 T1 條件 B=1 取真 記為 T2 假 T2 第二判定表達式: 設(shè)條件 A=2 取真 記為 T3 假 T3 條件 X1 取真 記為 T4 假 T4,條件覆蓋,開始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,滿足條件: T1,T1, T2,T2 T3,T3 T4,T4,測試用例 通過 滿足的 覆蓋 A B X 路徑 條件 分支 1 0 3 abe T1,T2,T3,T4 b,e 2 1 1 abe T1,T2,T3,T4 b,e 兩個測試用例覆蓋了四個條件八種可能 取值。 未覆蓋c、d分支,不滿足判定覆蓋的要 求. 條件覆蓋不一定包含判定覆蓋 判定覆蓋也不一定包含條件覆蓋,(4)判定/條件覆蓋 選取足夠多的測試用例,使判斷中的每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次.,判定/條件 覆蓋,開始,(A1) AND (B=0),(A=2) OR (X1),返回,X=X/A,X=X+1,F,F,T,T,a,b,d,c,e,滿足條件: T1,T1, T2,T2 T3,T3 T4,T4,測試用例 通過 滿足的 覆蓋 A B X 路徑 條件 分支 2 0 4 ace T1,T2,T3,T4 c,e 2 1 1 abd T1,T2,T3,T4 b,d 能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)取值。,測試用例 通過 滿足的 覆蓋 A B X 路徑 條件 分支 2 0 3 ace T1,T2,T3,T4 c,e 2 1 1 abe T1,T2,T3,T4 b,e 1 0 3 abe T1,T2,T3,T4 b,e 1 1 1 abd T1,T2,T3,T4 b,d,(5)條件組合覆蓋 所有可能的條件取值組合至少執(zhí)行一次 A1, B=0 A1, B0 A1, B=0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1,測試用例 通過 滿足的 覆蓋 ABX 路徑 條件 分支 204 ace T1,T2,T3,T4 c,e 211 abe T1,T2,T3,T4 b,e 102 abd T1,T2,T3,T4 b,d 111 abd T1,T2,T3,T4 b,d 它是這幾種覆蓋標(biāo)準(zhǔn)中最強的,(6)路徑覆蓋 覆蓋每一個可能的路徑 測試用例 通過 滿足的 覆蓋 A B X 路徑 條件 分支 1 1 1 abd T1,T2,T3,T4 b,d 1 1 2 abe T1,T2,T3,T4 b,e 3 0 1 acd T1,T2,T3,T4 c,d 2 0 4 ace T1,T2,T3,T4 c,e,循環(huán)測試,(1)簡單循環(huán)測試 假設(shè)n是允許通過循環(huán)的最大次數(shù),應(yīng)該進行下列的測試: 跳過整個循環(huán); 只執(zhí)行循環(huán)一次; 執(zhí)行循環(huán)兩次; 執(zhí)行循環(huán)m次,其中,mn-1; 執(zhí)行循環(huán)n-1,n,n+1次。,(2)嵌套循環(huán)測試 如果把簡單循環(huán)的方法直接用于嵌套循環(huán),可能的測試次數(shù)會隨著嵌套循環(huán)的層數(shù)的增加按幾何級數(shù)增加,導(dǎo)致不現(xiàn)實的測試數(shù)目,可以進行下列的測試: 從最內(nèi)層循環(huán)開始測試,把其他循環(huán)都設(shè)置為最小值; 對最內(nèi)層循環(huán)使用簡單測試方法,使外層循環(huán)的迭代參數(shù)取最小值(例如,循環(huán)計算器等),并且,為越界或非法值增加一些額外的測試; 由內(nèi)向外,對下一個循環(huán)進行測試,保持它的所有外層循環(huán)為最小值,其他的嵌套循環(huán)取“典型”值。如此繼續(xù)進行,直到測試完所有循環(huán)。,(3)串接循環(huán)測試 如果串接循環(huán)的各個循環(huán)都彼此獨立,則可以使用簡單循環(huán)測試的方法來進行。但是,如果在兩個串接循環(huán)中,第一個循環(huán)的循環(huán)計算器的值是第二個循環(huán)的初始值,則這兩個循環(huán)并不是獨立的。這時,建議使用嵌套循環(huán)測試方法來進行。,基本路徑測試法 通過分析由控制構(gòu)造的環(huán)路的復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計測試用例,保證這些路徑至少通過一次。 基本路徑測試步驟: 導(dǎo)出程序流程圖的拓撲結(jié)構(gòu)-流圖 (程序圖) 計算流圖G的環(huán)路復(fù)雜度V(G) 確定只包含獨立路徑的基本路徑集 設(shè)計測試用例,導(dǎo)出程序流程圖的拓撲結(jié)構(gòu)-流圖,1,2,3,6,4,5,7,10,11,a,節(jié)點,邊,R4,區(qū)域,1,2,3,4,5,8,7,6,9,10,11,程序流程圖,8,9,R1,R2,R3,計算流圖G的環(huán)路復(fù)雜度V(G) V(G)=區(qū)域個數(shù)=4 V(G)=邊的條數(shù)-節(jié)點個數(shù)+2=4 V(G)=判定節(jié)點個數(shù)+1=4,確定只包含獨立路徑的基本路徑集 path1:1-11 path2:1-2-3-4-5-10-1-11 path3:1-2-3-6-8-9-10-1-11 path4:1-2-3-6-7-9-10-1-11 一條新路徑必須包含一條新邊。 這4條路徑組成了一個基本路徑集。4(環(huán) 路復(fù)雜度V(G)是構(gòu)成這個基本路徑集的獨立 路徑數(shù)的上界,也是設(shè)計測試用例的數(shù)目。 設(shè)計測試用例,保證基本路徑集中每條 路徑的執(zhí)行。,黑盒測試的測試用例設(shè)計 等價類劃分法 把所有可能的輸入數(shù)據(jù)(有效的 和無效的)劃分成若干個等價的子集 (稱為等價類), 使得每個子集中的 一個典型值在測試中的作用與這一 子集中所有其它值的作用相同. 可從每個子集中選取一組數(shù)據(jù)來測試程序,例:某報表處理系統(tǒng)要求用戶輸入處理 報表的日期,日期限制在2001年1 月至2005年12月,即系統(tǒng)只能對該 段期間內(nèi)的報表進行處理,如日期 不在此范圍內(nèi),則顯示輸入錯誤信 息。 系統(tǒng)日期規(guī)定由年、月的6位數(shù)字 字符組成,前四位代表年,后兩位 代表月。 如何用等價類劃分法設(shè)計測試用例, 來測試程序的日期檢查功能?,如何劃分等價類? 有效等價類(合理等價類) 無效等價類(不合理等價類) 劃分等價類的標(biāo)準(zhǔn): 覆蓋 不相交 代表性,劃分等價類的規(guī)則,(1)如果輸入條件規(guī)定了取值范圍, 可定義一個有效等價類和兩個無 效等價類。,例 輸入值是學(xué)生成績,范圍是0100,0 100,有效 等價類 1成績100,無效等價類 成績100,無效等價類 成績0,劃分等價類的規(guī)則:,(2)如果輸入條件代表集合的某 個元素,則可定義一個有效 等價類和一個無效等價類。,劃分等價類的規(guī)則:,(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且 程序?qū)Σ煌斎胫底霾煌幚恚?則每個允許的輸入值是一個有 效等價類,并有一個無效等價類 (所有不允許的輸入值的集合)。 例:輸入條件說明學(xué)歷可為:???、本科、 碩士、博士四種之一,則分別取這四 個值作為四個有效等價類,另外把四 種學(xué)歷之外的任何學(xué)歷作為無效等價類,劃分等價類的規(guī)則:,(4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī) 則,可確定一個有效等價類(符合 規(guī)則)和若干個無效等價類(從不 同角度違反規(guī)則)。 (5)如已劃分的等價類各元素在程序中 的處理方式不同,則應(yīng)將此等價 類進一步劃分成更小的等價類。,用等價類劃分法設(shè)計測試用例步驟:,(1)形成等價類表,每一等價類規(guī)定 一個唯一的編號; (2)設(shè)計一測試用例,使其盡可能多 地覆蓋尚未覆蓋的有效等價類, 重復(fù)這一步驟,直到所有有效等 價類均被測試用例所覆蓋; (3)設(shè)計一新測試用例,使其只覆蓋 一個無效等價類,重復(fù)這一步驟 直到所有無效等價類均被覆蓋;,第一步:等價類劃分,輸入等價類 有效等價類 無效等價類,報表日期的 類型及長度,6位數(shù)字字符(1),有非數(shù)字字符 (4) 少于6個數(shù)字字符 (5) 多于6個數(shù)字字符 (6),年份范圍,在20012005 之間 (2),小于2001 (7) 大于2005 (8),月份范圍,在112之間(3),“報表日期”輸入條件的等價類表,小于1 (9) 大于12 (10),第二步:為有效等價類設(shè)計測試用例 對表中編號為1,2,3的3個有效等價類 用一個測試用例覆蓋:,測試數(shù)據(jù) 期望結(jié)果 覆蓋范圍,200105,等價類(1)(2)(3),輸入有效,第三步:為每一個無效等價類至少設(shè) 計一個測試用例,測試數(shù)據(jù) 期望結(jié)果 覆蓋范圍,001MAY,等價類(4),輸入無效,20015,等價類(5),輸入無效,2001005,等價類(6),輸入無效,200005,等價類(7),輸入無效,200805,等價類(8),輸入無效,200100,等價類(9),輸入無效,200113,等價類(10),輸入無效,不能出現(xiàn)相同 的測試用例,本例的10個等價類至 少需要8個測試用例,例:對招干考試系統(tǒng)“輸入學(xué)生成績” 子模塊設(shè)計測試用例 招干考試分三個專業(yè),準(zhǔn)考證號第一位 為專業(yè)代號,如: 1-行政專業(yè), 2-法律專業(yè), 3-財經(jīng)專業(yè). 行政專業(yè)準(zhǔn)考證號碼為:110001111215 法律專業(yè)準(zhǔn)考證號碼為:210001212006 財經(jīng)專業(yè)準(zhǔn)考證號碼為:310001314015,例:準(zhǔn)考證號碼的等價類劃分 有效等價類: (1) 110001 111215 (2) 210001 212006 (3) 310001 314015 無效等價類: (4) - 110000 (5) 111216 210000 (6) 212007 310000 (7) 314016 + ,例:計算給定月份中天數(shù)的方法接口(java): Class MyGregorianCalender public static in getNumDaysInMonth(int month,int year) getNumDaysInMonth( )方法有兩個參數(shù), 月和年,年份的有效輸入是從0到maxInt.,等價類劃分即把輸入空間分解成一系列子域,軟件在一個子域內(nèi)的行為應(yīng)是等價的。,軟件錯誤分為兩類:計算錯誤 域錯誤,針對計算錯誤的測試方法 針對域錯誤的測試方法:測試域邊界 劃定的正確性,邊界值分析法 邊界值分析法與等價類劃分法區(qū)別 (1)邊界值分析不是從某等價類中 隨便挑一個作為代表,而是使 這個等價類的每個邊界都要作 為測試條件。 (2)邊界值分析不僅考慮輸入條件, 還要考慮輸出空間產(chǎn)生的測試 情況,被測試 子 域,測試內(nèi)點,測試外點,軟件邊界與懸崖很類似,邊界條件類型,如果軟件測試問題 包含確定的邊界,那 么數(shù)據(jù)類型可能是: 數(shù)值 字符 位置 數(shù)量 速度 地址 尺寸 ,還要考慮數(shù)據(jù)類型的特征: 第一個/最后一個 最小值/最大值 開始/完成 空/滿 最慢/最快 相鄰/最遠 超過/在內(nèi) ,測試邊界線 測試臨近邊界的合法數(shù)據(jù),以及剛超過邊界的非法數(shù)據(jù). 越界測試通常簡單地加1或很小的數(shù) (對于最大值)和減1或很小的數(shù)(對于最小值).,輸入 條件,報表日 期的類 型及長 度,1個數(shù)字字符 5個數(shù)字字符 7個數(shù)字字符 有1個非數(shù)字字符 全部是非數(shù)字字符 6個數(shù)字字符,顯示出錯 顯示出錯 顯示出錯 顯示出錯 顯示出錯 輸入有效,日期 范圍,月份 范圍,“報表日期”邊界值分析法測試用例,測試用例說明,測試數(shù)據(jù),期望結(jié)果,選取理由,5 20015 2001005 2001.5 MAY- 200105,月份為1月 月份為12月 月份12,200101 200112 200100 200113,200101 200512 200100 200513,輸入有效 輸入有效 顯示出錯 顯示出錯,輸入有效 輸入有效 顯示出錯 顯示出錯,在有效范圍 邊界上選取 數(shù)據(jù),僅有1個合法字符 比有效長度少1 比有效長度多1 只有1個非法字符 6個非法字符 類型及長度均有效,最小日期 最大日期 剛好小于最小日期 剛好大于最大日期,最小月份 最大月份 剛好小于最小月份 剛好大于最大月份,錯誤推測法(error guessing) 根據(jù)經(jīng)驗來設(shè)計測試用例的方法。 例如,數(shù)據(jù)測試中的: 缺省值 空白 空值 零值 無,狀態(tài)測試 軟件必須測試程序的狀態(tài)及其轉(zhuǎn)換。 測試軟件的邏輯流程 建立狀態(tài)轉(zhuǎn)換圖 減少要測試的狀態(tài)及轉(zhuǎn)換的數(shù)量,空閑,等待用戶 輸入命令,按下Esc鍵 顯示口令框,口令錯誤 消除,口令正確 初始狀態(tài)消失,空閑,等待用戶 輸入命令,按下Esc鍵,口令正確,口令錯誤,不同形式的狀態(tài)轉(zhuǎn)換圖,設(shè)置2Bwatch 上的時間的順序圖,:2Bwatch用戶,按下按鈕1和2,:2Bwatch輸入,:2Bwatch顯示,:2Bwatch時間,時間,按下按鈕1,按下按鈕2,按下按鈕1和2,閃爍小時,閃爍分鐘,增加分鐘,刷新,提交更新時間,停止閃爍,2Bwatch 設(shè)置時間功能的狀態(tài)圖和測試結(jié)果,按左按鈕 按右按鈕,按左按鈕 按右按鈕,4. 2分鐘以后,測量時間,設(shè)置時間,電池沒電,3.按下左右按鈕,5.按下左右按鈕/蜂鳴,8. 20年以后,7. 20年以后,6.,2.,1.,激勵因素,空集合,測量時間,1.初始變遷,測試的變遷,預(yù)期結(jié)果狀態(tài),按下左邊按鈕,測量時間,2.,同時按下兩個按鈕,設(shè)置時間,3.,等2分鐘,測量時間,4.超時,失敗狀態(tài)測試 找到測試軟件失敗的案例。 競爭條件和時序錯亂 重復(fù) 壓迫 重負,應(yīng)聯(lián)合使用,同時進行,有效等價類和用來測試getNumDaysInMonth()方法所選的有效輸入,有效等價類,一個月有31天,非閏年,1901,7(七月),一個月有31天, 閏年,1904,7(七月),一個月有30天,非閏年,1901,6(六月),一個月有30天, 閏年,1904,6(六月),一個月為28或29天,非閏年,1901,2(二月),月份 輸入值,年份 輸入值,一個月為28或29天, 閏年,2(二月),1904,用來測試getNumDaysInMonth()方法的附加邊界值,等價類,可以被400整除的閏年,2000,2(二月),可以被100整除的非閏年,1900,2(二月),非正數(shù)無效月份,1291,0,正數(shù)無效月份,1315,13,月份 輸入值,年份 輸入值,因果圖法 因果圖適合于描述對于多種輸入條件的組合,相應(yīng)產(chǎn)生多個動作的形式來設(shè)計測試用例。 因果圖方法最終生成的是判定表。,因果圖方法實例 某電力公司有A、B、C、D四類收費標(biāo)準(zhǔn), 并規(guī)定: 居民用電 100度/月 按A類收費 100度/月按B類收費 動力用電 10000度/月,非高峰,B類收費 10000度/月,非高峰,C類收費 10000度/月, 高峰,C類收費 10000度/月, 高峰,D類收費,用因果圖表明輸入和輸出間的邏輯關(guān)系,1,I1,2,B,4,A,C,3,5,D,I4,I3,I2,把因果圖轉(zhuǎn)換為判定表,組合條件,條件 (原因),動作 (結(jié)果),A,B,C,1,2,3,1,2,3,4,5,6,1,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,1,0,0,0,0,1,1,0,4,1,0,1,0,5,0,0,1,1,D,0,0,0,1,1,0,0,1,0,0,0,0,測試用例,為判定表每一列設(shè)計一個測試用例:,1列 居民電,90度/月 A 2列 居民電,110度/月 B 3列 動力電,非高峰,8000度/月 B 4列 動力電,非高峰,1.2萬度/月 C 5列 動力電, 高峰,0.9萬度/月 C 6列 動力電, 高峰,1.1萬度/月 D,條件 測試用例 預(yù)期結(jié)果 組合 (輸入數(shù)據(jù)) (輸出動作),軟件測試的過程,被測 模塊,單元 測試,設(shè)計 信息,集成 測試,被測 模塊,單元 測試,被測 模塊,單元 測試,測試過 的模塊,確認(rèn) 測試,系統(tǒng) 測試,軟件 需求,其它系 統(tǒng)元素,裝配好的軟件,確認(rèn) 的軟件,可運 行的 軟件,軟件測試的步驟,軟件測試策略,單元測試,U,C,D,R,S,I,V,ST,集成測試,確認(rèn)測試,系統(tǒng)測試,系統(tǒng)工程,軟件需求分析,軟件設(shè)計,代碼編寫,單元測試 一.單元測試的內(nèi)容 主要對模塊的五個基本特性進行評價,模塊,錯誤處理,模塊接口,局部數(shù) 據(jù)結(jié)構(gòu),重要的 執(zhí)行路徑,邊界條件,1.常見錯誤類型 接口錯誤 I/O錯誤 數(shù)據(jù)結(jié)構(gòu)錯誤 算法錯誤 比較及控制邏輯錯誤 錯誤處理錯誤,2.單元測試基本原則 至少一次測試所有語句 測試所有可能的執(zhí)行或邏輯路徑的組合 測試每個模塊的所有入口和出口,3. 確定單元測試數(shù)據(jù)集 值域 值類 離散值 值的次序集(測試順序文件和表),二.單元測試的方法 單元測試一般為編碼步驟的附屬部分。 模塊不是獨立的程序,自己不能運行, 要靠其它部分來調(diào)用和驅(qū)動,要為每個 單元測試開發(fā)兩個軟件: (1)驅(qū)動模塊(驅(qū)動程序):相當(dāng)于主模塊 (2)樁模塊(測試存根、連接程序) :代替所測模塊調(diào)用的子模塊,單元測試的測試環(huán)境舉例:,B,A,C,D,E,待測試模塊,單元測試的測試環(huán)境舉例:,被測模塊 B,驅(qū)動模塊 (模擬模塊A),樁模塊(測試存根) (模擬模塊E),測試用例,測試結(jié)果,許多模塊不能用簡單的軟件進行充分的單元測試, 此時, 完全的測試可放到集成測試階段再進行。,單元測試的測試環(huán)境舉例:,實際軟件,華氏到懾氏 轉(zhuǎn)換模塊,溫度數(shù)據(jù),實際配置,測試用例數(shù)據(jù),結(jié)果,測試驅(qū)動軟件,華氏到懾氏 轉(zhuǎn)換模塊,結(jié)果,測試驅(qū)動際配置,單元測試的測試環(huán)境舉例,溫度顯示模塊,溫度接口 模塊,實際配置,測試驅(qū)動實際配置,溫度顯示模塊,程序員編寫的樁模塊 (測試存根),溫度值的測試文件,結(jié)構(gòu)性模式(structural patterns) 適配器模式(Adapter)打包器(Wrapper) 橋模式(Bridge)句柄(Handle) 組合模式(Composite) 修飾模式(Decorator)包裝器(Wrapper) 外觀模式(Facade) 輕量模式 (Flyweight) 代理模式(Proxy),Implementor,OperationaImp( ),橋模式(Bridge) 意圖:將抽象部分和實現(xiàn)部分分離,使他們都可以獨立地變化,Abstraction,Contextinterface( ),ConcreteImplementorA,OperationaImp( ),ConcreteImplementorB,OperationaImp( ),RefinedAbstraction,支持多種窗口系統(tǒng)的設(shè)計窗口與窗口實現(xiàn)分離,Window,Raise( ) DrawRact(),ApplicationWindow,IconWindow,DialogWindow,MacWindowlmp,DeviceRaise( ) DeviceRect( ) ,PMWindowlmp,DeviceRaise( ) DeviceRect( ) ,XWindowlmp,DeviceRaise( ) DeviceRect( ) ,Windowlmp,DeviceRaise( ) DeviceRect( ) ,利用Bridge設(shè)計模式與未完成、未知或在測試 另一組件時不可用組件的接口(UML類圖),用戶接口,數(shù)據(jù)庫戶接口,數(shù)據(jù)庫戶接口,測試存根,數(shù)據(jù)庫,可用Bridge設(shè)計模式實現(xiàn)測試存根,用戶接口子系統(tǒng)訪問測試不能訪問的數(shù)據(jù)庫子系統(tǒng)。 將數(shù)據(jù)庫接口和數(shù)據(jù)庫實現(xiàn)分離開來。,集成測試(組裝測試) 集成測試需考慮的問題: 數(shù)據(jù)穿越接口可能丟失. 一模塊可能破壞另一模塊功能. 子功能組裝可能未產(chǎn)生所要求的 主功能. 全程數(shù)據(jù)結(jié)構(gòu)可能出問題. 誤差累積問題.,集成測試方法 通常采用黑盒測試技術(shù) 實施策略: 非增量式系統(tǒng)集成 增量式系統(tǒng) 集成,深度優(yōu)先 廣度優(yōu)先,自頂向下結(jié)合 自底向上結(jié)合,一.非增量式系統(tǒng)集成 一次就把所有通過了單元測試 的模塊組合在一起進行全程序的測 試。 缺點:發(fā)現(xiàn)錯誤難以診斷定位, 又稱“莽撞測試” 。,二. 增量式系統(tǒng)集成 從一個模塊開始,測一次添加一個模塊,邊組裝邊測試,以發(fā)現(xiàn)與接口相聯(lián)系的問題。,自頂向下結(jié)合方式舉例:,A,D,B,E,模塊測試 結(jié)合順序,C,F,深度優(yōu)先:A、B、E、C、D、F,廣度優(yōu)先:A、B、C、D、E、F,自頂向下結(jié)合方式舉例:(深度優(yōu)先),A,測試 A,S2,S1,S3,A,加入B,S2,B,S3,S4,A,加入E,S2,B,S3,E,A,加入C,C,B,S3,E,加入D,C,B,D,E,加入F,C,B,D,E,A,A,F,S5,自底向上結(jié)合方式舉例:,A,C,B,D,F,E,E,d1,C,d3,F,d4,B,d2,E,D,d5,F,自底向上結(jié)合方式舉例:,Mc,D1,Ma,Mb,D2,D3,簇1,簇2,簇3,自頂向下 自底向上 優(yōu)點 可在測試早期 設(shè)計測試用例容易 實現(xiàn)并驗證系 統(tǒng)主要功能 不需驅(qū)動模塊 不需樁模塊 缺點 需樁模塊 只有到最后程序才 能作為一個整體 3. 混合集成測試方法 一般對軟件結(jié)構(gòu)的上層使用自頂向下 結(jié)合的方法; 對下層使用自底向上結(jié)合的方法;,接口測試,接口測試的目的是檢查由于接口錯誤或者接口進行無效假設(shè)造成的系統(tǒng)缺陷。程序組件的接口有很多的類型,例如: 參數(shù)接口。 主要是數(shù)據(jù)和函數(shù)指針等,它們由一個構(gòu)件傳遞到另一個構(gòu)件。 共享內(nèi)存接口。 有一個被子系統(tǒng)共享的內(nèi)存塊。由一個子系統(tǒng)把數(shù)據(jù)放在該內(nèi)存中,然后被另一個子系統(tǒng)取出。 程序接口。 由一個子系統(tǒng)封裝了的一組程序,這些程序可以被其他子系統(tǒng)調(diào)用。例如,對象(類)和抽象數(shù)據(jù)類型就存在這種接口。 消息傳遞接口。 子系統(tǒng)通過消息傳遞來請求其他子系統(tǒng)的服務(wù),返回的消息也包含了該服務(wù)的運行結(jié)果。例如,一些面向?qū)ο笙到y(tǒng)、客戶機/服務(wù)器系統(tǒng)存在這種接口。,接口錯誤可以分成3類: 接口誤用。調(diào)用者(組件)在調(diào)用其他組件時,接口使用不當(dāng)而產(chǎn)生錯誤,例如,在使用參數(shù)接口時,參數(shù)類型和傳遞順序以及參數(shù)個數(shù)不對等。 接口誤解。調(diào)用者(組件)誤解了被調(diào)用組件的接口描述而產(chǎn)生錯誤,被調(diào)用組件沒有按照預(yù)期的行為執(zhí)行。 計時錯誤。這類錯誤一般發(fā)生在實時控制系統(tǒng)中,系統(tǒng)使用了共享內(nèi)存接口或者消息傳遞接口而產(chǎn)生接口錯誤。例如,數(shù)據(jù)的生產(chǎn)和消費可能以不同的速度進行,由于生產(chǎn)者沒有及時更新共享接口的信息導(dǎo)致消費者訪問了過期的數(shù)據(jù)。,接口測試的一般準(zhǔn)則: 檢查代碼并明確地列出對外部構(gòu)件的調(diào)用。對傳給外部構(gòu)件的參數(shù)值,應(yīng)選擇取值范圍的邊緣值作為測試用例,這樣可能發(fā)現(xiàn)接口的不一致性。 如果有指針從接口傳遞,應(yīng)該用空指針參數(shù)來進行測試。 如果通過程序接口調(diào)用構(gòu)件,可以設(shè)計一些容易引起構(gòu)件失敗的測試。 如果是通過消息傳遞到系統(tǒng)進行強度測試,應(yīng)該設(shè)計大量的消息,可能發(fā)現(xiàn)計時錯誤。 當(dāng)構(gòu)件之間是通過共享內(nèi)存進行交互時,設(shè)計測試用例時,改變激活構(gòu)件的次序,這樣可能發(fā)現(xiàn)共享數(shù)據(jù)的生產(chǎn)和消費的順序的錯誤。,集成測試的標(biāo)準(zhǔn)應(yīng)包括: 接口完整性。每一個模塊集成到整個系統(tǒng)結(jié)構(gòu)中,都要對它的內(nèi)部和外部接口進行測試。 功能有效性。為發(fā)現(xiàn)功能性錯誤進行的測試。 信息內(nèi)容。為發(fā)現(xiàn)與局部數(shù)據(jù)結(jié)構(gòu)或者全局?jǐn)?shù)據(jù)結(jié)構(gòu)有關(guān)錯誤的測試。 性能。為驗證軟件設(shè)計過程中建立的性能邊界的測試。,回歸測試 在軟件集成測試的過程中,每當(dāng)一個模塊加入到系統(tǒng)時,軟件就發(fā)生變化,模塊之間的影響也可能有改變。 新的數(shù)據(jù)路徑被建立,也可能出現(xiàn)新的輸入/輸出操作。很有可能激活新的控制邏輯,所有這些改變的因素可能會導(dǎo)致原來工作正常的系統(tǒng)產(chǎn)生錯誤。 回歸測試是對已經(jīng)進行過測試的子集(模塊)重新測試,以確保新添加的模塊不會對系統(tǒng)產(chǎn)生無法預(yù)料的副作用。,確認(rèn)測試,有效 性 測試,軟件 配置 審查,管理 機構(gòu) 裁決,選擇測試人員,軟件計劃,用戶文檔,開發(fā)文檔,源程序文本,支持環(huán)境,交用戶 運行 維護,測試 報告,軟件 配置,構(gòu)造測試用例,實際運行測試,專家 鑒定 會,有效性測試 通過黑盒測試,證實軟件功能與 用戶需求是否一致. 軟件配置審查與驗收,確認(rèn) 測試,軟件配 置審查,主管部 門批準(zhǔn),集成的軟件,軟件需求,用戶文檔,設(shè)計文檔,源程序,測試文檔,交付的 軟 件,確認(rèn)的 軟 件,確認(rèn)的 配 置,確認(rèn)測試結(jié)果 測試完成后可能出現(xiàn)兩種情況: (1)測試與預(yù)期相符, 可接受。 (2)不相符,列出軟件缺陷表,與用戶協(xié)商解 決。,測試和測試 測試(Alpha) 在開發(fā)者的場所由用戶進行,在開發(fā) 者關(guān)注和控制的環(huán)境下進行。 測試(Beta) 最終用戶在自己的場所進行。,系統(tǒng)測試 軟件只是計算機系統(tǒng)的一個 元素,軟件最終要與其他系統(tǒng)元 素(如新硬件、信息等)相結(jié)合, 進行各種集成測試和確認(rèn)測試.,用于系統(tǒng)測試的測試類型: (1)恢復(fù)測試 (2)安全性測試 (3)強度測試 (4)性能測試,(1)恢復(fù)測試 以不同的方式強使軟件出現(xiàn)故障,檢測 軟件能否恰當(dāng)?shù)赝瓿苫謴?fù). 自動恢復(fù):檢測重新初始化、 檢測點設(shè)置、 數(shù)據(jù)恢復(fù)、 重新啟動等是否正確. 人工干預(yù)恢復(fù):檢測平均恢復(fù)時間是 否在允許范圍內(nèi).,(2)安全性測試 設(shè)計測試用例,突破軟件安全保護機構(gòu) 的安全保密措施,檢驗系統(tǒng)預(yù)防機制的 漏洞. (3)強度測試 設(shè)計測試用例, 檢驗系統(tǒng)能力最高能達到的實際限度, 讓系統(tǒng)處于資源的異常數(shù)量、異常頻率、異常批量的條件下測試系統(tǒng)的承受能力。一般比平常限度高5-10倍的限度做測試用例.,強度測試是一種敏感性測試技術(shù)。在某種情況下, 包含在程序有效數(shù)據(jù)邊界內(nèi)的非常小范圍的數(shù)據(jù)變動可能導(dǎo)致極端的, 甚至錯誤的處理, 會使系統(tǒng)性能嚴(yán)重下降。,(4)性能測試,設(shè)計測試用例,并記錄軟件運行性 能,與性能要求比較,檢驗是否達到性 能要求規(guī)格。,面向?qū)ο蟮能浖y試,測試目標(biāo):在現(xiàn)實的時間跨度內(nèi)應(yīng)用可管理 的工作量去發(fā)現(xiàn)最大可能數(shù)量的 錯誤,基本目標(biāo)不變,但由于OO程序的性質(zhì)改變了測試策略 和測試戰(zhàn)術(shù) 更多的設(shè)計模式復(fù)用是否將減輕OO系統(tǒng)的繁重測試? Binder,R.V.在“Object-Oriented Software Testing”中討論改問題: “每次復(fù)用是一個新的使用語境,并且重新測試是謹(jǐn)慎的.為了獲得面向?qū)ο笙到y(tǒng)的高可靠性,似乎可能需要更多而不是更少的測試.”,OOA和OOD的 模型測試,每個階段的所有面向?qū)ο竽P投紤?yīng)被測試。 OOA和OOD的模型不能被執(zhí)行,對它們不能進行傳統(tǒng)意義上的測試。,可通過技術(shù)復(fù)審檢查OOA和OOD的 模型的正確性和一致性。,擴大測試的視角,面向?qū)ο鬁y試策略,信息隱蔽對測試的影響 封裝和繼承對測試的影響,面向?qū)ο蟪绦虻奶攸c對軟件測試的影響:,單元和集成測試策略必須有很大的改變 測試用例的設(shè)計必須考慮OO軟件的特征,1. OO的單元測試,一個類可以包含一組不同的操作,而一個特定 的操作也可能存在于一組不同的類中。不再孤 立地測試單個操作(這是傳統(tǒng)單元測試的視角) OO軟件的類測試等價于傳統(tǒng)的單元測試. 傳統(tǒng)軟件的單元測試關(guān)注算法細節(jié)和模塊接口 間流動的數(shù)據(jù) OO軟件的類測試是由封裝在類中的操作和類的 狀態(tài)行為驅(qū)動的,單元概念的變化封裝的類或?qū)ο笞鳛樽钚?的可測試單位,2. OO的集成測試,OO軟件沒有層次的控制結(jié)構(gòu)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論