軟件工程第七章實(shí)現(xiàn).ppt_第1頁(yè)
軟件工程第七章實(shí)現(xiàn).ppt_第2頁(yè)
軟件工程第七章實(shí)現(xiàn).ppt_第3頁(yè)
軟件工程第七章實(shí)現(xiàn).ppt_第4頁(yè)
軟件工程第七章實(shí)現(xiàn).ppt_第5頁(yè)
已閱讀5頁(yè),還剩110頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第7章 實(shí)現(xiàn),7.1 編碼 7.2 軟件測(cè)試基礎(chǔ) 7.3 單元測(cè)試 7.4 集成測(cè)試 7.5 確認(rèn)測(cè)試 7.6 白盒測(cè)試技術(shù) 7.7 黑盒測(cè)試技術(shù) 7.8 調(diào)試 7.9 軟件可靠性 7.10 小結(jié),重點(diǎn)和難點(diǎn),結(jié)構(gòu)化程序設(shè)計(jì)的原則和風(fēng)格 軟件測(cè)試的目的和原則 白盒測(cè)試、黑盒測(cè)試的定義 熟練掌握白盒測(cè)試中各種邏輯覆蓋的基本思想 熟練掌握黑盒測(cè)試中等價(jià)劃分、邊界值分析方法 軟件測(cè)試策略中單元測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試的相關(guān)概念及方法 程序調(diào)試步驟和幾種程序調(diào)試方法、過(guò)程,7.1 編碼,7. 1.1 選擇程序設(shè)計(jì)語(yǔ)言 程序設(shè)計(jì)語(yǔ)言的分類 從軟件工程的角度,根據(jù)程序設(shè)計(jì)語(yǔ)言發(fā)展的歷程,大致分為

2、 4 類: 第一代語(yǔ)言:從屬于機(jī)器的語(yǔ)言 第二代語(yǔ)言:匯編語(yǔ)言 第三代語(yǔ)言:高級(jí)程序設(shè)計(jì)語(yǔ)言 第四代語(yǔ)言( 4GL ),選擇語(yǔ)言的標(biāo)準(zhǔn),系統(tǒng)用戶的要求 可以使用的編譯程序 可以得到的軟件工具 工程規(guī)模 程序員的知識(shí) 軟件的可移植性要求 軟件的應(yīng)用領(lǐng)域 項(xiàng)目應(yīng)用領(lǐng)域是最關(guān)鍵的因素,7.1.2 編碼風(fēng)格,編碼風(fēng)格是指一個(gè)人編制程序時(shí)所表現(xiàn)出來(lái)的特點(diǎn)、習(xí)慣、邏輯思路等。 良好編碼風(fēng)格包括: 程序內(nèi)部應(yīng)該有很好的文檔:如標(biāo)識(shí)符、注釋良好,程序文檔結(jié)構(gòu)易讀易理解。 數(shù)據(jù)說(shuō)明應(yīng)易于理解和維護(hù) 語(yǔ)句結(jié)構(gòu)盡可能簡(jiǎn)單直觀 輸入輸出風(fēng)格遵守人機(jī)界面設(shè)計(jì)準(zhǔn)則 效率滿足用戶需求即可,1程序內(nèi)部文檔 序言性注釋: 通常

3、置于每個(gè)程序模塊的開頭部分,它應(yīng)當(dāng)給出程序的整體說(shuō)明,對(duì)于理解程序本身具有引導(dǎo)作用。有關(guān)項(xiàng)目包括: 程序標(biāo)題; 有關(guān)本模塊功能和目的的說(shuō)明; 主要算法; 接口說(shuō)明:包括調(diào)用形式,參數(shù)描述; 有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關(guān)信息; 開發(fā)簡(jiǎn)歷:模塊設(shè)計(jì)者,復(fù)審者,復(fù)審日期,修改日期及有關(guān)說(shuō)明等。,2數(shù)據(jù)說(shuō)明 命名規(guī)范 標(biāo)識(shí)符,包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。 一個(gè)系統(tǒng)的命名必須一致。比如采用匈牙利命名法。例:pstrName 選用具有實(shí)際含義的標(biāo)示符,以利于對(duì)標(biāo)識(shí)符的理解 為了便于程序的輸入,標(biāo)識(shí)符的名字不宜過(guò)長(zhǎng)。 為了便于區(qū)分,

