實(shí)用軟件工程第9章--軟件測(cè)試課件_第1頁
實(shí)用軟件工程第9章--軟件測(cè)試課件_第2頁
實(shí)用軟件工程第9章--軟件測(cè)試課件_第3頁
實(shí)用軟件工程第9章--軟件測(cè)試課件_第4頁
實(shí)用軟件工程第9章--軟件測(cè)試課件_第5頁
已閱讀5頁,還剩167頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、二、軟件測(cè)試背景軟件是人編的所以不完美實(shí)例:1994-1995,迪斯尼的獅子王系統(tǒng)不支持問題Intel的pentium處理器1994年浮點(diǎn)除法缺陷200年8月28日,1.13MHZ處理器一個(gè)可能導(dǎo)致運(yùn)行程序被掛起的執(zhí)行指令問題1999年12月3日,美國航天局火星極地登陸飛船失蹤1991年愛國者導(dǎo)彈防御系統(tǒng)系統(tǒng)時(shí)鐘錯(cuò)誤積累造成跟蹤系統(tǒng)失去精確度千年蟲,世界各地解決2000年錯(cuò)誤超過數(shù)億美元 軟件產(chǎn)品最大的成本是檢測(cè)軟 件錯(cuò)誤、修正軟件錯(cuò)誤的成本。 在整個(gè)軟件開發(fā)中,測(cè)試工作量 一般占30%40%,甚至50%。 在人命關(guān)天的軟件(如飛機(jī)控制、核反應(yīng)堆等)測(cè)試所花費(fèi)的時(shí)間往往是其它軟件工程活動(dòng)時(shí)間之

2、和的三到五倍軟件測(cè)試的認(rèn)識(shí)的發(fā)展人們對(duì)軟件測(cè)試認(rèn)識(shí)的五個(gè)階段:階段1 測(cè)試=調(diào)試階段2 測(cè)試是證明軟件正確階段3 測(cè)試是發(fā)現(xiàn)軟件中錯(cuò)誤階段4 測(cè)試是減小軟件不工作的風(fēng)險(xiǎn) (是度量軟件質(zhì)量要素的過程)階段5 測(cè)試是可產(chǎn)生低風(fēng)險(xiǎn)的軟件的 一種認(rèn)識(shí)上的訓(xùn)練軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的活動(dòng)過程。軟件開發(fā)過程必須伴有質(zhì)量保證活動(dòng)。軟件測(cè)試是軟件質(zhì)量保證的關(guān)鍵元素,代表了規(guī)約、設(shè)計(jì)和編碼的最終檢查。 9.1.1 測(cè)試目標(biāo)(1)完全預(yù)防錯(cuò)誤幾乎不可實(shí)現(xiàn)(2)盡可能多地發(fā)現(xiàn)錯(cuò)誤 9.1 軟件測(cè)試目標(biāo)和方法測(cè)試的目的與地位 G.J.Myers在中認(rèn)為:1.測(cè)試是為了尋找錯(cuò)誤而運(yùn)行程序的過程。2.一個(gè)好的測(cè)

3、試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。3.一個(gè)成功的測(cè)試是揭示了迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 E.W.Dijkstra 指出:“程序測(cè)試能證明錯(cuò)誤的存在,但不能證明錯(cuò)誤不存在.” 測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤,是為了證明程序有錯(cuò),而不是證明程序無錯(cuò). 把證明程序無錯(cuò)當(dāng)作測(cè)試目的不僅是不正確的, 完全做不到的,而且對(duì)做好測(cè)試沒有任何益處,甚至是十分有害的. 軟件測(cè)試要設(shè)法使軟件發(fā)生故障,暴露軟件錯(cuò)誤。 測(cè)試的“成功”與“失敗” 能夠發(fā)現(xiàn)錯(cuò)誤的測(cè)試是成功的測(cè)試,否則是失敗的測(cè)試。 9.1.2 測(cè)試方法軟件測(cè)試的策略和方法靜態(tài)測(cè)試方法動(dòng)態(tài)測(cè)試方法人工測(cè)試方法計(jì)算機(jī)輔助靜態(tài)分析方法白盒測(cè)

4、試方法黑盒測(cè)試方法靜態(tài)和動(dòng)態(tài)測(cè)試汽車的檢查過程:看車漆打開前蓋檢查發(fā)動(dòng)汽車聽聽發(fā)動(dòng)機(jī)聲音上路行使靜態(tài)測(cè)試動(dòng)態(tài)測(cè)試有時(shí)候在測(cè)試時(shí)使用靜態(tài)測(cè)試方法更為有效。靜態(tài)測(cè)試方法有計(jì)算機(jī)輔助靜態(tài)分析和人工測(cè)試等方法,其中,對(duì)源程序進(jìn)行態(tài)分析的方法有生成各類引用表、靜態(tài)錯(cuò)誤分析、類型和單位分析、引用分析、表達(dá)式分析和接口分析等;人工測(cè)試的方法有桌前檢查、代碼會(huì)審和走查等,檢查變量、標(biāo)號(hào)的交叉引用,檢查子程序、宏、函數(shù)、常量、標(biāo)準(zhǔn)和風(fēng)格等,可以由編寫者自己非正式檢查(稱為桌前檢查),也可以由小組正式審查(稱為代碼會(huì)審)或非正式檢查(稱為走查),這里不做更詳細(xì)介紹;動(dòng)態(tài)測(cè)試方法有白盒測(cè)試和黑盒測(cè)試等方法。其基本步

5、驟為: (1)選取定義域有效值,或定義域 外無效值.(2)對(duì)已選取值決定預(yù)期的結(jié)果(3)用選取值執(zhí)行程序(4)執(zhí)行結(jié)果 與(2)結(jié)果相比, 不吻和程序有錯(cuò).針對(duì)專門環(huán)境和應(yīng)用的測(cè)試(1)GUI測(cè)試常見GUI測(cè)試指南:對(duì)于窗口對(duì)于菜單和鼠標(biāo)操作對(duì)于數(shù)據(jù)項(xiàng)(2)C/S體系結(jié)構(gòu)的測(cè)試 整體C/S測(cè)試策略(三個(gè)不同層次)客戶端應(yīng)以“分離的”模式被測(cè)試 (不考慮服務(wù)器和底層網(wǎng)絡(luò)的運(yùn)行)客戶端軟件和關(guān)聯(lián)的服務(wù)器端應(yīng)用被一起測(cè)試(網(wǎng)絡(luò)運(yùn)行不被明顯考慮)完整的C/S體系結(jié)構(gòu)(包括網(wǎng)絡(luò)運(yùn)行和性能)被測(cè)試 C/S常用測(cè)試方法客戶端應(yīng)用功能測(cè)試服務(wù)器測(cè)試(協(xié)調(diào)和數(shù)據(jù)管理功能、性能)數(shù)據(jù)庫測(cè)試事務(wù)測(cè)試網(wǎng)絡(luò)通信測(cè)試(3

6、)實(shí)時(shí)系統(tǒng)測(cè)試可采用以下四步策略:(1) 任務(wù)測(cè)試(2) 行為測(cè)試(3) 任務(wù)間測(cè)試(4) 系統(tǒng)測(cè)試1) 任務(wù)測(cè)試 (task testing) 對(duì)每一個(gè)任務(wù)進(jìn)行單獨(dú)測(cè)試(白盒、黑盒測(cè)試),發(fā)現(xiàn)邏輯和功能上錯(cuò)誤,不能發(fā)現(xiàn)定時(shí)上和行為上錯(cuò)誤 。2)行為測(cè)試(behavioral testing) 用CASE工具創(chuàng)建應(yīng)用系統(tǒng)模型,模擬實(shí)時(shí)系統(tǒng)行為。 按類測(cè)試各種事件(如中斷、控制信號(hào)、數(shù)據(jù))。 測(cè)試過的事件以隨機(jī)次序、隨機(jī)頻率送給系統(tǒng),檢查軟件行為方面的錯(cuò)誤.3)任務(wù)間測(cè)試(intertask testing) 檢查與時(shí)間有關(guān)錯(cuò)誤。 如用不同數(shù)據(jù)速率、處理負(fù)載 測(cè)試相互通信的異步任務(wù)。 通過消息隊(duì)

