白盒測(cè)試技術(shù)剖析_第1頁(yè)
白盒測(cè)試技術(shù)剖析_第2頁(yè)
白盒測(cè)試技術(shù)剖析_第3頁(yè)
白盒測(cè)試技術(shù)剖析_第4頁(yè)
白盒測(cè)試技術(shù)剖析_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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、第6章白盒測(cè)試技術(shù)相關(guān)知識(shí)點(diǎn)軟件測(cè)試方法:分為兩類(1) 靜態(tài)測(cè)試:不要求在計(jì)算機(jī)上實(shí)際執(zhí)行所測(cè)程序,主要以一些人工的模擬技術(shù)對(duì)軟件進(jìn)行分析和測(cè)試(2) 動(dòng)態(tài)測(cè)試:通過(guò)輸入一組預(yù)先按照一定的測(cè)試準(zhǔn)則構(gòu)造的實(shí)例數(shù)據(jù)動(dòng)態(tài)運(yùn)行程序,而達(dá)到發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程,特點(diǎn)如下:必須生成測(cè)試數(shù)據(jù)來(lái)運(yùn)行被測(cè)試程序,取得程序運(yùn)行的真實(shí)情況、 動(dòng)態(tài)情況,進(jìn)而進(jìn)行分析測(cè)試質(zhì)量依賴于測(cè)試數(shù)據(jù)生成測(cè)試數(shù)據(jù),分析測(cè)試結(jié)果的工作量大,使開(kāi)展測(cè)試工作費(fèi)時(shí)、費(fèi)力、費(fèi)人動(dòng)態(tài)測(cè)試中涉及多方面工作,人員多,設(shè)備多,數(shù)據(jù)多,要求有較好的管理和工作規(guī)程一. 概述1. 定義白盒測(cè)試:也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,按照程序內(nèi)部的結(jié)構(gòu)對(duì)程序進(jìn)行測(cè)試

2、, 通過(guò)測(cè)試來(lái)檢查產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,檢查程序中的每條通路是否能按照預(yù)定要求正確工作。白盒測(cè)試又稱為邏輯驅(qū)動(dòng)測(cè)試,根據(jù)軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)說(shuō)明文檔生成用于白盒測(cè)試的測(cè)試用例。2. 測(cè)試內(nèi)容把測(cè)試對(duì)象看成是一個(gè)打開(kāi)的盒子,測(cè)試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)相關(guān)信 息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序的所有邏輯路徑進(jìn)行測(cè)試, 通過(guò)不同點(diǎn)檢查程 序的狀態(tài),確定實(shí)際的狀態(tài)與預(yù)期的狀態(tài)一致3. 測(cè)試基本技術(shù)(1) 詞法分析與語(yǔ)法分析(2) 靜態(tài)錯(cuò)誤分析(3) 程序插樁技術(shù)4. 測(cè)試方法(1) 代碼檢查法(2) 靜態(tài)結(jié)構(gòu)分析法(3) 靜態(tài)質(zhì)量度量法(4) 邏輯覆蓋法(5) 基本路徑測(cè)試

3、法(6) 域測(cè)試(7) 符號(hào)測(cè)試(8) Z路徑覆蓋(9) 程序變異5. 黑盒測(cè)試與白盒測(cè)試比較黑盒測(cè)試白盒測(cè)試不涉及程序結(jié)構(gòu)考查程序邏輯結(jié)構(gòu)用軟件規(guī)格說(shuō)明書(shū)生成測(cè)試用例用程序結(jié)構(gòu)信息生成測(cè)試用例可適用于從單元測(cè)試到系統(tǒng)聯(lián)調(diào)適用于單元測(cè)試和集成測(cè)試某些代碼段得不到測(cè)試對(duì)所有邏輯路徑進(jìn)行測(cè)試二. 白盒測(cè)試基本技術(shù)1詞法和語(yǔ)法分析(獲取信息、作用)(1)獲取信息可以獲取軟件組成的重要基本因數(shù),如變量標(biāo)識(shí)符、過(guò)程標(biāo)識(shí)符、常量等組合獲取的基本因數(shù),可以得到軟件的基本信息,如:標(biāo)號(hào)交叉引用表:列出各模塊中出現(xiàn)的全部標(biāo)號(hào)及標(biāo)號(hào)的屬性, 模塊 以外的全局、計(jì)算標(biāo)號(hào)變量交叉引用表:列出變量定義及引用信息,變量的

4、屬性,變量類型 (全局、局部)子程序、宏和函數(shù)表:列出各個(gè)子程序、宏及函數(shù)的屬性,輸入、輸 出參數(shù)信息等價(jià)表:列出在等價(jià)語(yǔ)句和等值語(yǔ)句中出現(xiàn)的全部變量和標(biāo)號(hào)常數(shù)表:列出全部數(shù)字常數(shù)和字符常數(shù)(2)作用直接從表中查出說(shuō)明/使用錯(cuò)誤,如標(biāo)號(hào)交叉引用表、變量交叉引用表 為用戶提供輔助信息,如子程序、宏和函數(shù)表、等價(jià)表、常數(shù)表 用來(lái)做錯(cuò)誤預(yù)測(cè)和程序復(fù)雜度計(jì)算,如操作符和操作數(shù)的統(tǒng)計(jì)表2. 靜態(tài)錯(cuò)誤分析( 類型和單位分析、弓丨用分析、表達(dá)式分析、接口分析 ) 用于確定在源程序中是否有某類錯(cuò)誤或危險(xiǎn)結(jié)構(gòu),包括以下幾種:(1)類型和單位分析對(duì)源程序的類型進(jìn)行檢查,為了強(qiáng)化檢查效果,擴(kuò)充一些新的數(shù)據(jù)類型,進(jìn)行

5、靜態(tài)預(yù)處理程序,分析程序中的類型錯(cuò)誤(2)引用分析對(duì)程序中變量的引用進(jìn)行檢查,發(fā)現(xiàn)引用異常錯(cuò)誤(如變量在定義前 被引用,變量定義后未被引用)。采用深度優(yōu)選的方法遍歷程序流圖的每一條路徑建立引用異常的探測(cè)工具,包括變量定義表和變量引用表(3)表達(dá)式分析對(duì)表達(dá)式進(jìn)行分析,以發(fā)現(xiàn)和糾正在表達(dá)式出現(xiàn)的錯(cuò)誤,如:在表達(dá)式中不正確的使用了括號(hào)造成錯(cuò)誤數(shù)組下標(biāo)越界錯(cuò)誤除數(shù)為零浮點(diǎn)數(shù)計(jì)算的誤差(最復(fù)雜)(4)接口分析接口一致性是程序的靜態(tài)錯(cuò)誤分析和設(shè)計(jì)分析共同研究的題目,接口分析主要對(duì)下內(nèi)容時(shí)進(jìn)行一致性的分析:各模塊之間接口一致性模塊與外部數(shù)據(jù)庫(kù)的接口一致性形參與實(shí)參在類型,數(shù)量,順序,維數(shù),使用上的一致性全