4、不同的標(biāo)識(shí)符不要取過(guò)于相似的名字。如student和students易在使用或閱讀時(shí)才生混淆。,3 語(yǔ)句的構(gòu)造 書寫格式 最好在一行上只書寫一條語(yǔ)句。 例如,有一段排序程序FOR I:=1 TO N1 DO BEGIN T:=I;FOR J:=I1 TO N DO IF AJAT THEN T:=J;IF TI THEN BEGIN WORK:=AT;AT:=AI;AI:=WORK;END END; 由于一行中包括了多個(gè)語(yǔ)句,掩蓋了程序的循環(huán)結(jié)構(gòu)和條件結(jié)構(gòu),使其可讀性變得很差。,舉例:,FOR I:=1 TO N-1 DO /改進(jìn)布局 BEGIN T:=I; FOR J:=I1 TO N DO

5、 IF AJAT THEN T:=J; IF TI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; END END;,書寫格式(續(xù)) 在書寫語(yǔ)句時(shí),應(yīng)通過(guò)采用遞縮式格式使程序的層次更加清晰。 例如:兩重嵌套的選擇結(jié)構(gòu)嵌套,寫成下面的遞縮形式,層次就清楚得多 IF() THEN IF() THEN ELSE ENDIF ELSE ENDIF,4 輸入/輸出 輸入 盡可能采用簡(jiǎn)單的輸入格式,減少用戶的輸入量。 交互式輸入數(shù)據(jù)時(shí)應(yīng)有必要的提示。如:“請(qǐng)輸入待查職工的編號(hào)(5位數(shù)字0000199999)” 程序應(yīng)對(duì)輸入數(shù)據(jù)的合法性進(jìn)行檢查。 若用戶輸入某些數(shù)據(jù)后可能會(huì)產(chǎn)生

6、嚴(yán)重后果,應(yīng)給用戶輸出必要的提示并在必要時(shí)要求用戶確認(rèn)。如:“清庫(kù)會(huì)使庫(kù)中原有數(shù)據(jù)全部丟失,真的需要清庫(kù)嗎?(Y/N)” 應(yīng)根據(jù)用戶和系統(tǒng)特點(diǎn)設(shè)計(jì)令用戶滿意的輸入方式。,5. 從三個(gè)方面考慮效率問(wèn)題:,程序運(yùn)行的時(shí)間 存儲(chǔ)器效率 大型機(jī)要考慮操作系統(tǒng)頁(yè)式調(diào)度的特點(diǎn); 微型機(jī)可考慮使用最小的存儲(chǔ)單元; 提高存儲(chǔ)器效率的關(guān)鍵是程序的簡(jiǎn)單性。 輸入輸出的效率 簡(jiǎn)單清晰是提高人機(jī)通信效率的關(guān)鍵; 硬件間通信也有一些原則要遵循。,7 . 2 軟件測(cè)試的基礎(chǔ),什么是軟件測(cè)試? 是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。 發(fā)現(xiàn)錯(cuò)誤是為了更正錯(cuò)誤,最終得到一個(gè)高質(zhì)量的軟件系統(tǒng)。 軟件測(cè)試的對(duì)象:整個(gè)軟件定義、開發(fā)周期的

7、產(chǎn)品 測(cè)試用例:通常指測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果,7.2.1 軟件測(cè)試的目標(biāo),軟件測(cè)試存在的矛盾 用戶希望通過(guò)軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。 軟件開發(fā)者希望通過(guò)軟件測(cè)試表明軟件產(chǎn)品中不存在錯(cuò)誤,已正確地實(shí)現(xiàn)了用戶的要求。,G.Myers給出的軟件測(cè)試目的,測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程 好的測(cè)試用例是極可能發(fā)現(xiàn)至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案; 成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試 總之,測(cè)試的目的是以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種錯(cuò)誤和缺陷;測(cè)試附帶的收獲是它能證明軟件的功能和性能與需求說(shuō)明相符合。 注意:測(cè)試不能表明軟件中不存在錯(cuò)誤,它只能

8、說(shuō)明軟件中存在錯(cuò)誤。,7. 2. 2 軟件測(cè)試的準(zhǔn)則(1),1 )所有測(cè)試都能追溯到用戶需求 2 )應(yīng)該遠(yuǎn)在測(cè)試開始之前就制定出測(cè)試計(jì)劃 3 )應(yīng)該把 Pareto原理應(yīng)用到軟件測(cè)試中 群集現(xiàn)象: 80 的錯(cuò)誤可能是由 20 的模塊造成的 4 )從“小規(guī)?!睖y(cè)試開始,逐步過(guò)渡到“大規(guī)模”測(cè)試 5 )窮舉測(cè)試是不可能的 測(cè)試只能證明程序有錯(cuò),不能證明程序沒(méi)有錯(cuò)誤 6 )應(yīng)由獨(dú)立的第三方從事測(cè)試工作,7.2.3 測(cè)試方法,軟件測(cè)試方法一般分為:靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。 靜態(tài)測(cè)試是指被測(cè)程序不在機(jī)器上運(yùn)行,采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的手段對(duì)程序進(jìn)行檢測(cè)。 動(dòng)態(tài)測(cè)試是指通過(guò)運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤,又分黑盒