7、列或數(shù)據(jù)存儲(chǔ)測(cè)試 任務(wù)間的通信來找出數(shù)據(jù)存儲(chǔ)區(qū)錯(cuò) 誤的范圍。4) 系統(tǒng)測(cè)試 (system testing) 軟件、硬件組裝后,找出軟、硬件接口錯(cuò)誤。黑盒法測(cè)試 又稱:功能測(cè)試 數(shù)據(jù)驅(qū)動(dòng)測(cè)試 基于規(guī)格說明書的測(cè)試動(dòng)態(tài)黑盒測(cè)試 閉著眼睛測(cè)試軟件軟件輸入 不深入代碼細(xì)節(jié)的測(cè)試方法稱為動(dòng)態(tài)黑盒測(cè)試。軟件測(cè)試員充當(dāng)客戶來使用它。輸出白盒法測(cè)試 又稱:開盒測(cè)試 結(jié)構(gòu)測(cè)試 玻璃盒測(cè)試 基于覆蓋的測(cè)試. 根據(jù)被測(cè)程序的邏輯結(jié)構(gòu)設(shè)計(jì)測(cè)試用例; 力求提高測(cè)試覆蓋率;動(dòng)態(tài)白盒測(cè)試 帶上X光眼鏡測(cè)試軟件?3581322.293419985680302829734315250*(1+0.015)*(1+0.015)3

8、60-1)/0.015250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一個(gè)盒子包含一臺(tái)計(jì)算機(jī),而另一個(gè)盒子是人用紙筆計(jì)算,就會(huì)選擇不同的測(cè)試用例了解軟件的運(yùn)作方式會(huì)影響測(cè)試手段黑盒測(cè)試與白盒測(cè)試比較 黑盒測(cè)試是從用戶觀點(diǎn),按規(guī)格說明書要求的輸入數(shù)據(jù)與輸出數(shù)據(jù)的對(duì)應(yīng)關(guān)系設(shè)計(jì)測(cè)試用例,是根據(jù)程序外部特征進(jìn)行測(cè)試。 白盒測(cè)試是根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)進(jìn)行測(cè)試。 黑盒測(cè)試與白盒測(cè)試優(yōu)缺點(diǎn)比較 黑盒測(cè)試 白盒測(cè)試 優(yōu)點(diǎn)缺點(diǎn)性質(zhì)適用于各階段測(cè)試從產(chǎn)品功能角度測(cè)試容易入手生成測(cè)試數(shù) 據(jù)可構(gòu)成測(cè)試數(shù)據(jù)使特定程 序部分得到測(cè)試有一定的充分性度量手段可或較多工具支持某些代碼得不到測(cè)試如

9、果規(guī)格說明有誤, 則無法發(fā)現(xiàn)不易進(jìn)行充分性測(cè)試不易生成測(cè)試數(shù)據(jù)(通常)無法對(duì)未實(shí)現(xiàn)規(guī)格說明的 部分進(jìn)行測(cè)試工作量大,通常只用于單 元測(cè)試,有應(yīng)用局限是一種確認(rèn)技術(shù),回答“我們?cè)跇?gòu)造一個(gè)正確 的系統(tǒng)嗎?”是一種驗(yàn)證技術(shù),回答“我們?cè)谡_ 地構(gòu)造一個(gè)系 統(tǒng)嗎?” 不論黑盒還是白盒測(cè)試都不能進(jìn)行窮盡測(cè)試, 所以軟件測(cè)試不可能發(fā)現(xiàn)程序中存在的所有錯(cuò)誤, 因此需精心設(shè)計(jì)測(cè)試方案, 力爭盡可能少的次數(shù),測(cè)出盡可能多的錯(cuò)誤.程序測(cè)試舉例例:程序 Triangle, 輸入三個(gè)整 數(shù),表示一個(gè)三角形的三個(gè)邊 長,該程序產(chǎn)生一個(gè)結(jié)果,指 出該三角形是等邊三角形、等 腰三角形還是不等邊三角形。判斷三角型的測(cè)試用例設(shè)

10、計(jì): 輸入數(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 等9.1.3 測(cè)試原則(1)所有的測(cè)試都應(yīng)追溯到用戶需求 最嚴(yán)重的錯(cuò)誤(從用戶角度)是那些導(dǎo)致軟件無法滿足需求的錯(cuò)誤。 程序中的問題根源可能在開發(fā) 前期的各階段解決、糾正錯(cuò)誤也必須追溯到前期工作。 (2)概要設(shè)計(jì)時(shí)應(yīng)完成測(cè)試計(jì)劃, 詳細(xì)的測(cè)試用例定義可在設(shè)計(jì) 模型確定后開始,所有測(cè)試可 在任何代碼被產(chǎn)生之前進(jìn)行計(jì) 劃和設(shè)計(jì)。 軟件測(cè)試不等于程序測(cè)試 軟件測(cè)試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間; 據(jù)美國一家公司統(tǒng)計(jì),查出的軟件錯(cuò)誤中,

11、屬于需求分析和軟件設(shè)計(jì)的錯(cuò)誤約占 64%,屬于程序編寫的錯(cuò)誤僅占 36%。程序編寫的許多錯(cuò)誤是“先天的”。(3)pareto原則:測(cè)試發(fā)現(xiàn)的錯(cuò)誤中80%很可能起源于20%的模塊中。應(yīng)孤立這些疑點(diǎn)模塊重點(diǎn)測(cè)試。(4)窮舉測(cè)試是不可能的。(5)應(yīng)由獨(dú)立的第三方來構(gòu)造測(cè)試。 (開發(fā)和測(cè)試隊(duì)伍分別建立)(6)測(cè)試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸 出結(jié)果兩部分組成.(7)兼顧合理的輸入和不合理的輸入數(shù)據(jù)(8)程序修改后要回歸測(cè)試(9)應(yīng)長期保留測(cè)試用例,直至系統(tǒng)廢棄。軟件測(cè)試是有風(fēng)險(xiǎn)的行為數(shù)量遺漏軟件缺陷數(shù)目測(cè)試費(fèi)用測(cè)試中測(cè)試后軟件測(cè)試工作量每一個(gè)軟件項(xiàng)目都有一個(gè)最優(yōu)的測(cè)量量最優(yōu)測(cè)量量 “好”測(cè)試的特征: 發(fā)

12、現(xiàn)錯(cuò)誤的可能性高不冗余在目的相似的測(cè)試中,應(yīng)使用最可能找到錯(cuò)誤的測(cè)試每一個(gè)測(cè)試應(yīng)獨(dú)立執(zhí)行所以,軟件測(cè)試應(yīng)該是有計(jì)劃的活動(dòng),軟件測(cè)試輸入、輸出和中間信息流軟件配置測(cè)試測(cè)試配置測(cè)試工具結(jié)果分析排錯(cuò)可靠性 分析測(cè)試結(jié)果錯(cuò)誤預(yù)期結(jié)果出錯(cuò)率 改正的軟件預(yù)測(cè)的可靠性需求規(guī)格說明書軟件設(shè)計(jì)說明書 被測(cè)源程序 測(cè)試計(jì)劃 測(cè)試用例(測(cè)試數(shù)據(jù))測(cè)試驅(qū)動(dòng)程序其中,測(cè)試工具包括靜態(tài)分析工具、動(dòng)態(tài)測(cè)試工具、測(cè)試數(shù)據(jù)自動(dòng)生成工具和集成化測(cè)試環(huán)境等, 9.2 測(cè)試步驟單元測(cè)試: 檢驗(yàn)每個(gè)模塊能否單獨(dú)工作.集成測(cè)試: 檢驗(yàn)概要設(shè)計(jì)中模塊接口設(shè) 計(jì)問題(可分子系統(tǒng)和系統(tǒng))確認(rèn)測(cè)試: 以需求規(guī)格說明書為檢驗(yàn)尺 度(可分內(nèi)部確認(rèn)和

13、驗(yàn)收)系統(tǒng)測(cè)試: 綜合檢驗(yàn)軟件與整個(gè)計(jì)算機(jī) 系統(tǒng) . 廣義的測(cè)試可視為分析、設(shè)計(jì)、編碼三個(gè)階段的最終復(fù)審,以保證軟件質(zhì)量.測(cè)試與開發(fā)前期工作的關(guān)系決定軟件與系統(tǒng)的配合關(guān)系需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì) 編 碼單元測(cè)試集成測(cè)試確認(rèn)測(cè)試系統(tǒng)測(cè)試設(shè)計(jì)信息軟件需求其它系統(tǒng)元素軟件測(cè)試的過程被測(cè)模塊單元測(cè)試設(shè)計(jì)信息集成測(cè)試被測(cè)模塊單元測(cè)試被測(cè)模塊單元測(cè)試測(cè)試過的模塊確認(rèn)測(cè)試平行運(yùn)行軟件需求其它系統(tǒng)元素裝配好的軟件 確認(rèn)的軟件可運(yùn)行的軟件軟件測(cè)試策略單元測(cè)試UCDRSIVST集成測(cè)試確認(rèn)測(cè)試平行運(yùn)行系統(tǒng)工程軟件需求分析軟件設(shè)計(jì)代碼編寫9.2.1 單元(模塊)測(cè)試單元測(cè)試著重對(duì)軟件設(shè)計(jì)的最小單元(軟件構(gòu)件或模塊)