6、局變量和公共數(shù)據(jù)區(qū)在使用上的一致性3 程序插樁技術(shù)(設(shè)計(jì)時(shí)考慮的問(wèn)題、探測(cè)點(diǎn)設(shè)置位置、斷言語(yǔ)句 )(1)概述在動(dòng)態(tài)測(cè)試中,是一種基本的測(cè)試手段,有廣泛的應(yīng)用主要借助向程序中插入操作,來(lái)實(shí)現(xiàn)測(cè)試目的的方法(即向源程序中添 加一些語(yǔ)句(也稱探測(cè)器),實(shí)現(xiàn)對(duì)程序語(yǔ)句的執(zhí)行、變量的變化等情況進(jìn) 行檢查)(2)設(shè)計(jì)時(shí)考慮的問(wèn)題 明確要探測(cè)哪些信息在程序的什么部位設(shè)置探測(cè)點(diǎn) 需要設(shè)計(jì)多少個(gè)探測(cè)點(diǎn)(3)探測(cè)點(diǎn)設(shè)置位置(以Fortran為例) 程序塊的第一個(gè)可執(zhí)行語(yǔ)句之前entry語(yǔ)句的前后有標(biāo)號(hào)的可執(zhí)行語(yǔ)句處循環(huán)語(yǔ)句之后條件語(yǔ)句之后logical if語(yǔ)句之后call語(yǔ)句之后go to語(yǔ)句之后(4)斷言語(yǔ)句

7、在程序中的特定部位插入某些用以判斷變量特性的語(yǔ)句,使得程序執(zhí)行中這些語(yǔ)句得以證實(shí),從而使程序的運(yùn)行特性得到證實(shí),我們把這 些插入的語(yǔ)句稱為斷言語(yǔ)句。三、白盒測(cè)試方法靜態(tài)測(cè)試靜態(tài)測(cè)試:代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋法、基本 路徑測(cè)試法、其他測(cè)試法(域測(cè)試、符號(hào)測(cè)試、Z路徑覆蓋、程序變異)。1. 代碼檢查法(1)目的通過(guò)桌面檢查,代碼審查和走查方式,對(duì)以下內(nèi)容進(jìn)行檢查 檢查代碼和設(shè)計(jì)的一致性 代碼對(duì)標(biāo)準(zhǔn)的遵循、可讀性 代碼邏輯表達(dá)的正確性 代碼結(jié)構(gòu)的合理性 程序編寫與編寫標(biāo)準(zhǔn)的符合性 程序中不安全、不明確和模糊的部分編程風(fēng)格問(wèn)題等(2)代碼檢查方式方式 名稱執(zhí)行人員檢杳內(nèi)容檢

8、杳過(guò)程桌面檢 查程序員對(duì)源程序代碼進(jìn)行分析、檢驗(yàn),并補(bǔ)充相關(guān)的文檔,發(fā) 現(xiàn)程序中的錯(cuò)誤代碼審 查程序員和 測(cè)試員組 成的審查通過(guò)閱讀、討論 和爭(zhēng)議,以程序 進(jìn)行靜態(tài)分析第一步:小組成員提前閱讀設(shè)計(jì)規(guī)格 書(shū)、程序文本等相關(guān)文檔小組的過(guò)程第二步:召開(kāi)程序?qū)彶闀?huì),開(kāi)發(fā)人員讀 程序,審查小組討論、發(fā)現(xiàn)、解決問(wèn)題走杳程序員和 測(cè)試員組 成的審查 小組通過(guò)邏輯運(yùn)行 程序,發(fā)現(xiàn)問(wèn)題第一步:小組成員提前閱讀設(shè)計(jì)規(guī)格書(shū)、程序文本等相關(guān)文檔第二步:利用測(cè)試用例,使程序邏輯運(yùn) 行,記錄程序的蹤跡,發(fā)現(xiàn)、討論、解 決問(wèn)題(3) 代碼檢查項(xiàng)目(采用分析技術(shù))檢查變量的交叉引用表:檢查未說(shuō)明的變量和違反了類型規(guī)定的變 量

9、,變量的引用和使用情況檢查標(biāo)號(hào)的交叉引用表:驗(yàn)證所有標(biāo)號(hào)的正確性 檢查子程序、宏、函數(shù):驗(yàn)證每次調(diào)用與所調(diào)用位置是否正確,調(diào)用 的子程序、宏、函數(shù)是否存在,參數(shù)是否一致等價(jià)性檢查:檢查全部等價(jià)變量的類型的一致性 常量檢查:確認(rèn)常量的取值和數(shù)制、數(shù)據(jù)類型 標(biāo)準(zhǔn)檢查:檢查程序中是否違反標(biāo)準(zhǔn)的冋題 風(fēng)格檢查:檢查程序的設(shè)計(jì)風(fēng)格比較控制流:比較設(shè)計(jì)控制流圖和實(shí)際程序生成的控制流圖的差異 選擇、激活路徑:在設(shè)計(jì)控制流圖中選擇某條路徑,到實(shí)際的程序中 激活這條路徑,如果不能激活,則程序可能有錯(cuò)對(duì)照程序的規(guī)格說(shuō)明,詳細(xì)閱讀源代碼,比較實(shí)際的代碼,從差異中 發(fā)現(xiàn)程序的問(wèn)題和錯(cuò)誤補(bǔ)充文檔根據(jù)以上檢查項(xiàng)目,可以編