9、法和白盒法兩種。,兩種動(dòng)態(tài)測(cè)試方法,已知產(chǎn)品應(yīng)該具有的功能,可以通過(guò)黑盒測(cè)試來(lái)檢驗(yàn)每個(gè)功能是否符合設(shè)計(jì)要求。 已知產(chǎn)品的內(nèi)部工作過(guò)程,可以通過(guò)白盒法來(lái)檢驗(yàn)每種內(nèi)部操作是否按要求的規(guī)定正常進(jìn)行。,7.2.4 測(cè)試步驟,測(cè)試的 4 個(gè)步驟: 單元(模塊)測(cè)試 集成測(cè)試(子系統(tǒng)和系統(tǒng)測(cè)試) 確認(rèn)(驗(yàn)收)測(cè)試 平行運(yùn)行,單元測(cè)試:檢查各各程序模塊是否有錯(cuò)誤,能發(fā)現(xiàn)編碼和詳細(xì)設(shè)計(jì)的錯(cuò)誤。,集成測(cè)試:測(cè)試模塊(子系統(tǒng))接口,發(fā)現(xiàn)軟件設(shè)計(jì)和需求說(shuō)明的錯(cuò)誤。,平行測(cè)試:同時(shí)運(yùn)行新、舊系統(tǒng),確認(rèn)測(cè)試:檢查軟件是否滿足用戶的需要以及文檔資料是否完整、準(zhǔn)確,測(cè)試與軟件開發(fā)各階段的關(guān)系 軟件開發(fā)過(guò)程是一個(gè)自頂向下,逐

10、步細(xì)化的過(guò)程 軟件測(cè)試則是依相反順序自底向上,逐步集成的過(guò)程。,7.2.5 測(cè)試階段的信息流,測(cè)試過(guò)程需要二類輸入,軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;,測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試程序等;,7. 3 單元測(cè)試( Unit Testing ),又稱模塊測(cè)試,需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。 測(cè)試目的:發(fā)現(xiàn)模塊內(nèi)部可能存在的差錯(cuò) 測(cè)試依據(jù):詳細(xì)設(shè)計(jì)說(shuō)明書和源程序清單 測(cè)試方法:白盒測(cè)試為主,黑盒測(cè)試為輔,多個(gè)模塊并行進(jìn)行。,7 .3 .1 測(cè)試重點(diǎn), 模塊接口測(cè)試,在單元測(cè)試的開始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。 測(cè)試項(xiàng)目: 調(diào)用本模塊的輸入?yún)?shù)是否正確; 本

11、模塊調(diào)用子模塊時(shí),輸入給子模塊的參數(shù)是否正確; 輸出給標(biāo)準(zhǔn)函數(shù)的參數(shù)是否正確; 全局量的定義和用法在各摸塊中是否一致; 與外部設(shè)備的輸入輸出是否正確。, 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試,測(cè)試項(xiàng)目: 不正確或不一致的數(shù)據(jù)類型說(shuō)明 使用尚未賦值或尚未初始化的變量 錯(cuò)誤的初始值或錯(cuò)誤的缺省值 變量名拼寫錯(cuò)或書寫錯(cuò) 不一致的數(shù)據(jù)類型 全局?jǐn)?shù)據(jù)對(duì)模塊的影響, 重要的執(zhí)行通路測(cè)試,測(cè)試用例要適當(dāng) : 關(guān)鍵, 錯(cuò)誤處理測(cè)試,著重測(cè)試以下可能發(fā)生的錯(cuò)誤: 出錯(cuò)的措述是否難以理解 出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符 對(duì)錯(cuò)誤條件的處理正確與否 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等,

12、邊界測(cè)試,重點(diǎn)檢查剛好等于、大于或小于邊界值的數(shù)據(jù); 對(duì)運(yùn)行時(shí)間有要求的模塊,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。,7.3.2 代碼審查,人工測(cè)試源程序。 參與者:程序的設(shè)計(jì)者、編寫者、測(cè)試者沒(méi)有直接參與系統(tǒng)開發(fā),但有力的程序員。 方法:研究設(shè)計(jì)說(shuō)明書,一起審查程序代碼如何實(shí)現(xiàn)設(shè)計(jì),從中發(fā)現(xiàn)問(wèn)題。 注意:通常代碼審查和機(jī)器測(cè)試結(jié)合使用。,7.3.3 計(jì)算機(jī)測(cè)試,單元測(cè)試通常在編碼階段進(jìn)行。常用機(jī)器測(cè)試,即通過(guò)運(yùn)行模塊發(fā)現(xiàn)問(wèn)題。 兩個(gè)重要概念: 驅(qū)動(dòng)程序( driver ) :相當(dāng)于被測(cè)試模塊的“主程序”,接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)試的模塊,并且