14、進(jìn)行驗(yàn)證。這里將構(gòu)件或模塊統(tǒng)一稱為模塊。單元測(cè)試根據(jù)設(shè)計(jì)描述,對(duì)重要的控制路徑進(jìn)行測(cè)試,以發(fā)現(xiàn)模塊內(nèi)部的錯(cuò)誤,主要揭露編碼階段產(chǎn)生的錯(cuò)誤。單元測(cè)試通常采用白盒測(cè)試法,也可多個(gè)模塊并行進(jìn)行測(cè)試。1.單元測(cè)試的內(nèi)容主要對(duì)模塊的五個(gè)基本特性進(jìn)行評(píng)價(jià)模塊錯(cuò)誤處理模塊接口局部數(shù)據(jù)結(jié)構(gòu) 重要的執(zhí)行路徑邊界條件常見錯(cuò)誤類型 接口錯(cuò)誤I/O錯(cuò)誤數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤算法錯(cuò)誤比較及控制邏輯錯(cuò)誤錯(cuò)誤處理錯(cuò)誤模塊測(cè)試基本原則 至少一次測(cè)試所有語句測(cè)試所有可能的執(zhí)行或邏輯路徑的組合測(cè)試每個(gè)模塊的所有入口和出口2. 單元測(cè)試的環(huán)境 單元測(cè)試一般為編碼步驟的附屬部分.模塊不是獨(dú)立的程序,自己不能運(yùn)行,要靠其它部分來調(diào)用和驅(qū)動(dòng),要為

15、每個(gè)單元測(cè)試開發(fā)兩個(gè)軟件:(1)驅(qū)動(dòng)模塊(驅(qū)動(dòng)程序):相當(dāng)于主模塊(2)樁模塊(測(cè)試存根、連接程序) : 代替所測(cè)模塊調(diào)用的子模塊單元測(cè)試的測(cè)試環(huán)境舉例:BACDE待測(cè)試模塊單元測(cè)試的測(cè)試環(huán)境舉例:被測(cè)模塊 B 驅(qū)動(dòng)模塊(模擬模塊A)樁模塊(測(cè)試存根)(模擬模塊E)測(cè)試用例測(cè)試結(jié)果 許多模塊不能用簡單的軟件進(jìn)行充分的單元測(cè)試, 此時(shí), 完全的測(cè)試可放到集成測(cè)試階段再進(jìn)行.單元測(cè)試的測(cè)試環(huán)境舉例: 實(shí)際軟件華氏到懾氏轉(zhuǎn)換模塊溫度數(shù)據(jù)實(shí)際配置測(cè)試用例數(shù)據(jù)結(jié)果 測(cè)試驅(qū)動(dòng)軟件華氏到懾氏轉(zhuǎn)換模塊結(jié)果測(cè)試驅(qū)動(dòng)際配置單元測(cè)試的測(cè)試環(huán)境舉例 溫度顯示模塊溫度接口模塊實(shí)際配置測(cè)試驅(qū)動(dòng)際配置 溫度顯示模塊程序員編

16、寫的樁模塊(測(cè)試存根)溫度值的測(cè)試文件9.2.2 集成測(cè)試(組裝測(cè)試)集成測(cè)試又稱組裝測(cè)試或聯(lián)合測(cè)試。經(jīng)單元測(cè)試后,每個(gè)模塊都能獨(dú)立工作,但把它們放在一起往往不能正常工作,需要做集成測(cè)試。集成測(cè)試針對(duì)集成的軟件系統(tǒng),主要揭露設(shè)計(jì)階段產(chǎn)生的錯(cuò)誤,通常采用黑盒測(cè)試技術(shù)。 集成測(cè)試需考慮的問題:數(shù)據(jù)穿越接口可能丟失.一模塊可能破壞另一模塊功能.子功能組裝可能未產(chǎn)生所要求的 主功能.全程數(shù)據(jù)結(jié)構(gòu)可能出問題.誤差累積問題.1.集成測(cè)試策略通常采用黑盒測(cè)試技術(shù)實(shí)施策略:非漸增式測(cè)試漸增式測(cè)試 深度優(yōu)先廣度優(yōu)先自頂向下結(jié)合自底向上結(jié)合(1)非漸增式集成方式 一次就把所有通過了單元測(cè)試的模塊組合在一起進(jìn)行全程

17、序的測(cè)試.缺點(diǎn):發(fā)現(xiàn)錯(cuò)誤難以診斷定位. 又稱“莽撞測(cè)試” .(2) 漸增式集成方式 從一個(gè)模塊開始,測(cè)一次添加一個(gè)模塊,邊組裝邊測(cè)試,以發(fā)現(xiàn)與接口相聯(lián)系的問題。自頂向下結(jié)合方式舉例:ADBE模塊測(cè)試結(jié)合順序CF深度優(yōu)先:A、B、E、C、D、F廣度優(yōu)先:A、B、C、D、E、F自頂向下結(jié)合方式舉例:(深度優(yōu)先)A測(cè)試 AS2S1S3A加入BS2BS3S4A加入ES2BS3EA加入CCBS3E加入DCBDE加入FCBDEAAFS5自底向上結(jié)合方式舉例:ACBDFEEd1Cd3Fd4Bd2EDd5F自底向上結(jié)合方式舉例:McD1MaMbD2D3簇1簇2簇3 自頂向下 自底向上優(yōu)點(diǎn) 可在測(cè)試早期 設(shè)計(jì)測(cè)

18、試用例容易 實(shí)現(xiàn)并驗(yàn)證系 統(tǒng)主要功能 不需驅(qū)動(dòng)模塊 不需樁模塊 缺點(diǎn) 需樁模塊 只有到最后程序才 能作為一個(gè)整體(3)混合集成方式一般對(duì)軟件結(jié)構(gòu)的上層使用自頂向下結(jié)合的方法;對(duì)下層使用自底向上結(jié)合的方法;9.2.3 確認(rèn)測(cè)試(Validation Testing) 確認(rèn)測(cè)試是根據(jù)軟件需求規(guī)約對(duì)集成的軟件進(jìn)行確認(rèn)。確認(rèn)測(cè)試標(biāo)準(zhǔn) 確認(rèn)測(cè)試以軟件需求規(guī)約為依據(jù),以發(fā)現(xiàn)軟件與需求不一致的錯(cuò)誤。主要檢查:軟件是否實(shí)現(xiàn)了規(guī)約規(guī)定的全部功能要求; 文檔資料是否完整、正確、合理;其他的需求,如可移植性、可維護(hù)性、兼容性、錯(cuò)誤恢復(fù)能力等是否滿足。軟件配置評(píng)審軟件配置評(píng)審也稱軟件審計(jì)(audit),其目的是保證軟