10、制代碼規(guī)則,規(guī)范和檢查表等作為測(cè)試用例(4) 編碼規(guī)范程序編寫過(guò)程中必須遵守的規(guī)則,規(guī)定代碼的語(yǔ)法格式、語(yǔ)法規(guī)則, 如排版、注釋、標(biāo)識(shí)符命名、可讀性、變量、函數(shù)、過(guò)程、可測(cè)性、 程序效率、質(zhì)量保證、代碼編輯、編譯、審查、代碼測(cè)試、維護(hù)、宏 等各方面的編碼要求(5) 代碼檢查規(guī)則對(duì)程序邏輯結(jié)構(gòu)檢查時(shí),所規(guī)定的規(guī)則,形成(6) 缺陷檢查表主要包括一些容易出錯(cuò)的地方和在以往工作中遇到的典型錯(cuò)誤,形成 表格形式重要性審查項(xiàng)結(jié)論文件結(jié)構(gòu)重要:頭文件和定義文件的名稱是否合理2. 靜態(tài)結(jié)構(gòu)分析法在靜態(tài)結(jié)構(gòu)分析中,測(cè)試者通過(guò) 使用測(cè)試工具 分析程序源代碼的系統(tǒng)結(jié) 構(gòu)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)接口、內(nèi)部控制邏輯等內(nèi)部結(jié)構(gòu)

11、,生成函數(shù)調(diào)用關(guān)系圖、模塊控制流圖、內(nèi)部文件調(diào)用關(guān)系圖等各種圖形圖表,清晰地標(biāo) 識(shí)整個(gè)軟件的組成結(jié)構(gòu),便于理解,通過(guò)分析這些圖表,檢查軟件有沒(méi) 有存在缺陷或錯(cuò)誤;包括控制流分析、數(shù)據(jù)據(jù)流分析、接口分析、表達(dá) 式分析(1)函數(shù)調(diào)用關(guān)系圖: 通過(guò)應(yīng)用程序各函數(shù)之間的調(diào)用關(guān)系展示了系統(tǒng)的 結(jié)構(gòu)。列出所有函數(shù),用連線表示調(diào)用關(guān)系,作用: 可以檢查函數(shù)的調(diào)用關(guān)系是否正確 是否存在孤立的函數(shù)而沒(méi)有被調(diào)用 明確函數(shù)被調(diào)用的頻繁度,對(duì)調(diào)用頻繁的函數(shù)可以重點(diǎn)檢查(2)模塊控制流圖:由許多結(jié)點(diǎn)和連接結(jié)點(diǎn)的邊組成的圖形,其中每個(gè)結(jié) 點(diǎn)代表一條或多條語(yǔ)句,邊表示控制流向,可以直觀地反映出一個(gè)函 數(shù)的內(nèi)部結(jié)構(gòu)。* 例子

12、 1GIS 軟件:存在無(wú)法執(zhí)行的死代碼;有多個(gè)出口,可能沒(méi)有在所 有出口進(jìn)行內(nèi)存釋放與回收,有內(nèi)存泄露的可能*例子2-MIS軟件:有多個(gè)出口,存在內(nèi)存泄露的可能;有10邏輯判斷結(jié)點(diǎn),易出現(xiàn)邏輯錯(cuò)誤,降低可靠性,可能會(huì)破壞對(duì)CPUS作進(jìn)行優(yōu)化的處理,影響其運(yùn)行性能3 靜態(tài)質(zhì)量度量法(1)軟件質(zhì)量:根據(jù) ISO/IEC9126 國(guó)際標(biāo)準(zhǔn),包括以下六個(gè)方面: 功能性( functionality )可靠性( reliability ) 可用性( usability ) 有效性( efficiency ) 可維護(hù)性( maintainability ) 輕便性( portability )(2)質(zhì)量度

13、量模型(從上到下)質(zhì)量因素( Factors ):與分類標(biāo)準(zhǔn)的計(jì)算方式相似,依據(jù)各分類標(biāo)準(zhǔn) 取值組合權(quán)重方法來(lái)計(jì)算,依據(jù)結(jié)果將軟件質(zhì)量分為四個(gè)等級(jí),與分 類標(biāo)準(zhǔn)等級(jí)內(nèi)容相同 分類標(biāo)準(zhǔn)( criteria ):對(duì)某一軟件質(zhì)量分為不同的分類標(biāo)準(zhǔn),每個(gè) 分類標(biāo)準(zhǔn)由一系列度量規(guī)則組成,每個(gè)規(guī)則分配一個(gè)權(quán)重,每個(gè)分類 標(biāo)準(zhǔn)的取值由規(guī)則的取值與權(quán)重值計(jì)算得出, 依據(jù)結(jié)果將軟件質(zhì)量分 為四個(gè)等級(jí):優(yōu)秀( excellent ):符合本模型框加中的所有規(guī)則(可以接受) 良好(good):未大量偏離模型框架中的規(guī)則(可以接受) 一般( fair ):違背了模型框架中的大量規(guī)則(可以接受) 較差(poor):無(wú)法

14、保障正常的軟件可維護(hù)性(不可以接受) 度量規(guī)則( Metrics ):使用代碼行數(shù)、注釋頻度等參數(shù)度量軟件各種 行為屬性四 白盒測(cè)試方法-動(dòng)態(tài)測(cè)試(即設(shè)計(jì)測(cè)試用例的方法) 1 白盒測(cè)試的動(dòng)態(tài)測(cè)試原則 -根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測(cè)試用例(1)保證每個(gè)模塊的所有獨(dú)立路徑至少被使用一次(2)對(duì)所有的邏輯值均測(cè)試 true 和 false ( 3) 上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)(4) 檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性 2 邏輯覆蓋法( 1 ) 概述 邏輯覆蓋是通過(guò)對(duì)程序邏輯結(jié)構(gòu)的遍歷實(shí)現(xiàn)程序的覆蓋2) 分類依據(jù)覆蓋源程序語(yǔ)句的詳盡程度 語(yǔ)句覆蓋 SC(Statement Coverage ) 判定覆

15、蓋 DC(Decision coverage ) 條件覆蓋 CC(Condition Coverage ) 條件判定組合覆蓋 CDC(Condition/ Decision Coverage)多條件覆蓋 MCC ( Multiple Condition Coverage)修改條件判定覆蓋 MCDC( Multiple Condit ion Decision Coverage )3) 語(yǔ)句覆蓋( SC) 選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中 每條語(yǔ)句 至少執(zhí)行一次 缺點(diǎn):對(duì)程序執(zhí)行邏輯的覆蓋很低4) 判定覆蓋( DC) 設(shè)計(jì)足夠多的測(cè)試用例, 使得 程序中的每一個(gè)判定 至少獲得一次真 值和假值,或