13、輸出相關(guān)結(jié)果。 存根程序(stub):代替被測(cè)試模塊所調(diào)用的模塊。不需要具有子模塊所有功能,但不允許什么事情也不做。,單元測(cè)試的測(cè)試環(huán)境,正文加工系統(tǒng)功能結(jié)構(gòu)圖,若要測(cè)試“編輯子系統(tǒng)”,需要上層“驅(qū)動(dòng)模塊”和下層“存根程序”,7 . 4 集成測(cè)試( Integrated Testing ),在單元測(cè)試之后,將模塊組裝成系統(tǒng),為發(fā)現(xiàn)并排除模塊在連接中可能出現(xiàn)的問(wèn)題,而進(jìn)行的測(cè)試。 需要考慮: 模塊連接時(shí)穿越模塊接口的數(shù)據(jù)是否會(huì) 丟失; 一個(gè)模塊對(duì)另一個(gè)模塊是否會(huì)產(chǎn)生不利的影響; 各子功能組合起來(lái),能 否達(dá)到預(yù)期要求的父功能 全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題; 單個(gè)模塊的誤差累積起來(lái),是 否會(huì)放大至不能接受

14、的程度。,集成測(cè)試的兩種方式, 非漸增式組裝方式 對(duì)每個(gè)模塊分別進(jìn)行單元測(cè)試,再把所有模塊組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測(cè)試,從而得到要求的軟件系統(tǒng)。 漸增式組裝方式 先對(duì)模塊進(jìn)行單元測(cè)試,然后將測(cè)試后的模塊逐步組裝成較大的系統(tǒng);在組裝的過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題;最后組裝成為要求的軟件系統(tǒng)。,漸增式組裝方式的三種類型,自頂向下的漸增方式 自底向上結(jié)合的漸增方式 混合漸增測(cè)試,自頂向下的漸增方式,將模塊按系統(tǒng)程序結(jié)構(gòu),沿控制層次自頂向下進(jìn)行組裝。 不需要驅(qū)動(dòng)模塊,需要存根模塊 深度優(yōu)先 寬度優(yōu)先,深度優(yōu)先組裝的例子,組裝步驟,1 )對(duì)主模塊進(jìn)行測(cè)試,用存根模塊代替下層模塊; 2

15、 )根據(jù)選定的結(jié)合策略,每次用一個(gè)實(shí)際模塊代替一個(gè)樁模塊; 3 )在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試; 4 )為保證加入的模塊沒(méi)有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測(cè)試,優(yōu)點(diǎn): 能在早期驗(yàn)證主要的控制和判斷點(diǎn)。 選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能。 缺點(diǎn): 可能遇到邏輯次序上的問(wèn)題,自底向上的增殖方式,從程序模塊結(jié)構(gòu)最底層的模塊開始組裝和測(cè)試。 不再需要存根程序,需要驅(qū)動(dòng)模塊。 組合策略: 把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件子功能的族; 用驅(qū)動(dòng)程序協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出; 對(duì)由模塊組成的子功能族進(jìn)行測(cè)試; 去掉驅(qū)動(dòng)程序,沒(méi)軟件結(jié)構(gòu)自下向上移動(dòng),把子功能族組合起來(lái)形成更大的

16、子功能族。,自底向上組合測(cè)試的例子,回歸測(cè)試,思考:采用“漸增式測(cè)試”時(shí),測(cè)試中當(dāng)新的模塊結(jié)合進(jìn)來(lái)之后,是否需要對(duì)程序進(jìn)行再次測(cè)試? 定義:指集成測(cè)試中,重新執(zhí)行已經(jīng)做過(guò)測(cè)試的某個(gè)子集,以保證上述這些變化沒(méi)有帶來(lái)非預(yù)期的副作用。 先采取自頂向下的方式測(cè)試被修改的模塊及其子模塊;然后將這一部分視為子系統(tǒng),再自底向上測(cè)試。,混合策略,1)衍變的自頂向下的增殖測(cè)試 先對(duì)輸入輸出模塊和引入新算法模塊進(jìn)行測(cè)試; 再自底向上組裝成為功能相當(dāng)完整且相對(duì)獨(dú)立的子系統(tǒng); 然后由主模塊開始自頂向下進(jìn)行增殖測(cè)試。,2)自底向上一自頂向下的增殖測(cè)試,先對(duì)含讀操作的子系統(tǒng)自底向上直至根結(jié)點(diǎn)模塊進(jìn)行組裝和測(cè)試; 再對(duì)含寫