19、件配置的所有成分都齊全,各方面的質(zhì)量都符合要求,具有維護(hù)階段必需的細(xì)節(jié),而且已經(jīng)編排好分類目錄。軟件配置主要包括計(jì)算機(jī)程序(源代碼和可執(zhí)行程序),針對(duì)開發(fā)者和用戶的各類文檔,包含在程序內(nèi)部或程序外部的數(shù)據(jù)。測(cè)試和測(cè)試如果軟件是為一個(gè)客戶開發(fā)的,那么,最后由客戶進(jìn)行驗(yàn)收測(cè)試(acceptance test),以使客戶確認(rèn)該軟件是他所需要的。如果軟件是給許多客戶使用的(如市場上銷售的各種軟件),那么讓每個(gè)客戶做驗(yàn)收測(cè)試是不現(xiàn)實(shí)的。大多數(shù)軟件廠商都使用一種稱為測(cè)試和測(cè)試的過程,來發(fā)現(xiàn)那些似乎只有最終用戶才能發(fā)現(xiàn)的錯(cuò)誤。測(cè)試是由一個(gè)用戶在開發(fā)者的場所進(jìn)行的,軟件在開發(fā)者對(duì)用戶的“指導(dǎo)下”進(jìn)行測(cè)試。經(jīng)測(cè)

20、試后的軟件稱為版軟件。測(cè)試是由軟件的最終用戶在一個(gè)或多個(gè)用戶場所進(jìn)行的,與測(cè)試不同,開發(fā)者通常不在測(cè)試現(xiàn)場,因此,測(cè)試是軟件在一個(gè)開發(fā)者不能控制的環(huán)境中的“活的”應(yīng)用,用戶記錄所有在測(cè)試中遇到的(真正的或想象的)問題,并定期把這些問題報(bào)告給開發(fā)者,在接到測(cè)試的問題報(bào)告后,開發(fā)者對(duì)軟件進(jìn)行最后的修改,然后著手準(zhǔn)備向所有的用戶發(fā)布最終的軟件產(chǎn)品。 確認(rèn)測(cè)試的結(jié)果可分為兩類:滿足需求規(guī)約要求的功能或性能特性,用戶可以接受。 發(fā)現(xiàn)與需求規(guī)約有偏差,此時(shí)需列出問題清單。9.2.4 系統(tǒng)測(cè)試(System Testing)系統(tǒng)測(cè)試是對(duì)整個(gè)基于計(jì)算機(jī)的系統(tǒng)進(jìn)行的一系列測(cè)試。系統(tǒng)測(cè)試的種類很多,每種測(cè)試都有不

21、同的目的,它們從不同的角度測(cè)試計(jì)算機(jī)系統(tǒng)是否被正常地集成,并完成相應(yīng)的功能。常用的系統(tǒng)測(cè)試包括:恢復(fù)測(cè)試(recovery testing)安全測(cè)試(security testing)壓力測(cè)試(stress testing)性能測(cè)試(performance testing)1.恢復(fù)測(cè)試(recovery testing)恢復(fù)測(cè)試是通過各種手段,強(qiáng)制軟件發(fā)生故障,然后來驗(yàn)證系統(tǒng)能否在指定的時(shí)間間隔內(nèi)恢復(fù)正常,包括修正錯(cuò)誤并重新啟動(dòng)系統(tǒng)。如果恢復(fù)是由系統(tǒng)自身來完成的,那么,需驗(yàn)證重新初始化、檢查點(diǎn)機(jī)制、數(shù)據(jù)恢復(fù)和重啟動(dòng)等的正確性。如果恢復(fù)需要人工干預(yù),那么要估算平均修復(fù)時(shí)間MTTR(mean ti

22、me to repair)是否在用戶可以接受的范圍內(nèi)。2.安全測(cè)試(security testing)安全測(cè)試用來驗(yàn)證集成在系統(tǒng)中的保護(hù)機(jī)制能否實(shí)際保護(hù)系統(tǒng)不受非法侵入。在安全測(cè)試過程中,測(cè)試者扮演一個(gè)試圖攻擊系統(tǒng)的角色,采用各種方式攻擊系統(tǒng)。例如,截取或碼譯密碼;借助特殊軟件攻擊系統(tǒng);“制服”系統(tǒng),使他人無法訪問;故意導(dǎo)致系統(tǒng)失效,企圖在系統(tǒng)恢復(fù)之機(jī)侵入系統(tǒng);通過瀏覽非保密數(shù)據(jù),從中找出進(jìn)入系統(tǒng)的鑰匙等等。一般來說,只要有足夠的時(shí)間和資源,好的完全測(cè)試一定能最終侵入系統(tǒng)。系統(tǒng)設(shè)計(jì)者的任務(wù)是把系統(tǒng)設(shè)計(jì)成:攻破系統(tǒng)所付出的代價(jià)大于攻破系統(tǒng)后得到信息的價(jià)值。3.壓力測(cè)試(stress testin

23、g)壓力測(cè)試也稱強(qiáng)度測(cè)試,它是在一種需要非正常數(shù)量、頻率或容量的方式下執(zhí)行系統(tǒng),其目的是檢查系統(tǒng)對(duì)非正常情況的承受程度。例如:當(dāng)系統(tǒng)的中斷頻率是每秒1或2個(gè)時(shí),執(zhí)行每秒10個(gè)中斷的測(cè)試用例將輸入數(shù)據(jù)的數(shù)量提高一個(gè)數(shù)量級(jí)來測(cè)試輸入功能如何響應(yīng)執(zhí)行需要最大內(nèi)存或其它資源的測(cè)試用例執(zhí)行可能導(dǎo)致大量磁盤駐留數(shù)據(jù)的測(cè)試用例4.性能測(cè)試(performance testing)性能測(cè)試用來測(cè)試軟件在集成的系統(tǒng)中的運(yùn)行性能。它對(duì)實(shí)時(shí)系統(tǒng)和嵌入式系統(tǒng)尤為重要。性能測(cè)試可以發(fā)生在測(cè)試過程的所有步驟中單元測(cè)試時(shí),主要測(cè)試一個(gè)獨(dú)立模塊的性能,如算法的執(zhí)行速度。軟件集成后,進(jìn)行軟件整體的性能測(cè)試。計(jì)算機(jī)系統(tǒng)集成后,進(jìn)

24、行整個(gè)計(jì)算機(jī)系統(tǒng)的性能測(cè)試。性能測(cè)試常常需要與壓力測(cè)試結(jié)合起來進(jìn)行,而且常常需要一些硬件和軟件測(cè)試設(shè)備,以監(jiān)測(cè)系統(tǒng)的運(yùn)行情況。有的比較重要的系統(tǒng)還需要平行運(yùn)行。 平行運(yùn)行是指投入運(yùn)行后,與舊系統(tǒng)同時(shí)使用的一種測(cè)試。 是系統(tǒng)測(cè)試的一種。一般持續(xù)幾個(gè)月到一年。9.3 測(cè)試用例設(shè)計(jì)9.3.1 黑盒法 黑盒測(cè)試是依據(jù)軟件的需求規(guī)約,檢查程序的功能是否符合需求規(guī)約的要求。 主要的黑盒測(cè)試方法有等價(jià)類劃分、邊界值分析、錯(cuò)誤猜測(cè)、比較測(cè)試和因果圖等方法。1.等價(jià)劃分法 把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個(gè)等價(jià)的子集(稱為等價(jià)類), 使得每個(gè)子集中的一個(gè)典型值在測(cè)試中的作用與這一子集中所有其它值

25、的作用相同. 可從每個(gè)子集中選取一組數(shù)據(jù)來測(cè)試程序(1)等價(jià)類 等價(jià)類是指輸入或輸出域的某個(gè)子集,該子集中的每個(gè)輸入或輸出數(shù)據(jù)對(duì)揭露軟件中的錯(cuò)誤都是等效的,測(cè)試等價(jià)類的某個(gè)代表值就等價(jià)于測(cè)試這一類其他值。也就是說,如果該子集中的某個(gè)輸入或輸出數(shù)據(jù)能檢測(cè)出某個(gè)錯(cuò)誤,那么該子集中的其他輸入或輸出數(shù)據(jù)也能檢測(cè)出同樣的錯(cuò)誤,反之,如果該子集中的某個(gè)輸入或輸出數(shù)據(jù)不能檢測(cè)出錯(cuò)誤,那么該子集中的其他輸入或輸出數(shù)據(jù)也不能檢測(cè)出錯(cuò)誤。 有效等價(jià)類(合理等價(jià)類) 有效輸入或輸出數(shù)據(jù)即符合規(guī)格說明要求的合理的輸入或輸出數(shù)據(jù)的等價(jià)類,主要用來檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中的功能。 無效等價(jià)類(不合理等價(jià)類) 無效輸入