16、者使得程序中的每一個(gè)取真分支或取假分 支至少經(jīng)歷一次,因此又稱分支覆蓋如: A&(B|C),A|(B|C)A=T,B=T,C=TA=F,B=F,C=F 可以滿足語(yǔ)句覆蓋 缺點(diǎn):主要對(duì)整個(gè)表達(dá)式最終取值進(jìn)行度量,忽略了表達(dá)式內(nèi)部取值5) 條件覆蓋( CC) 設(shè)計(jì)足夠多的測(cè)試用例, 使得每一判定語(yǔ)句中每個(gè)邏輯條件的可能值 至少滿足一次。如: A&(B|C),A|(B|C)A=T,B=F,C=TA=F,B=T,C=F 不能夠滿足判定覆蓋。 條件覆蓋只能保證每個(gè)條件至少有一次為真, 而不考慮所有的判定結(jié) 果。6) 條件判定組合覆蓋( CDC) 設(shè)計(jì)足夠多的測(cè)試用例,使得判定中的每個(gè)條件的所有可能(真

17、/ 假) 至少出現(xiàn)一次,并且每個(gè)判定本身的判定結(jié)果也至少出現(xiàn)一次如:A&(B|C),A|(B|C)A=T,B=T,C=T A=F,B=F,C=F 缺點(diǎn):沒(méi)有考慮單個(gè)判定對(duì)整體結(jié)果的影響,無(wú)法發(fā)現(xiàn)邏輯錯(cuò)誤7) 多條件覆蓋( MCC) 也稱條件組合覆蓋,設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件的 各種可能組合都至少出現(xiàn)一次(以數(shù)軸形式劃分區(qū)域,提取交集,建 立最少的測(cè)試用例)A&(B|C),A|(B|C)ABCTFTTFFFFFFFT滿足條件覆蓋一定滿足判定覆蓋、條件覆蓋、條件判定組合覆蓋 缺點(diǎn):判定語(yǔ)句較多時(shí),條件組合值比較多(8)修正條件判定覆蓋(MCD)每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至

18、少要被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次程序的判定被分解為通過(guò)邏輯操作符(and,or)連接的bool條件, 每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立的練習(xí)1:采用多條件覆蓋方法,對(duì)下程序進(jìn)行白盒測(cè)試用例設(shè)計(jì)if (a 1 )&( b= = 0)x=x/a;if ( a = = 2)| (x 1 )x=x+1;六種邏輯覆蓋的強(qiáng)弱關(guān)系在外面很多的教程都認(rèn)為這六種邏輯覆蓋從弱到強(qiáng)的排列順序是:語(yǔ)句覆蓋- 判定覆蓋- 條件覆蓋- 判定-條件覆蓋- 條件組合覆蓋- 路徑覆蓋 但經(jīng)過(guò)上面的分析,它們之間的關(guān)系實(shí)際上可以用下圖表示:達(dá)到100% CDCg求就一定能夠滿足100% DC的要求 達(dá)

19、到100% DC要求就一定能夠滿足100% SC的要求達(dá)到100% CD(要求就一定能夠滿足100% CC的要達(dá)到100% MCD要求就一定能夠滿足100% DC的要求達(dá)到100%路徑覆蓋要求就一定能夠滿足100% DC的要求而路徑覆蓋很難在該圖表示出來(lái)。覆蓋是一種白盒測(cè)試方法,測(cè)試人員必須擁有程序的規(guī)格說(shuō)明和程序清單, 以程 序的內(nèi)部結(jié)構(gòu)為基礎(chǔ),來(lái)設(shè)計(jì)測(cè)試案例。其基本準(zhǔn)則是則測(cè)試案例來(lái)盡可能多地 覆蓋程序的內(nèi)部邏輯結(jié)構(gòu),發(fā)現(xiàn)其中的錯(cuò)誤和問(wèn)題。所以,覆蓋測(cè)試一般應(yīng)用在 軟件測(cè)試的早期,即單元測(cè)試階段。覆蓋的幾種方法或策略如表1所列。表1幾種典型的覆蓋策略覆蓋策略定義語(yǔ)句覆蓋(sc)在制定測(cè)試案

20、例時(shí),使程序中的每個(gè)語(yǔ)句都至少執(zhí)行 1次。其缺點(diǎn)是不能發(fā)現(xiàn)某些邏輯錯(cuò)誤判定覆蓋執(zhí)行足夠的測(cè)試案例,使得程序中每個(gè)判定都獲得一 次“真”值和“假”值,或者說(shuō)使每一個(gè)分支都至少 通過(guò)1次條件覆蓋執(zhí)行足夠的測(cè)試案例,使得判定中的每個(gè)條件獲得各 種可能的結(jié)果判定/條件覆蓋執(zhí)行足夠的測(cè)試案例,使得判定中的每個(gè)條件取得各 種可能的值,并使得每個(gè)判定取得各種可能的結(jié)果條件組合覆蓋執(zhí)行足夠的測(cè)試案例,使得每個(gè)判定中的條件的各種 組合都至少出現(xiàn)1次。其特點(diǎn)是覆蓋較充分,滿足條 件組合覆蓋的測(cè)試案例也一定滿足判定覆蓋、條件覆 蓋和判定/條件覆蓋。修改的條件/判斷覆蓋(MCD)每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至

21、少要被 調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至 少轉(zhuǎn)換一次程序的判定被分解為通過(guò)邏輯操作符(and,or )連 接的bool條件,每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立 的從以上簡(jiǎn)要介紹可看出,這幾種覆蓋策略的嚴(yán)格程序有如下趨勢(shì):語(yǔ)甸覆蓋判定覆蓋 條件覆殺 判定/條件覆蓋條件織合程蓋弱強(qiáng)嚴(yán)格程度其它一些覆蓋策略還包括:修改的條件/判斷覆蓋(通常簡(jiǎn)稱為MCD) 路徑覆蓋、函數(shù)覆蓋、調(diào)用覆蓋、線性代碼順序和跳轉(zhuǎn)覆蓋、數(shù)據(jù)流覆蓋、目標(biāo) 代碼分支覆蓋、循環(huán)覆蓋、關(guān)系操作符覆蓋等。隨著軟件規(guī)模的增長(zhǎng),實(shí)現(xiàn)全面 的覆蓋所需的測(cè)試案例的數(shù)目也越來(lái)越龐大, 因此根據(jù)被測(cè)軟件對(duì)象的特點(diǎn)選擇 適當(dāng)?shù)母采w策略是非常