17、操作的子系統(tǒng)做自頂向下的組裝與測(cè)試。,7.5 確認(rèn)測(cè)試,又稱有效性測(cè)試。驗(yàn)證軟件的功能、性能及其它特性是否與用戶的要求一致。 確認(rèn)測(cè)試的基礎(chǔ) :軟件需求規(guī)格說(shuō)明書 確認(rèn)測(cè)試的主要工作:有效性測(cè)試與軟件配置審查 主要參與人員:以用戶為主,確認(rèn)測(cè)試的步驟,7 .5. 1 確認(rèn)測(cè)試范圍,通常采用黑盒測(cè)試,驗(yàn)證被測(cè)軟件是否滿足用戶需求。 測(cè)試計(jì)劃:包括測(cè)試種類及進(jìn)度安排; 測(cè)試步驟:描述具體的測(cè)試用例 測(cè)試目的:確定軟件的特性是否與需求相符; 所有的文檔都是正確且便于使用; 其它軟件需求。 測(cè)試結(jié)果:與預(yù)期的結(jié)果相符; 與預(yù)期的結(jié)果不符:要提交一份問(wèn)題報(bào)告。,7.5.2 軟件配置復(fù)查,目的:保證軟件配

18、置的所有成分都齊全; 各方面的質(zhì)量都符合要求; 具有維護(hù)階段所必需的細(xì)節(jié); 而且已經(jīng)編排好分類的目錄。 應(yīng)當(dāng)嚴(yán)格遵守用戶手冊(cè)和操作手冊(cè)中規(guī)定的使用步驟,以便檢查這些文檔資料的完整性和正確性。,7. 5. 3 測(cè)試和測(cè)試,適用:為多個(gè)用戶開發(fā)的軟件 測(cè)試:由用戶在開發(fā)環(huán)境下進(jìn)行的測(cè)試。 主要評(píng)價(jià)軟件產(chǎn)品的:FLURPS(即功能、局域化、可使用性、可靠性、性能和支持) 測(cè)試:由最終用戶在實(shí)際使用環(huán)境下進(jìn)行的測(cè)試,這些用戶定期返回有關(guān)錯(cuò)誤信息給開發(fā)者。 注意:只有當(dāng)測(cè)試達(dá)到一定的可靠程度時(shí),才開始 測(cè)試。,7. 6 白盒測(cè)試技術(shù),白盒測(cè)試執(zhí)行的要求: 對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次 對(duì)所

19、有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次; 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體; 測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。,7. 6. 1 邏輯覆蓋,邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計(jì)測(cè)試用例的技術(shù)。 語(yǔ)句覆蓋 判定覆蓋 條件覆蓋 判定一條件覆蓋 條件組合覆蓋 點(diǎn)覆蓋 邊覆蓋 路徑覆蓋,圖7.5被測(cè)試模塊的流程圖,圖7.5 被測(cè)試模塊的流程圖,語(yǔ)句覆蓋:使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次,測(cè)試數(shù)據(jù)(X任意實(shí)數(shù)): A=2,B=0,X=4,判定覆蓋:運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。,測(cè)試數(shù)據(jù): A=3,B=0,X=3(覆蓋1) A=2,B=1,X=1(覆蓋2

20、),滿足判定覆蓋的測(cè)試用例一定滿足語(yǔ)句覆蓋。,條件覆蓋:使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。,選取測(cè)試數(shù)據(jù)使得a點(diǎn)可能結(jié)果: A1, A1, B=0, B0 B點(diǎn)可能結(jié)果: A=2, A2, X1, X1 選擇用例: A=2,B=0,X=4(路徑:sacbed) A=1,B=1,X=1 (路徑:sabd ),判定/條件覆蓋,判定條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)分支至少執(zhí)行一次。 同時(shí)滿足判斷覆蓋和條件覆蓋。 應(yīng)滿足以下覆蓋情況: 條件: A1, A1, B=0, B0 A=2, A2, X1, X1 應(yīng)執(zhí)行路徑: 或

21、: 選擇用例: (2,0,4),(2,0,3) (1,1,1),(1,1,1),測(cè) 試 用 例 覆蓋分支 條件取值 【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 1, 1),(1, 1, 1)】L2(b, d),(A=2) and (B=0) or (A1) and (B=0) and (X/A1),not (A1) and not (A=2) and not (X1) or not (B=0) and not (A=2) and not (X1),5. 條件組合覆蓋,條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。