26、或輸出數(shù)據(jù)即不符合規(guī)格說明要求的不合理或非法的輸入或輸出數(shù)據(jù)的等價(jià)類,主要用來檢驗(yàn)程序是否做了規(guī)格說明以外的事。 (2)劃分等價(jià)類的規(guī)則劃分等價(jià)類的原則:覆蓋不相交代表性具體規(guī)則 1)如果輸入條件規(guī)定了取值范圍, 可定義一個(gè)有效等價(jià)類和兩個(gè)無 效等價(jià)類。例 :輸入值是學(xué)生成績,范圍是01000 100 有效等價(jià)類1成績100無效等價(jià)類 成績100 無效等價(jià)類 成績0具體規(guī)則: 2)如果輸入條件代表集合的某 個(gè)元素,則可定義一個(gè)有效 等價(jià)類和一個(gè)無效等價(jià)類。 例:規(guī)定輸入的考試成績?yōu)閮?yōu)、良、中、及格、不及格,則可確定一個(gè)有效等價(jià)類優(yōu)、良、中、及格、不及格和一個(gè)無效等價(jià)類(所有不是這5個(gè)成績之一的

27、)。劃分等價(jià)類的規(guī)則: 3)如規(guī)定了輸入數(shù)據(jù)的一組值,且 程序?qū)Σ煌斎胫底霾煌幚恚?則每個(gè)允許的輸入值是一個(gè)有 效等價(jià)類,并有一個(gè)無效等價(jià)類 (所有不允許的輸入值的集合)。例:輸入條件說明學(xué)歷可為:專科、本科、 碩士、博士四種之一,則分別取這四 種這四個(gè)值作為四個(gè)有效等價(jià)類,另 外把四種學(xué)歷之外的任何學(xué)歷作為無 效等價(jià)類劃分等價(jià)類的規(guī)則:4)如果輸入條件規(guī)定了值的個(gè)數(shù),則可以確定一個(gè)有效等價(jià)類(輸入值的個(gè)數(shù)等于規(guī)定的個(gè)數(shù))和兩個(gè)無效等價(jià)類(輸入值的個(gè)數(shù)小于規(guī)定的個(gè)數(shù)和大于規(guī)定的個(gè)數(shù))。 例:規(guī)定輸入構(gòu)成三角形的3條邊,則有效等價(jià)類是“輸入邊數(shù) = 3”,無效等價(jià)類是“輸入邊數(shù) 3”和“輸入

28、邊數(shù) 3”。劃分等價(jià)類的規(guī)則: 5)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī) 則,可確定一個(gè)有效等價(jià)類(符合 規(guī)則)和若干個(gè)無效等價(jià)類(從不 同角度違反規(guī)則)。 例:在Pascal語言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母開頭的串”。那么有效等價(jià)類是“以字母開頭的串”,而無效等價(jià)類有“以數(shù)字開頭的串”、“以標(biāo)點(diǎn)符號(hào)開頭的串”等。 6)如已劃分的等價(jià)類各元素在程序中 的處理方式不同,則應(yīng)將此等價(jià) 類進(jìn)一步劃分成更小的等價(jià)類。 以上只是列舉了一些典型規(guī)則,實(shí)際情況往往是千變?nèi)f化的,在遇到具體問題時(shí),可參照上述規(guī)則的思想來劃分等價(jià)類。(3)設(shè)計(jì)測(cè)試用例 步驟: 1)形成等價(jià)類表,每一等價(jià)類規(guī)定 一個(gè)唯一的編號(hào); 2)設(shè)

29、計(jì)一測(cè)試用例,使其盡可能多 地覆蓋尚未覆蓋的有效等價(jià)類, 重復(fù)這一步驟,直到所有有效等 價(jià)類均被測(cè)試用例所覆蓋; 3)設(shè)計(jì)一新測(cè)試用例,使其只覆蓋 一個(gè)無效等價(jià)類,重復(fù)這一步驟 直到所有無效等價(jià)類均被覆蓋;例:某報(bào)表處理系統(tǒng)要求用戶輸入處理 報(bào)表的日期,日期限制在2001年1 月至2005年12月,即系統(tǒng)只能對(duì)該 段期間內(nèi)的報(bào)表進(jìn)行處理,如日期 不在此范圍內(nèi),則顯示輸入錯(cuò)誤信 息。 系統(tǒng)日期規(guī)定由年、月的6位數(shù)字 字符組成,前四位代表年,后兩位 代表月。 如何用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例, 來測(cè)試程序的日期檢查功能?第一步:等價(jià)類劃分,并列表和編號(hào)。 輸入等價(jià)類 有效等價(jià)類 無效等價(jià)類 報(bào)表日期

30、的類型及長度6位數(shù)字字符(1)有非數(shù)字字符 (4)少于6個(gè)數(shù)字字符 (5)多于6個(gè)數(shù)字字符 (6)年份范圍在20012005之間 (2)小于2001 (7)大于2005 (8)月份范圍在112之間(3)“報(bào)表日期”輸入條件的等價(jià)類表小于1 (9)大于12 (10)第二步:為有效等價(jià)類設(shè)計(jì)測(cè)試用例 對(duì)表中編號(hào)為1,2,3的3個(gè)有效等價(jià)類 用一個(gè)測(cè)試用例覆蓋: 測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍200105等價(jià)類(1)(2)(3)輸入有效第三步:為每一個(gè)無效等價(jià)類設(shè)至少 計(jì)一個(gè)測(cè)試用例 測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋范圍001MAY等價(jià)類(4)輸入無效20015等價(jià)類(5)輸入無效2001005等價(jià)類(6)輸

31、入無效200005等價(jià)類(7)輸入無效200805等價(jià)類(8)輸入無效200100等價(jià)類(9)輸入無效200113等價(jià)類(10)輸入無效不能出現(xiàn)相同的測(cè)試用例本例的10個(gè)等價(jià)類至少需要8個(gè)測(cè)試用例例:對(duì)招干考試系統(tǒng)“輸入學(xué)生成績” 子模塊設(shè)計(jì)測(cè)試用例 招干考試分三個(gè)專業(yè),準(zhǔn)考證號(hào)第一位 為專業(yè)代號(hào),如: 1-行政專業(yè), 2-法律專業(yè), 3-財(cái)經(jīng)專業(yè). 行政專業(yè)準(zhǔn)考證號(hào)碼為:110001111215法律專業(yè)準(zhǔn)考證號(hào)碼為:210001212006財(cái)經(jīng)專業(yè)準(zhǔn)考證號(hào)碼為:310001314015例:準(zhǔn)考證號(hào)碼的等價(jià)類劃分 有效等價(jià)類: (1) 110001 111215 (2) 210001 2120

32、06 (3) 310001 314015 無效等價(jià)類: (4) - 110000 (5) 111216 210000 (6) 212007 31000 (7) 314016 + 例:計(jì)算給定月份中天數(shù)的方法接口(java):Class MyGregorianCalender public static in getNumDaysInMonth(int month,int year)getNumDaysInMonth( )方法有兩個(gè)參數(shù), 月和年,年份的有效輸入是從0到maxInt.有效等價(jià)類和用來測(cè)試getNumDaysInMonth()方法所選的有效輸入 有效等價(jià)類一個(gè)月有31天,非閏年19

33、017(七月)一個(gè)月有31天, 閏年19047(七月)一個(gè)月有30天,非閏年19016(六月)一個(gè)月有30天, 閏年19046(六月)一個(gè)月為28或29天,非閏年19012(二月)月份輸入值年份輸入值一個(gè)月為28或29天, 閏年2(二月)1904用來測(cè)試getNumDaysInMonth()方法的附加邊界值等價(jià)類可以被400整除的閏年20002(二月)可以被100整除的非閏年19002(二月)非正數(shù)無效月份12910正數(shù)無效月份131513月份輸入值年份輸入值 2.邊界值分析法 等價(jià)類劃分即把輸入空間分解成一系列子域,軟件在一個(gè)子域內(nèi)的行為應(yīng)是等價(jià)的。 軟件錯(cuò)誤分為兩類:計(jì)算錯(cuò)誤 域錯(cuò)誤針對(duì)計(jì)