22、重要的;同時(shí),要確定合理測(cè)試目標(biāo),達(dá)到100%勺覆蓋 往往要付出很大的代價(jià),應(yīng)該同形式化評(píng)審等方法結(jié)合,以發(fā)現(xiàn)更多的軟件故障。覆蓋測(cè)試工具選取:要取得較好的覆蓋測(cè)試效果,需要借助一定的工具軟件。這些工具軟件一般 具備如下的功能特點(diǎn),可彌補(bǔ)人為測(cè)試的缺陷: 分析軟件內(nèi)部結(jié)構(gòu),幫助制定覆蓋策略及設(shè)計(jì)測(cè)試案例; 與適當(dāng)?shù)木幾g器結(jié)合,對(duì)被測(cè)軟件實(shí)施自動(dòng)插裝,以便在其運(yùn)行過(guò)程中生成覆 蓋信息并收集這些信息; 根據(jù)搜集的覆蓋信息計(jì)算覆蓋率,幫助測(cè)試人員找到未被覆蓋的軟件部位, 以 改進(jìn)測(cè)試案例提高覆蓋率。在利用工具進(jìn)行動(dòng)態(tài)覆蓋測(cè)試時(shí),需要3個(gè)要素:測(cè)試用例、插裝過(guò)的被測(cè) 代碼、搜集覆蓋信息并進(jìn)行分析的工具

23、本身。 代碼插裝由工具自動(dòng)完成,通過(guò)執(zhí) 行測(cè)試用例,再由工具搜集覆蓋信息并進(jìn)行分析, 就可以看到覆蓋率指標(biāo)了。圖 中展示實(shí)現(xiàn)覆蓋測(cè)試的基本過(guò)程。3. 基本路徑覆蓋(1) 概述在程序控制流圖的基礎(chǔ)上,通過(guò)分析程序控制流圖的環(huán)路復(fù)雜性,導(dǎo) 出基本可執(zhí)行路徑的集合,然后據(jù)此設(shè)計(jì)測(cè)試用例設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中程序的每一條可執(zhí)行語(yǔ)句至少執(zhí) 行一次(2) 程序控制流圖控制流圖是描述程序控制流的一種方式圖形符號(hào):圓圈代表一個(gè)結(jié)點(diǎn) 表示一個(gè)或多個(gè)無(wú)分支的語(yǔ)句或源程 序語(yǔ)句邊和點(diǎn)圈定的部分叫做區(qū)域。當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的一個(gè)部分也 應(yīng)記為一個(gè)區(qū)域判斷語(yǔ)句中的條件為復(fù)合條件時(shí),即條件表達(dá)式由一個(gè)或多個(gè)邏

24、輯運(yùn) 算符連接的邏輯表達(dá)式(a and b ),則需要改變復(fù)合條件的判斷為一 系列只有單個(gè)條件的嵌套的判斷圖形符號(hào)圖所示(3) 程序環(huán)路復(fù)雜性 程序的環(huán)路復(fù)雜性即 McCabe復(fù)雜性度量,簡(jiǎn)單的定義為控制流圖的 區(qū)域數(shù) 從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù), 這 是確保程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目 的上界 獨(dú)立路徑:包括一組以前沒(méi)有處理的語(yǔ)句或條件的一條路徑 通常環(huán)路復(fù)雜性可用以下三種方法求得: 將環(huán)路復(fù)雜性定義為控制流圖中的區(qū)域數(shù)。設(shè)E為控制流圖的邊數(shù),N為圖的結(jié)點(diǎn)數(shù),貝U定義環(huán)路復(fù)雜性為V(G) =E N+ 2。若設(shè)P為控制流圖中的判定結(jié)點(diǎn)數(shù),則

25、有 V(G) = P+ 1。思考題: 1、什么是環(huán)形復(fù)雜度? 環(huán)形復(fù)雜度就是一種為程序邏輯復(fù)雜性提供定量尺度的軟件度量。 將該度量 用于基本路徑方法, 它可以提供程序基本集的獨(dú)立路徑數(shù)量和確保所有語(yǔ)句至少 執(zhí)行一次的上界。( 4) 基本路徑測(cè)試步驟 以詳細(xì)設(shè)計(jì)或源代碼為基礎(chǔ),導(dǎo)出程序的控制流圖 計(jì)算得到控制流圖G的環(huán)路復(fù)雜性v(g) 確定線性無(wú)關(guān)的路徑的基本集 生成測(cè)試用例,確保基本路徑集中每條路徑的執(zhí)行 五、其它白盒測(cè)試方法1 、域測(cè)試(1) 概述 是一種基于程序結(jié)構(gòu)的測(cè)試方法,基于對(duì)程序輸入空間(域)的分析, 選擇適的測(cè)試點(diǎn)進(jìn)行測(cè)試(2) Howden錯(cuò)誤分類一相對(duì)于程序路徑分類 域錯(cuò)誤:

26、程序的控制流存在錯(cuò)誤,對(duì)于某一特定的輸入可能執(zhí)行的是 一條錯(cuò)誤路徑,這種錯(cuò)誤稱為路徑錯(cuò)誤,也叫做域錯(cuò)誤 計(jì)算型錯(cuò)誤:對(duì)于特定輸入執(zhí)行的路徑正確,但賦值語(yǔ)句的錯(cuò)誤導(dǎo)致 輸出結(jié)果錯(cuò)誤,稱為計(jì)算型錯(cuò)誤 丟失路徑錯(cuò)誤:由于程序中的某處少了一個(gè)判定謂詞而引起的( 3) 測(cè)試?yán)硐虢Y(jié)果: 檢驗(yàn)輸入空間的每一個(gè)輸入元素是否都產(chǎn)生正確的結(jié)果( 4) 缺點(diǎn) 為進(jìn)行域測(cè)試對(duì)程序提出的限制過(guò)多 當(dāng)程序存在很多路徑時(shí),所需的測(cè)試點(diǎn)很多2、符號(hào)測(cè)試( 1 ) 概述基本思想是允許程序的輸入不僅僅是具體的數(shù)值數(shù)據(jù), 而且包括符號(hào) 值,符號(hào)值可以是基本的符號(hào)變量值, 也可以是符號(hào)變量值的表達(dá)式。 符號(hào)測(cè)試執(zhí)行的是代數(shù)運(yùn)算,可以