22、記 A1, B0 作 A1, B0 作 A1, B0 作 A1, B0 作, A2, X1 作 A2, X1 作 A2, X1 作 A2, X1 作 測(cè) 試 用 例 覆蓋條件 覆蓋組合 【(2,0,4),(2,0,3)】(L1) , 【(2,1,1),(2,1,2)】(L3) , 【(1,0,3),(1,0,4)】(L3) , 【(1,1,1),(1,1,1)】(L2) ,and,or,A1,T,B=0,T,X=X/A,T,F,F,A=2,T,F,X1,F,X=X+1,6 .路徑測(cè)試,路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。 測(cè) 試 用 例 通過(guò)路徑 覆蓋條件 【(2, 0,

23、 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4),(A1) and (B=0),(A=2) or (X1),X=X/A,X=X+1,T,T,F,F,b,d,c,e,a,總結(jié): 6 種覆蓋標(biāo)準(zhǔn)的對(duì)比,7. 6. 2 控制結(jié)構(gòu)測(cè)試,1 、基本路徑測(cè)試 以環(huán)形復(fù)雜度為基礎(chǔ),導(dǎo)出基本可執(zhí)行路徑集合,設(shè)計(jì)測(cè)試用例的方法。 測(cè)試用例要保證程序的每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。,步驟:,1:由程序流程圖導(dǎo)出程序控制流圖,并

24、計(jì)算其環(huán)路復(fù)雜度 2:確定程序的獨(dú)立路徑 什么是獨(dú)立路徑? 流圖中,一條獨(dú)立路徑是至少包含一條在其它獨(dú)立路徑中從未有過(guò)的邊的路徑。 獨(dú)立路徑條數(shù)是確保程序中,每個(gè)可執(zhí)行語(yǔ)句至少能被執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。 獨(dú)立路徑條數(shù)程序環(huán)路復(fù)雜性 V ( G ),步驟1.根據(jù)程序邏輯畫出流程圖,void Func(int nPosX, int nPosY) while (nPosX 0) int nSum = nPosX + nPosY; if (nSum 1) nPosX-; nPosY-; else if (nSum -1) nPosX -= 2; else nPosX -= 4; / en

25、d of while ,步驟2:將流程圖轉(zhuǎn)換為流圖,步驟3:確定基本路徑的集合,基本路徑 流圖Cyclomatic復(fù)雜度正好是基本路徑的數(shù)目 V(G) = E N + 2 V(G) = 11 - 9 + 2 = 4 V(G) =P+1 E、N、P分別為流圖的邊數(shù)、節(jié)點(diǎn)數(shù)和謂詞節(jié)點(diǎn)數(shù)。,步驟4:確定測(cè)試路徑的集合,例:獨(dú)立路徑 圖中一組獨(dú)立的路徑是: L1 : 1 , 11 L2: 1 , 2 , 3 , 4 , 5 , 10 , 1 , 11 L3: 1 , 2 , 3 , 6 , 8 , 9 , 10 , 1 , 11 L4: 1 , 2 , 3 , 6 , 7 , 9 , 10 , 1 ,

26、 11 路徑 L1 , L2 , L3 , L4 組成了控制流圖的一個(gè)基本路徑集。,步驟 5 :由基本路徑集,導(dǎo)出測(cè)試用例,基本路徑集不是唯一的,對(duì)于給定的程序圖,可以得到不同的基本路徑集。 導(dǎo)出測(cè)試用例,確保基本路徑集中的每一條路徑的執(zhí)行。,針對(duì)測(cè)試路徑設(shè)計(jì)測(cè)試用例,1-11 nPosX 取-1, nPosY取任意值 1 - 2, 3 - 4, 5 - 10 - 1 - 11 nPosX 取1, nPosY取1 1- 2, 3 - 6 - 7 - 9 - 10 - 1 11 nPosX 取1, nPosY取-1 1- 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 nPosX

27、取1, nPosY取-3,7.7 黑盒測(cè)試技術(shù),黑盒測(cè)試主要是為了發(fā)現(xiàn)以下錯(cuò)誤: 是否有不正確或遺漏了的功能? 能否正確地接受輸入?能否正確的輸出結(jié)果? 是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤? 性能上是否能夠滿足要求? 是否有初始化或終止性錯(cuò)誤? 幾種黑盒測(cè)試技術(shù): 等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)法、因果圖,7.7.1 等價(jià)劃分,基本思想: 把所有可能的輸入數(shù)據(jù)(包括有效或無(wú)效的),劃分成若干數(shù)據(jù)類(等價(jià)類),然后從每個(gè)數(shù)據(jù)類中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。 這種方法完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。,設(shè)計(jì)測(cè)試用例的步驟,步驟 1 :劃分等價(jià)類(列出等價(jià)類

28、表) 等價(jià)類是指輸入數(shù)據(jù)的子集合。在該子集合中,各輸入數(shù)據(jù)對(duì)于發(fā)現(xiàn)程序中的錯(cuò)誤都是等效的。 根據(jù)程序功能說(shuō)明,確定有效和無(wú)效的等價(jià)類 步驟2:根據(jù)等價(jià)類設(shè)計(jì)測(cè)試用例 包括有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。,步驟 1 :劃分等價(jià)類,等價(jià)類分為: 有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。 無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。 在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)! !,等價(jià)類劃分原則(1),原則1 :若規(guī)定了取值范圍,或輸入值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。 例:程序?qū)斎藯l件的要求