34、算錯(cuò)誤的測(cè)試方法針對(duì)域錯(cuò)誤的測(cè)試方法:測(cè)試域邊界 劃定的正確性邊界值分析法與等價(jià)類劃分法區(qū)別(1)邊界值分析不是從某等價(jià)類中 隨便挑一個(gè)作為代表,而是使 這個(gè)等價(jià)類的每個(gè)邊界都要作 為測(cè)試條件。(2)邊界值分析不僅考慮輸入條件, 還要考慮輸出空間產(chǎn)生的測(cè)試 情況被測(cè)試子 域測(cè)試內(nèi)點(diǎn)測(cè)試外點(diǎn)軟件邊界與懸崖很類似邊界條件類型 如果軟件測(cè)試問題包含確定的邊界,那么數(shù)據(jù)類型可能是:數(shù)值字符位置數(shù)量速度地址尺寸還要考慮數(shù)據(jù)類型的特征:第一個(gè)/最后一個(gè)最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠(yuǎn)超過/在內(nèi)測(cè)試邊界線測(cè)試臨近邊界的合法數(shù)據(jù),以及剛超過邊界的非法數(shù)據(jù).越界測(cè)試通常簡單地加1或很小的數(shù) (

35、對(duì)于最大值)和減1或很小的數(shù)(對(duì)于最小值). 輸入條件報(bào)表日期的類型及長度1個(gè)數(shù)字字符5個(gè)數(shù)字字符7個(gè)數(shù)字字符有1個(gè)非數(shù)字字符全部是非數(shù)字字符6個(gè)數(shù)字字符顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)顯示出錯(cuò)輸入有效日期范圍月份范圍“報(bào)表日期”邊界值分析法測(cè)試用例測(cè)試用例說明測(cè)試數(shù)據(jù)期望結(jié)果選取理由52001520010052001.5MAY-200105月份為1月月份為12月月份12200101200112200100200113200101200512200100200513輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)輸入有效輸入有效顯示出錯(cuò)顯示出錯(cuò)在有效范圍邊界上選取數(shù)據(jù)僅有1個(gè)合法字符比有效長度少1比有效長度多

36、1只有1個(gè)非法字符6個(gè)非法字符類型及長度均有效最小日期最大日期剛好小于最小日期剛好大于最大日期最小月份最大月份剛好小于最小月份剛好大于最大月份3.錯(cuò)誤推測(cè)法(error guessing) 根據(jù)經(jīng)驗(yàn)來設(shè)計(jì)測(cè)試用例的方法例如,數(shù)據(jù)測(cè)試中的:缺省值空白空值零值無 4. 因果圖法 在等價(jià)類劃分方法和邊界值方法中均未考慮輸入條件的各種組合。當(dāng)輸入條件比較多時(shí),輸入條件組合的數(shù)目會(huì)相當(dāng)大。 因果圖方法是一種幫助人們系統(tǒng)地選擇一組高效測(cè)試用例的方法,它既考慮了輸入條件的組合關(guān)系,又考慮了輸出結(jié)果對(duì)輸入條件的依賴關(guān)系,即因果關(guān)系,其測(cè)試用例發(fā)現(xiàn)錯(cuò)誤的效率比較高。 這里不做詳細(xì)介紹,需要時(shí)可參閱參考文獻(xiàn)1等教

37、材。5.實(shí)用測(cè)試策略 等價(jià)劃分法與邊界值分析法結(jié)合任何時(shí)候都要使用邊界值分析法等價(jià)劃分法作為邊界植分析法的補(bǔ)充最后用錯(cuò)誤推測(cè)法補(bǔ)充9.3.2 白盒法 常用的白盒測(cè)試方法有邏輯覆蓋法、基本路徑覆蓋法、數(shù)據(jù)流測(cè)試和循環(huán)測(cè)試等。 1.邏輯覆蓋法 邏輯覆蓋主要考察使用測(cè)試數(shù)據(jù)運(yùn)行被測(cè)程序時(shí)對(duì)程序邏輯的覆蓋程度。通常希望選擇最少的測(cè)試用例來滿足所需的覆蓋標(biāo)準(zhǔn), (1)語句覆蓋(2)判定覆蓋(3)條件覆蓋(4)判定/條件覆蓋(5)條件組合覆蓋(6)路徑覆蓋(7)點(diǎn)覆蓋(8)邊覆蓋例:PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN IF (A1) AND (B=

38、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/AX=X+1FFTTabdce(1)語句覆蓋 選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),被測(cè)程序的使程序中每個(gè)語句至少執(zhí)行一次。 語句覆蓋是最弱的邏輯覆蓋。 語句覆蓋開始(A1) AND (B=0)(A=2) OR (X1)返回X=X/AX=X+1FFTTabdce只需設(shè)計(jì)一個(gè)測(cè)試用例:輸入數(shù)據(jù):A=2,B=0,X=4輸出數(shù)據(jù):X3。即達(dá)到了語句覆蓋;(2)判定覆蓋(分支覆蓋) 指選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),被

39、測(cè)程序的每個(gè)判定的所有可能結(jié)果都至少執(zhí)行一次(即判定的每個(gè)分支至少經(jīng)過一次)判定覆蓋開始(A1) AND (B=0)(A=2) OR (X1)返回X=X/AX=X+1FFTTabdce例:可設(shè)計(jì)兩組測(cè)試用例:輸入數(shù)據(jù):A=3,B=0 ,X=3 ;輸出數(shù)據(jù):X=1。(可覆蓋c、d分支) 輸入數(shù)據(jù):A=2,B=1 ,X=1 ;輸出數(shù)據(jù):X=2。(可覆蓋b、e分支)兩組測(cè)試用例可覆蓋所有判定的真假分支(3)條件覆蓋 選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),使每個(gè)判定的每個(gè)條件的可能取值至少執(zhí)行一次第一判定表達(dá)式:設(shè)條件 A1 取真 記為 T1 假 T1 條件 B=1 取真 記為 T2 假 T2第

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

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

42、0 A1, B0 A1, B=0 A1, B0 A=2, X1 A=2, X1 A2, X1 A2, X1測(cè)試用例 通過 滿足的 覆蓋A B X X 路徑 條件 分支2 0 4 3 ace T1,T2,T3,T4 c,e2 1 1 2 abe T1,T2,T3,T4 b,e1 0 2 2 abd T1,T2,T3,T4 b,d1 1 1 1 abd T1,T2,T3,T4 b,d 顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試用例一定也滿足判定覆蓋、條件覆蓋、判定/條件覆蓋、語句覆蓋標(biāo)準(zhǔn)。 測(cè)試用例 通過 滿足的 覆蓋A B X X 路徑 條件 分支2 0 3 2 ace T1,T2,T3,T4 c,e2

43、1 1 2 abe T1,T2,T3,T4 b,e1 0 3 4 abe T1,T2,T3,T4 b,e1 1 1 1 abd T1,T2,T3,T4 b,d 滿足條件/判定覆蓋的不一定滿足條件組合覆蓋。 (6)路徑覆蓋 指選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),覆蓋每一個(gè)可能的路徑。測(cè)試用例 通過 滿足的 覆蓋A B X X 路徑 條件 分支1 1 1 1 abd T1,T2,T3,T4 b,d1 1 2 3 abe T1,T2,T3,T4 b,e3 0 1 0 acd T1,T2,T3,T4 c,d2 0 4 3 ace T1,T2,T3,T4 c,e2.基本路徑測(cè)試法 通過分析由控制