27、作為普通測(cè)試的一個(gè)擴(kuò)充 符號(hào)測(cè)試可以看作是程序測(cè)試和程序驗(yàn)證的一個(gè)折衷辦法( 2) 測(cè)試?yán)硐肭闆r:程序中僅有有限的幾條執(zhí)行路徑,如果都完成了符號(hào)測(cè) 試,就可把握的確認(rèn)程序的正確性了( 3) 缺點(diǎn)分支問(wèn)題二義性問(wèn)題大程序問(wèn)題3、Z路徑覆蓋( 1)概述對(duì)循環(huán)機(jī)制進(jìn)行簡(jiǎn)化,減少路徑的數(shù)量,使得覆蓋所有路徑成為可能, 簡(jiǎn)化循環(huán)意義下的路徑覆蓋稱為 Z路徑覆蓋( 2)循環(huán)簡(jiǎn)化:限制循環(huán)次數(shù),只考慮循環(huán)一次或零次情況4、程序變異( 1) 概述是一種錯(cuò)誤驅(qū)動(dòng)測(cè)試 錯(cuò)誤驅(qū)動(dòng)測(cè)試:指該方法是針對(duì)某類特定程序錯(cuò)誤的,即專門測(cè)試某類 錯(cuò)誤是否存在錯(cuò)誤驅(qū)動(dòng)測(cè)試分類:程序強(qiáng)變異和程序弱變異(2) 優(yōu)點(diǎn):便于集中目標(biāo)對(duì)軟

28、件危害最大的可能錯(cuò)誤,提高測(cè)試效率,降低 成本六 白盒測(cè)試綜合策略1 白盒測(cè)試中測(cè)試方法的選擇策略( 1) 在測(cè)試中,首先盡量使用測(cè)試工作進(jìn)行靜態(tài)結(jié)構(gòu)分析(2)采用先靜態(tài)后動(dòng)態(tài)的組合方式,先進(jìn)行靜態(tài)結(jié)構(gòu)分析, 代碼檢查和靜態(tài) 質(zhì)量度量,然后現(xiàn)進(jìn)行覆蓋測(cè)試(3)利用靜態(tài)結(jié)構(gòu)分析的結(jié)果, 通過(guò)代碼檢查和動(dòng)態(tài)測(cè)試的方法對(duì)結(jié)果進(jìn)一 步確認(rèn),使測(cè)試工作更為有效(4)覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),使用基本路徑測(cè)試達(dá)到語(yǔ)句覆蓋標(biāo)準(zhǔn); 對(duì)于重點(diǎn)模塊,應(yīng)使用多種覆蓋標(biāo)準(zhǔn)衡量代碼的覆蓋率( 5) 不同測(cè)試階段,側(cè)重點(diǎn)不同單元測(cè)試:以代碼檢查、邏輯覆蓋 集成測(cè)試:增加靜構(gòu)結(jié)構(gòu)分析、靜態(tài)質(zhì)量度量 系統(tǒng)測(cè)試:根據(jù)黑盒測(cè)試

29、結(jié)果,采用白盒測(cè)試2 最少測(cè)試用例數(shù)計(jì)算將構(gòu)成循環(huán)操作的重復(fù)型結(jié)構(gòu)用選擇結(jié)構(gòu)代替,因此在N-S圖中只存 在順序和分支操作N-S圖按分支結(jié)構(gòu)分層,整個(gè)程序的最少測(cè)試用例數(shù)為每個(gè)分層中最 少測(cè)試用例數(shù)的乘積3 測(cè)試覆蓋標(biāo)準(zhǔn)Foster的ESTC/覆蓋標(biāo)準(zhǔn)Woodwarc等人的層次LCSAJ覆蓋標(biāo)準(zhǔn)七、如何挑選白盒測(cè)試工具 白盒測(cè)試目前主要用在具有高可靠性要求的軟件領(lǐng)域, 例如:軍工軟件、 航天航空軟件、 工業(yè)控制軟件等等。 白盒測(cè)試工具在選購(gòu)時(shí)應(yīng)當(dāng)主要是對(duì)開(kāi) 發(fā)語(yǔ)言的支持、代碼覆蓋的深度、嵌入式軟件的測(cè)試、測(cè)試的可視化等。 對(duì)開(kāi)發(fā)語(yǔ)言的支持: 白盒測(cè)試工具是對(duì)源代碼進(jìn)行的測(cè)試, 測(cè)試的主要內(nèi)容 包

30、括詞法分析與語(yǔ)法分析、 靜態(tài)錯(cuò)誤分析、 動(dòng)態(tài)檢測(cè)等。 但是對(duì)于不同的開(kāi) 發(fā)語(yǔ)言,測(cè)試工具實(shí)現(xiàn)的方式和內(nèi)容差別是較大的。 目前測(cè)試工具主要支持的開(kāi)發(fā)語(yǔ)言包括:標(biāo)準(zhǔn) C、C、Visual C H、Java、Visual J + +等。 下表為不同公司的不同類型的測(cè)試工具列表:表1-1測(cè)試工具分類功能測(cè)試性能測(cè)試白盒測(cè)試管理缺陷管理MIQTPWINRUNNERLOADRUNNERTESTDIRECTORRATIONALROBOTROBOTPURIFYTESTMANAGERCLEARQUESTCOMPUWAREQARUNQALOADDEVPARTNEFtQACENTERTRACKRECORTELELO

31、GICLOGISCOPETELELOGICDOORSPARASOFTC+TESTJTESTRADVIEWWEBLOADTESTVIEWMANAGERMICROSOFTWASSUNJUNIT從表中我們可以看到, RAIONAL公司,COMPUWA公司,TELELOGIC公 司,PARASOF公司和SUN公司都有自己研發(fā)的百盒測(cè)試工具,其中 PARASOF公 司是專門做百盒測(cè)試工具的。八、白盒測(cè)試之基本路徑測(cè)試法(獨(dú)立路徑覆蓋法)詳介白盒測(cè)試的測(cè)試方法有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏 輯覆蓋法、基本路徑測(cè)試法、域測(cè)試、符號(hào)測(cè)試、Z路徑覆蓋、程序變異。其中運(yùn)用最為廣泛的是基本路徑測(cè)試