29、是:.輸入數(shù)是從 1 到 999 . 則 有效等價(jià)類是“ 1 =輸入數(shù)=999 ; 兩個(gè)無(wú)效等價(jià)類是“輸入數(shù)1或“輸入數(shù) 999 在數(shù)軸上表示成:,等價(jià)類劃分原則(2),原則2:如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每種輸入數(shù)據(jù)分別處理,則可為每種輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。 例:教師上崗方案中規(guī)定對(duì)教授、副教授、講師和助教分別計(jì)算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定 4 個(gè)有效等價(jià)類為教授、副教授、講師和助教,一個(gè)無(wú)效等價(jià)類,它是所有不符合以上身分的人員的輸入值的集合。,等價(jià)類劃分原則(3),原則 3 :若規(guī)定了輸入值的集合,或者是

30、規(guī)定了“必須如何”的條件,則可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。 例: Pascal 語(yǔ)言對(duì)變量標(biāo)識(shí)符規(guī)定必須“以字母打頭”,則所有以字母打頭的構(gòu)成有效等價(jià)類,而不以字母打頭的歸于無(wú)效等價(jià)類。,等價(jià)類劃分原則(4),原則4 :如果規(guī)定輸入數(shù)據(jù)為整型,則可劃分出正整、零和負(fù)整數(shù)三個(gè)有效類,其他數(shù)據(jù)為無(wú)效類 原則5:如果程序處理對(duì)象是表格,則應(yīng)使用空表、含一項(xiàng)和多項(xiàng)的表。 原則6:如果確知,已劃分的等價(jià)類中各元素在程序中的處理方式不同,則應(yīng)將此等價(jià)類進(jìn)一步劃分成更小的等價(jià)類。,步驟2:確立測(cè)試用例,在確立了等價(jià)類之后,建立等價(jià)類表,列出所有劃分出的等價(jià)類。,測(cè)試用例的選擇原則,原則1: 為每一個(gè)

31、等價(jià)類規(guī)定一個(gè)唯一編號(hào); 原則2:設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止; 原則3: 設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類都被覆蓋為止。,等價(jià)類劃分法設(shè)計(jì)測(cè)試用例(例 1 ),例1: 某報(bào)表處理系統(tǒng),要求用戶輸入處理報(bào)表的日期。 系統(tǒng)規(guī)定日期由年、月的 6 位數(shù)字字符組成,前 4 位代表年,后兩位代表月。 設(shè)日期限制在 1990 年 1 月至 1999 年 12 月,即系統(tǒng)只能對(duì)該段時(shí)期內(nèi)的報(bào)表進(jìn)行處理。如果用戶輸入的日期不在此范圍內(nèi),則顯示輸入錯(cuò)誤。 現(xiàn)用等價(jià)類劃分法

32、設(shè)計(jì)測(cè)試用例,來(lái)測(cè)試程序的“日期檢查功能”。,劃分等價(jià)類并編號(hào),為合理等價(jià)類設(shè)計(jì)測(cè)試用例, 6 位數(shù)字字符 在 1990 一 1999 之間 在 1 一 12 之間,為每個(gè)不合理等價(jià)類設(shè)計(jì)測(cè)試用例,等價(jià)類劃分法設(shè)計(jì)測(cè)試用例(例 2 ),某一 8 位微機(jī),其十六進(jìn)制常數(shù)定義為: 以 0 x 或0X 開頭的數(shù)是十六進(jìn)制整數(shù),其值的范圍是-7f 7f (表示十六進(jìn)制的大小寫字母不加區(qū)別),如0X 13 , 0X6A ,-0X3c 。,劃分等價(jià)類并編號(hào),為合理等價(jià)類設(shè)計(jì)測(cè)試用例,1、0 x或0X 開頭的 1 2位數(shù)字串 2、以-0 x打頭的12位數(shù)字串 9、- 7f 7f 之間,7.7.2 邊界值分析

33、,邊界是指,對(duì)于輸入和輸出等價(jià)類而言,稍高和稍低于其邊界值的一些特定情況。 經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。 邊界值分析方法思想:確定邊界之后,選取正好等于、剛剛大于或剛剛小于邊界的值做為測(cè)試數(shù)據(jù),而不是選取等價(jià)類中典型值或任意值做為測(cè)試數(shù)據(jù)。 通??偸桥c等價(jià)劃分技術(shù)聯(lián)合使用,是等價(jià)劃分方法的補(bǔ)充。,7.7.3 錯(cuò)誤推測(cè),基本思想:列舉程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試用例。 依靠經(jīng)驗(yàn)和直覺(jué)推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫檢查這些錯(cuò)誤的測(cè)試用例。,7. 8 調(diào)試( Debug),軟件調(diào)試是在成功測(cè)試之后,