44、構(gòu)造的環(huán)路的復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計(jì)測(cè)試用例,保證這些路徑至少通過一次。 基本路徑測(cè)試步驟: 導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)-流圖 (程序圖) 計(jì)算流圖G的環(huán)路復(fù)雜度V(G) 確定只包含獨(dú)立路徑的基本路徑集 設(shè)計(jì)測(cè)試用例(1)導(dǎo)出程序流程圖的拓?fù)浣Y(jié)構(gòu)-流圖12,364,5710611a節(jié)點(diǎn)邊R4區(qū)域12345873911程序流程圖89R1R2R3計(jì)算流圖G的環(huán)路復(fù)雜度V(G) V(G)= 區(qū)域個(gè)數(shù)=4 V(G)=邊的條數(shù)-節(jié)點(diǎn)個(gè)數(shù)+2=4 V(G)=判定節(jié)點(diǎn)個(gè)數(shù)+1=4(2)確定只包含獨(dú)立路徑的基本路徑集path1:1-11path1:1-2-3-4-5-10-1-11path1:1-2-

45、3-6-8-9-10-1-11path1:1-2-3-6-7-9-10-1-11 一條新路徑必須包含一條新邊。 這4條路徑組成了一個(gè)基本路徑集。4(環(huán)路復(fù)雜度V(G)是構(gòu)成這個(gè)基本路徑集的獨(dú)立路徑數(shù)的上界,也是設(shè)計(jì)測(cè)試用例的數(shù)目。 (3)設(shè)計(jì)測(cè)試用例,保證基本路徑集中每條路徑的執(zhí)行。3. 判定結(jié)構(gòu)分析當(dāng)程序中判定多于一個(gè)時(shí),形成的分支結(jié)構(gòu)可以分為兩類:嵌套型分支結(jié)構(gòu)和連鎖型分支結(jié)構(gòu)。對(duì)于嵌套型分支結(jié)構(gòu),若有n個(gè)判定語句,需要n+1個(gè)測(cè)試用例;對(duì)于連鎖型分支結(jié)構(gòu), 若有n個(gè)判定語句,需要有2n個(gè)測(cè)試用例,覆蓋它的2n條路徑。嵌套型分支結(jié)構(gòu)連鎖型分支結(jié)構(gòu)s1s2s3s4p1p2p3s1s2s3s4

46、s5s6p1p2p3對(duì)于連鎖型分支結(jié)構(gòu),當(dāng) n 較大時(shí)將無法測(cè)試。為減少測(cè)試用例的數(shù)目,可采用試驗(yàn)設(shè)計(jì)法,抽取部分路徑進(jìn)行測(cè)試。由于抽樣服從均勻分布,因此,在假定各條路徑的重要性相同,或暫不明確各條路徑的重要性的情況下可以做到均勻抽樣。如果明確了各條路徑的重要性,還可以采取加權(quán)的辦法,篩選掉部分路徑,再用如下的措施進(jìn)行抽樣。 設(shè)連鎖型分支結(jié)構(gòu)中有 n 個(gè)判定,計(jì)算滿足關(guān)系式 n+12m 的最小自然數(shù)m;設(shè)t = 2m,取正交表Lt,并利用它設(shè)計(jì)測(cè)試數(shù)據(jù)。例如,一個(gè)連鎖型分支結(jié)構(gòu)中有三個(gè)判定語句p1,p2,p3。全部路徑是238 條。先計(jì)算3+12m = t 的 t,得 t = 4。取正交表L4

47、,把每一列當(dāng)做一個(gè)判定,每一行當(dāng)做可取的測(cè)試用例,可得4個(gè)測(cè)試用例。 用各個(gè)判定的取假分支取代正交表L4中的“0”,用取真分支取代正交表中的“1”,就建立起一個(gè)測(cè)試路徑矩陣。這樣,測(cè)試路徑數(shù)目從238條減少到314條。 L40 0 01 0 10 1 11 1 01 2 31234用例s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5p1 p2 p31234s1 s3 s5s2 s3 s6s1 s4 s6s2 s4 s5路 徑s1s3s5p1p2p3s2s3s6p1p2p3s1s4s6p1p2p3s2s4s5p1p2p3L201112L40 0 01 0 10 1 11 1 01

48、 2 31234L2L80 0 0 0 0 0 01 0 1 0 1 0 10 1 1 0 0 1 11 0 0 1 1 00 0 0 1 1 1 10 1 1 0 1 00 1 1 1 1 0 01 1 0 1 0 0 11 2 3 4 5 6 712345678L44. 循環(huán)結(jié)構(gòu)分析循環(huán)分為4種不同類型:簡單循環(huán)、連鎖循環(huán)、嵌套循環(huán)和非結(jié)構(gòu)循環(huán)。(1) 簡單循環(huán) 零次循環(huán):從循環(huán)入口到出口 一次循環(huán):檢查循環(huán)初始值 二次循環(huán):檢查多次循環(huán) m次循環(huán): 檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。簡單循環(huán)設(shè)計(jì)測(cè)試用例的例子:求最小值k = i;for ( j = i+1;

49、j = n; j+ ) if ( Aj Ak ) k = j; k = i ; j = i+1;j = n?AjAk?k = jj +fdcabe測(cè)試用例選擇 對(duì)最內(nèi)層循環(huán)做簡單循環(huán)的全部測(cè)試。所有其他層的循環(huán)變量置為最小值; 逐步外推,對(duì)其外面一層循環(huán)進(jìn)行測(cè)試。測(cè)試時(shí)保持所有外層循環(huán)的循環(huán)變量取最小值,所有其他嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型”值。 反復(fù)進(jìn)行,直到所有各層循環(huán)測(cè)試完畢。(2) 嵌套循環(huán) 對(duì)全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),或者同時(shí)取最大循環(huán)次數(shù)(3) 連鎖循環(huán)如果各個(gè)循環(huán)互相獨(dú)立,則可以用與簡單循環(huán)相同的方法進(jìn)行測(cè)試。但如果幾個(gè)循環(huán)不是互相獨(dú)立的,則需要使用測(cè)試嵌套循環(huán)的辦法來處

50、理。(4) 非結(jié)構(gòu)循環(huán)這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計(jì)方法重新設(shè)計(jì)測(cè)試用例。因果圖法 因果圖適合于描述對(duì)于多種輸入條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來設(shè)計(jì)測(cè)試用例。 因果圖方法最終生成的是判定表。因果圖方法實(shí)例某電力公司有A、B、C、D四類收費(fèi)標(biāo)準(zhǔn),并規(guī)定:居民用電 100度/月 按A類收費(fèi) 100度/月按B類收費(fèi)動(dòng)力用電 10000度/月,非高峰,B類收費(fèi) 10000度/月,非高峰,C類收費(fèi) 10000度/月, 高峰,C類收費(fèi) 10000度/月, 高峰,D類收費(fèi)用因果圖表明輸入和輸出間的邏輯關(guān)系1I12B4AC35DI4I3I2把因果圖轉(zhuǎn)換為判定表組合條件條件(原因) 動(dòng)作(結(jié)果)ABC12

51、3123456101100011000110000100001104101050011D000110010000測(cè)試用例為判定表每一列設(shè)計(jì)一個(gè)測(cè)試用例:1列 居民電,90度/月 A2列 居民電,110度/月 B3列 動(dòng)力電,非高峰,8000度/月 B4列 動(dòng)力電,非高峰,1.2萬度/月 C5列 動(dòng)力電, 高峰,0.9萬度/月 C6列 動(dòng)力電, 高峰,1.1萬度/月 D 條件 測(cè)試用例 預(yù)期結(jié)果組合 (輸入數(shù)據(jù)) (輸出動(dòng)作)9.3.3 調(diào)試(糾錯(cuò)技術(shù)) 測(cè)試是找出軟件錯(cuò)誤的過程; (醫(yī)生做各種檢查或檢驗(yàn),找出不正常的體征或指標(biāo)) 調(diào)試是確定錯(cuò)誤的位置、性質(zhì)并糾正。 (醫(yī)生診斷病因并給出治療方案

52、) 調(diào)試的困難在于錯(cuò)誤的定位(排錯(cuò)).(醫(yī)生找出病因)調(diào)試的執(zhí)行步驟錯(cuò)誤現(xiàn)場結(jié)果執(zhí)行案例改正測(cè)試用例調(diào)試已識(shí)別的原因被懷疑的原因回歸測(cè)試附加測(cè)試排錯(cuò)策略方法1.蠻干法(強(qiáng)行排錯(cuò),brute force)常見形式:(1)打印出所有存儲(chǔ)內(nèi)容、代碼(2)程序中設(shè)打印語句(3)用自動(dòng)糾錯(cuò)工具 效率最低2.回溯法(跟蹤法) 根據(jù)錯(cuò)誤癥狀位置,人工沿程序控制流程向回追蹤源代碼。 適用于小程序,路徑數(shù)目很大時(shí)無法進(jìn)行。3.消去原因(cause limitation)列出可能原因,逐個(gè)排除,找出問題(1) 試探法(2) 歸納法(3) 演繹法(4) 二分查找法(1) 歸納法收集有關(guān)數(shù)據(jù)組織數(shù)據(jù)構(gòu)造線索研究線索關(guān)