32、法。基本路徑測(cè)試法是在程序控制流圖的基礎(chǔ)上, 通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜 性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中程序的每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次。 在程序控制流圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí) 行路徑集合,從而設(shè)計(jì)測(cè)試用例。包括以下 4個(gè)步驟和一個(gè)工具方法:1. 程序的控制流圖:描述程序控制流的一種圖示方法。2. 程序圈復(fù)雜度:McCabe復(fù)雜性度量。從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基 本路徑集合中的獨(dú)立路徑條數(shù),這是確定程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所 必須的測(cè)試用例數(shù)目的上界。3. 導(dǎo)出測(cè)試用例:根據(jù)圈復(fù)雜度和程序結(jié)構(gòu)設(shè)計(jì)用例

33、數(shù)據(jù)輸入和預(yù)期結(jié)果。4. 準(zhǔn)備測(cè)試用例:確保基本路徑集中的每一條路徑的執(zhí)行。工具方法:圖形矩陣:是在基本路徑測(cè)試中起輔助作用的軟件工具,利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。程序的控制流圖:描述程序控制流的一種圖示方法。圓圈稱為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無(wú)分支的語(yǔ)句或源程序語(yǔ)句QAYO顒序結(jié)構(gòu)”IF詒擇結(jié)料While循環(huán)結(jié)構(gòu)*CASE多分支絡(luò)構(gòu)*U嗣循環(huán)納a流圖只有二種圖形符號(hào):圖中的每一個(gè)圓稱為流圖的結(jié)點(diǎn),代表一條或多條語(yǔ)句。 流圖中的箭頭稱為邊或連接,代表控制流任何過(guò)程設(shè)計(jì)都要被翻譯成控制流圖。如何根據(jù)程序流程圖畫(huà)出控制流程圖? 在將程序流程圖簡(jiǎn)化成控制流圖時(shí),應(yīng)注意: n在選擇

34、或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。n邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為 一個(gè)區(qū)域。如下圖所示n如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(OR, AND, NAND,NOR)連接的復(fù)合條件表達(dá)式,則需要改為一系列只有單條件的嵌套的判斷。例如:1 if a or b2 x3 else4 y對(duì)應(yīng)的邏輯為:判所結(jié)點(diǎn)獨(dú)立路徑:至少沿一條新的邊移動(dòng)的路徑路徑1: ITh路徑厶 1-2-3-4-5-10-1-1 開(kāi)徑3m 上2二3弋-STOT-lh 路 4: 1-2-3-6-7-9-10-1-11*-對(duì)以上路徑的遍歷,就 是至少一次地執(zhí)行了 程序中的所有語(yǔ)句基

35、本路徑測(cè)試法的步驟:o第一步:畫(huà)出控制流圖流程圖用來(lái)描述程序控制結(jié)構(gòu)。可將流程圖映射到一個(gè)相應(yīng)的流圖(假設(shè)流程圖的菱形決定框中不包含復(fù)合條件)。在流圖中,每一個(gè)圓,稱為流圖的結(jié)點(diǎn), 代表一個(gè)或多個(gè)語(yǔ)句。一個(gè)處理方框序列和一個(gè)菱形決測(cè)框可被映射為一個(gè)結(jié)點(diǎn),流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條 邊必須終止于一個(gè)結(jié)點(diǎn),即使該結(jié)點(diǎn)并不代表任何語(yǔ)句(例如:if-else-then結(jié)構(gòu))。由邊和結(jié)點(diǎn)限定的范圍稱為區(qū)域。計(jì)算區(qū)域時(shí)應(yīng)包括圖外部的范圍。畫(huà)出其程序流程圖和對(duì)應(yīng)的控制流圖如下第二步:計(jì)算圈復(fù)雜度圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序

36、的基本的獨(dú)立路徑數(shù)目,為確保所有語(yǔ)句至少執(zhí)行一次的測(cè)試數(shù)量的上 界。獨(dú)立路徑必須包含一條在定義之前不曾用到的邊。有以下三種方法計(jì)算圈復(fù)雜度:流圖中區(qū)域的數(shù)量對(duì)應(yīng)于環(huán)型的復(fù)雜性;給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2, E是流圖中邊的數(shù)量,N 是流圖中結(jié)點(diǎn)的數(shù)量;給定流圖G的圈復(fù)雜度V(G),定義為V(G)=P+1, P是流圖G中判定結(jié)點(diǎn)的 數(shù)量。對(duì)疸上面圖中的間夏希虞,計(jì)算如下 流圈中有四個(gè)區(qū)域:敘 V(G) = W 條邊-8 結(jié)點(diǎn) + 2=4;- V(G)=3判定結(jié)點(diǎn) +1 = 4 第三步:導(dǎo)出測(cè)試用例根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑。(一條獨(dú)立路徑是指,和其 他的

37、獨(dú)立路徑相比,至少引入一個(gè)新處理語(yǔ)句或一個(gè)新判斷的程序通路。 V(G) 值正好等于該程序的獨(dú)立路徑的條數(shù)。)U路徑1:4-14U路徑2:4-6-7-14U路徑3:4-6-8-10-13414U路徑4:4-6-8-11-13414根據(jù)上面的獨(dú)立路徑,去設(shè)計(jì)輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑。o第四步:準(zhǔn)備測(cè)試用例為了確保基本路徑集中的每一條路徑的執(zhí)行, 根據(jù)判斷結(jié)點(diǎn)給出的條件,選 擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測(cè)試到, 滿足上面例子基本路徑集的測(cè)試 用例是: 舉例說(shuō)明:例:下例程序流程圖描述了最多輸入 50個(gè)值(以-1作為輸入結(jié)束標(biāo)志), 計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。x

38、 =1-jawMinfcn2+t -1 1 +b步驟2:確定環(huán)形復(fù)雜性度量 V(G):1) V(G)= 6 (個(gè)區(qū)域)2) V(G)=E - N+2=1 & 12+2=6其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù);3) V(G)=P+仁 5+ 仁6路徑 1:1-2-9-10-12路徑 2:1-2-9-11-12路徑 3:1-2-3-9-10-12路徑 4: 1-2-3-4-5-8- 2路徑 5: 1-2-3-4-5-6-8-2路徑 6: 1-2-3-4-5-6-7-8- 2步驟 4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑 至少執(zhí)行一次。1) 路徑 1(1-2-9-10-12) 的測(cè)試