34、進(jìn)一步診斷和改正程序中潛在的錯(cuò)誤。 調(diào)試活動(dòng)的組成部分: 確定程序中可疑錯(cuò)誤的確切性質(zhì)和位置。 對(duì)程序(設(shè)計(jì),編碼)進(jìn)行修改,排除這個(gè)錯(cuò)誤。,7 .8 .1 調(diào)試過(guò)程,從錯(cuò)誤的外部表現(xiàn)形式入手,確定程序中出錯(cuò)位置; 研究有關(guān)程序,找出錯(cuò)誤的內(nèi)在原因; 修改設(shè)計(jì)和代碼,排除這個(gè)錯(cuò)誤; 重復(fù)進(jìn)行暴露了這個(gè)錯(cuò)誤的原始測(cè)試或某些有關(guān)測(cè)試。,調(diào)試在技術(shù)上的難度 錯(cuò)誤現(xiàn)象與原因所處的位置可能相距甚遠(yuǎn)。當(dāng)其它錯(cuò)誤得到糾正時(shí),這一錯(cuò)誤所表現(xiàn)出的現(xiàn)象可能會(huì)暫時(shí)消失,但并未實(shí)際排除。 非錯(cuò)誤原因(例如,舍入誤差) 不容易發(fā)現(xiàn)的人為錯(cuò)誤。 錯(cuò)誤是由于時(shí)序問(wèn)題引起的,與處理過(guò)程無(wú)關(guān)。 現(xiàn)象是由于難于精確再現(xiàn)的輸人狀態(tài)

35、(例如,實(shí)時(shí)應(yīng)用中輸入順序不確定)引起。 現(xiàn)象可能是周期出現(xiàn)的。在軟、硬件結(jié)合的嵌入式系統(tǒng)中常常遇到。,7. 8. 2 調(diào)試途徑, 強(qiáng)行排錯(cuò)(蠻干法) 效率最低的方法,常見形式: 打印出所有存儲(chǔ)內(nèi)容、代碼 在程序特定部位設(shè)置打印語(yǔ)句 自動(dòng)調(diào)試工具。,回溯法(跟蹤法),根據(jù)錯(cuò)誤癥狀位置,人工沿程序控制流程向回追蹤源代碼。 適用于小程序,路徑數(shù)目很大時(shí)無(wú)法進(jìn)行, 歸納法調(diào)試,一種從特殊現(xiàn)象推斷一般原理的思考方法。,歸納法調(diào)試步驟,收集有關(guān)數(shù)據(jù)。列出所有已知的測(cè)試用例和程序執(zhí)行結(jié)果。 組織數(shù)據(jù)。組織整理數(shù)據(jù),以發(fā)現(xiàn)規(guī)律。 3W IH 形式。 提出假設(shè)。利用分析結(jié)果,設(shè)計(jì)一個(gè)或多個(gè)關(guān)于出錯(cuò)原因的假設(shè)。

36、若提不出假設(shè),則需收集更多數(shù)據(jù)。 證明假設(shè)。把假設(shè)與原始線索或數(shù)據(jù)進(jìn)行比較,若它能完全解釋一切現(xiàn)象,則假設(shè)得到證明;否則,就認(rèn)為假設(shè)不合理、不完全,或是存在多個(gè)錯(cuò)誤,能消除部分錯(cuò)誤, 演繹法調(diào)試,一種從一般原理或前提出發(fā),經(jīng)過(guò)排除和精化的過(guò)程來(lái)推導(dǎo)出結(jié)論的思考方法。,演繹法調(diào)試步驟 列舉所有可能出錯(cuò)原因的假設(shè)。把所有可能的錯(cuò)誤原因列成表。通過(guò)它們,組織、分析現(xiàn)有數(shù)據(jù)。 利用已有的測(cè)試數(shù)據(jù),排除不正確的假設(shè)。仔細(xì)分析已有的數(shù)據(jù),尋找矛盾,力求排除前一步列出的所有原因。如果所有原因都被排除了,則需要補(bǔ)充一些數(shù)據(jù)(測(cè)試用例),以建立新的假設(shè)。 改進(jìn)余下的假設(shè)。對(duì)沒(méi)有被排除的原因,利用已知的線索,進(jìn)一步改進(jìn),使之更具體化,以便可以精確地確定出錯(cuò)位置。 證明余下的假設(shè)。見歸納法第四步。,調(diào) 試 原 則,確定錯(cuò)誤的性質(zhì)和位置的原則 用頭腦去分析思考與錯(cuò)誤征

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論