53、系假設(shè)錯(cuò)誤原因證明假設(shè)糾正錯(cuò)誤能不能證明線索關(guān)系錯(cuò)誤線索能不能(2) 演繹法列舉可能錯(cuò)誤原因排除不會(huì)發(fā)生原因?qū)ΡA舻募僭O(shè)推斷證明留下的假設(shè)確定錯(cuò)誤待定錯(cuò)因剩余錯(cuò)因能出錯(cuò)原因不能收集更多數(shù)據(jù)無剩余修改錯(cuò)誤原則注意錯(cuò)誤的群集現(xiàn)象,在錯(cuò)誤近鄰檢查。找到錯(cuò)誤的本質(zhì)并修改采用回歸測(cè)試,避免因修改引起的新錯(cuò)誤。修改源程序。9.4 可靠性分析 開發(fā)過程中,利用測(cè)試的統(tǒng)計(jì)數(shù)據(jù)來估算軟件的可靠性,以控制軟件的質(zhì)量。統(tǒng)計(jì)錯(cuò)誤的產(chǎn)生頻度推測(cè)殘留在程序中的錯(cuò)誤數(shù)評(píng)價(jià)測(cè)試的精確度和覆蓋率(推測(cè)錯(cuò)誤產(chǎn)生的時(shí)間間隔,可靠性的一種度量)1K(ET/IT- Ec(t)/IT)方法:估算平均故障時(shí)間(MTTF估算公式)當(dāng)故障率為

54、獨(dú)立于時(shí)間的常量:MTTF K : 經(jīng)驗(yàn)常數(shù),通常取200。ET : 程序中原有的殘留錯(cuò)誤數(shù)IT : 程序長度t: 測(cè)試時(shí)間 Ec(t):在0-t期間內(nèi)發(fā)現(xiàn)的錯(cuò)誤總數(shù)1=推測(cè)殘留在程序中的錯(cuò)誤數(shù) 1.錯(cuò)誤植入模型 Mills將播種模型用于程序中殘留錯(cuò)誤的估算,稱錯(cuò)誤植入模型播種模型:N: 程序中原有殘留的錯(cuò)誤數(shù)Nt:新植入的錯(cuò)誤數(shù)n: 測(cè)試發(fā)現(xiàn)的原有錯(cuò)誤數(shù)nt :測(cè)試發(fā)現(xiàn)的植入錯(cuò)誤數(shù)NNnnttNNnnt=t 2.Hyman對(duì)錯(cuò)誤植入模型的改進(jìn)ET: 程序中原有的殘留錯(cuò)誤數(shù)E1: 1號(hào)測(cè)試員在某一時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤數(shù)E2: 2號(hào)測(cè)試員在同一時(shí)間內(nèi)發(fā)現(xiàn)的錯(cuò)誤數(shù)E0: 兩位測(cè)試員共同發(fā)現(xiàn)的錯(cuò)誤數(shù)EE

55、EE10=2TETE1E2/E09.5 面向?qū)ο鬁y(cè)試策略傳統(tǒng)軟件測(cè)試有單元測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試等4個(gè)步驟。其中,單元測(cè)試主要針對(duì)最小的程序單元(模塊)進(jìn)行測(cè)試,一旦這些程序模塊分別測(cè)試完成后,就將它們組裝起來形成軟件結(jié)構(gòu),最后對(duì)整個(gè)系統(tǒng)進(jìn)行一系列的確認(rèn)測(cè)試,查找和排除在需求方面的問題。面向?qū)ο蟓h(huán)境下的測(cè)試步驟與此類似,但測(cè)試策略有所不同,下面介紹面向?qū)ο笙鄳?yīng)測(cè)試步驟的測(cè)試策略。面向?qū)ο鬁y(cè)試策略1.單元測(cè)試 (類測(cè)試) 在面向?qū)ο蟓h(huán)境下,最小的可測(cè)試單元是封裝了的類或?qū)ο?,而不是程序模塊。 面向?qū)ο筌浖念悳y(cè)試等價(jià)于傳統(tǒng)方法中的單元測(cè)試。但它是由類中封裝的操作和和類的狀態(tài)行為驅(qū)動(dòng)的

56、。 完全孤立地測(cè)試類的操作是不可行的。其收效是很小的。類作為在語法上獨(dú)立的部件,應(yīng)當(dāng)允許用在許多不同的應(yīng)用中,每個(gè)類都應(yīng)該是可靠的,并且不需要了解任何實(shí)現(xiàn)的細(xì)節(jié)就能復(fù)用。因此,類應(yīng)盡可能孤立地進(jìn)行測(cè)試,首先定義測(cè)試類的各個(gè)操作的測(cè)試用例組,然后再把測(cè)試用例組擴(kuò)充,針對(duì)被測(cè)操作調(diào)用類中其它操作的情況,設(shè)計(jì)組裝測(cè)試的測(cè)試用例組。測(cè)試一個(gè)類時(shí),需要考慮一個(gè)類的層次。假設(shè)在基類中假定定義了一個(gè)操作X,每一個(gè)派生類都使用操作X,它是在各個(gè)類所定義的私有屬性和操作的環(huán)境中使用的,因使用操作X的環(huán)境變化太大,所以必須在每一個(gè)派生類的環(huán)境下都測(cè)試操作X。測(cè)試一個(gè)派生類時(shí),首先對(duì)基類和繼承關(guān)系進(jìn)行完全測(cè)試,然后

57、從基類的測(cè)試用例組復(fù)用已存在的測(cè)試用例到派生類的測(cè)試用例組中,這種技術(shù)基于類的帶有祖先的層次關(guān)系,漸增地開發(fā)類的測(cè)試用例組,因此叫做分層增殖式測(cè)試。我們首先安排一個(gè)針對(duì)單獨(dú)的類的測(cè)試計(jì)劃,然后考慮分層增殖式測(cè)試計(jì)劃和算法。類測(cè)試的種類有:1)基于定義的測(cè)試 把類當(dāng)作一個(gè)黑盒對(duì)待,確認(rèn)類的實(shí)現(xiàn)是否遵循它的定義。例如,若類是一個(gè)“Stack”,則測(cè)試應(yīng)當(dāng)確保 LIFO 原則得以實(shí)施?;诙x的測(cè)試包括類定義和操作定義兩個(gè)級(jí)別。類定義指的是一個(gè)類的定義由各個(gè)服務(wù)的定義和一些表示類的概念的語句組合而成。例如,一個(gè)stack類包括了操作push和pop的定義,還表達(dá)了LIFO的思想。C+中類的定義是多層的。 對(duì)于多數(shù)的類,檢驗(yàn)類的定義主要檢驗(yàn)在類定義的 public 域中的那些操作。對(duì)于派生類,要檢查包括public域和protected 域的擴(kuò)充界面。如果完全地檢查類中定義的操作,則需要檢查所有三個(gè)訪問級(jí)別public域,protected域及private域中的界面。操作定義指的是對(duì)于一個(gè)單獨(dú)的操作,可通過該操作的先決條件和后置條件,以及它的名字加以定義。根據(jù)先決條件選擇測(cè)試用例,產(chǎn)生輸出,以便讓測(cè)試者能夠判斷后置條件是否能夠得到滿足。各個(gè)操作的定義的測(cè)試與對(duì)于各個(gè)過程定義的測(cè)試基本相同。2)基于程序的測(cè)試基

溫馨提示

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