39、用例:scorek= 有效分?jǐn)?shù)值,當(dāng) k i ;scorei= - 1,2 i 50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n 1、總分sum和平均分 average 。2) 路徑 2(1-2-9-11-12) 的測(cè)試用例:score 1 =- 1 ;期望的結(jié)果:average =- 1 ,其他量保持初值。3) 路徑 3(1-2-3-9-10-12)的測(cè)試用例:輸入多于 50 個(gè)有效分?jǐn)?shù), 即試圖處理 51 個(gè)分?jǐn)?shù),要求前 51 個(gè)為有效分?jǐn)?shù) ; 期望結(jié)果:n仁50且算出正確的總分和平均分。4) 路徑4(1-2-3-4-5-8-2)的測(cè)試用例:scorei= 有效分?jǐn)?shù),當(dāng) i50;sc

40、orek0 , k i ;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù)n 1、總分sum和平均分 average 。舉例說(shuō)明:例:下例程序流程圖描述了最多輸入 50個(gè)值(以-1作為輸入結(jié)束標(biāo)志), 計(jì)算其中有效的學(xué)生分?jǐn)?shù)的個(gè)數(shù)、總分?jǐn)?shù)和平均值。x =1-jawMinfcn2+t -1 1 +b步驟2:確定環(huán)形復(fù)雜性度量 V(G):1) V(G)= 6 (個(gè)區(qū)域)2) V(G)=E - N+2=1 & 12+2=6其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù);3) V(G)=P+仁 5+ 仁6路徑 1: 1-2-9-10-12路徑 2: 1-2-9-11-12路徑 3: 1-2-3-9-10-12路徑 4

41、: 1-2-3-4-5-8- 2路徑 5: 1-2-3-4-5-6-8-2路徑 6: 1-2-3-4-5-6-7-8-2步驟4:為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路徑 至少執(zhí)行一次。1) 路徑1(1-2-9-10-12)的測(cè)試用例: scorek=有效分?jǐn)?shù)值,當(dāng)k i ;scorei= 1, 2 i 50;期望結(jié)果:根據(jù)輸入的有效分?jǐn)?shù)算出正確的分?jǐn)?shù)個(gè)數(shù) n 1、總分sum和平均 分 average。2) 路徑2(1-2-9-11-12)的測(cè)試用例:score 1 =- 1 ;期望的結(jié)果:average =- 1 ,其他量保持初值。3) 路徑3(1-2-3-9-10-12)的

42、測(cè)試用例:輸入多于50個(gè)有效分?jǐn)?shù),即試圖處理51個(gè)分?jǐn)?shù),要求前51個(gè)為有效分?jǐn)?shù); 期望結(jié)果:n仁50且算出正確的總分和平均分。4) 路徑4(1-2-3-4-5-8-2)的測(cè)試用例:scorei=有效分?jǐn)?shù),當(dāng)i50;scorek0 , k=)4. m_oper.SetCurSel(0);5. else6. 7. if (temp =)8. m_oper.SetCurSel(1);9. else10. 11. if ( temp =)12. m_oper.SetCurSel(2);13. else14. 15. if( temp =)16. m_oper.SetCurSel(3);17. else

43、18. 19. if ( temp =1124耒J 26 27 -x2826. 27. return;28. 1 畫(huà)出這段代碼的控制流圖,女口 4-9所示:2 根據(jù)控制流圖,計(jì)算環(huán)路復(fù)雜度 V(G)=22-18+2=6。3 導(dǎo)出測(cè)試用例,列出路徑:Path1 : 2-3-4-27-28Path2 : 2-3-7-8-26-27-28Path3 : 2-3-7-11-12-25-26-27-28Path4 : 2-3-7-11-15-16-24-25-26-27-28Path5 : 2-3-7-11-15-19-20-23-24-25-26-27-28Path6 : 2-3-7-11-15-19

44、-22-23-24-25-26-27-284 設(shè)計(jì)測(cè)試用例根據(jù)第3步中給出的路徑,下面設(shè)計(jì)測(cè)試用例列在表4-9中傳入?yún)?shù)預(yù)期調(diào)用Path 1ReadPara (” = ”)m_oper.SetCurSel(0)Path 2ReadPara (” ”)m_oper.SetCurSel(1)Path 3ReadPara (” = ”)m_oper.SetCurSel(2)Path 4ReadPara (” ”)m_oper.SetCurSel(3)Path 5ReadPara (” 3)&(z5)8. j=x*y+1O; /9. j=j%3;/10. 執(zhí)打鍛句塊1V=4| 産A執(zhí)和評(píng)句塊2執(zhí)彳亍語(yǔ)

45、句塊3LCSAJ (5 個(gè)):(1) int k=O,j=O; if ( (x3)&(z5)(3) if ( (x=4)|(y5)(4) j=x*y+1O; j=j%3(5) j=j%3LCSAJ路徑(4條):(1) - (2) - (4)(1) - (2) - (5)(1) - (3) - (4)(1) - (3) - (5)7、為什么要進(jìn)行白盒測(cè)試? 原因有三,如下:邏輯錯(cuò)誤和不正確假設(shè)與一條程序路徑被運(yùn)行的可能性成反比。我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行,而事實(shí)上,它可能在正常的基礎(chǔ)上 被執(zhí)行。印刷上的錯(cuò)誤是隨機(jī)的。8、白盒測(cè)試用例測(cè)試方法1、 語(yǔ)句(statement)覆蓋:語(yǔ)句覆蓋是

46、最起碼的結(jié)構(gòu)覆蓋要求,要求設(shè)計(jì)足夠多的測(cè)試 用例,使得程序中每條可執(zhí)行語(yǔ)句至少被執(zhí)行一次。2、 判定(branches)覆蓋/分支覆蓋:要求設(shè)計(jì)足夠多的 測(cè)試用例,使得程序中每個(gè)判定至 少有一次為真值,有一次為假值,即:程序中的每個(gè)分支至少執(zhí)行一次。3、條件(condition )覆蓋:要求設(shè)計(jì)足夠多的測(cè)試用例,使得判定中的每個(gè)條件至少有一 次為真值,有一次為假值。4、判定/條件(branches/condition )覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,使得判定中每個(gè)條件的 所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身所有可能結(jié)果也至少出現(xiàn)一次。5、組合覆蓋:要求設(shè)計(jì)足夠多的測(cè)試用例,使得每個(gè)判定中條件結(jié)果的所有可能組合至少 出現(xiàn)一次。6、路徑覆蓋:設(shè)計(jì)足夠的測(cè)試用例,覆

溫馨提示

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