第3章 軟件測(cè)試方法_第1頁(yè)
第3章 軟件測(cè)試方法_第2頁(yè)
第3章 軟件測(cè)試方法_第3頁(yè)
第3章 軟件測(cè)試方法_第4頁(yè)
第3章 軟件測(cè)試方法_第5頁(yè)
已閱讀5頁(yè),還剩226頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件測(cè)試方法和技術(shù)軟件測(cè)試方法和技術(shù) 第第3 3章章 軟件測(cè)試方法軟件測(cè)試方法第第2章回顧章回顧軟件缺陷是軟件質(zhì)量的對(duì)立面軟件缺陷是軟件質(zhì)量的對(duì)立面軟件缺陷軟件缺陷(Bug)是什么是什么驗(yàn)證和確認(rèn)驗(yàn)證和確認(rèn)軟件測(cè)試的分類和階段軟件測(cè)試的分類和階段- 單元、集成、系統(tǒng)(性能、適用性、兼容性單元、集成、系統(tǒng)(性能、適用性、兼容性)、驗(yàn)收測(cè)試)、驗(yàn)收測(cè)試軟件測(cè)試的工作范疇軟件測(cè)試的工作范疇- 策略、計(jì)劃、設(shè)計(jì)、執(zhí)行、報(bào)告、評(píng)估策略、計(jì)劃、設(shè)計(jì)、執(zhí)行、報(bào)告、評(píng)估IEEE (1983) 729 IEEE (1983) 729 軟件缺陷一個(gè)標(biāo)準(zhǔn)的定義:軟件缺陷一個(gè)標(biāo)準(zhǔn)的定義:p 從產(chǎn)品內(nèi)部看,軟件缺陷是軟

2、件產(chǎn)品開發(fā)或維護(hù)過程中所存在的錯(cuò)從產(chǎn)品內(nèi)部看,軟件缺陷是軟件產(chǎn)品開發(fā)或維護(hù)過程中所存在的錯(cuò)誤、毛病等各種問題;誤、毛病等各種問題;p 從外部看,軟件缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。從外部看,軟件缺陷是系統(tǒng)所需要實(shí)現(xiàn)的某種功能的失效或違背。pIEEESTD729:軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能:軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性。力有關(guān)的全部特征和特性。 它主要包括:它主要包括: 軟件產(chǎn)品滿足使用要求的程度軟件產(chǎn)品滿足使用要求的程度 軟件各種屬性的組合程度軟件各種屬性的組合程度 用戶對(duì)軟件產(chǎn)品的綜合反映程度用戶對(duì)軟件產(chǎn)品的綜合反映程度 軟件在使用過程中滿足用

3、戶要求的程度軟件在使用過程中滿足用戶要求的程度 軟件缺陷的主要類型軟件缺陷的主要類型/ /現(xiàn)象:現(xiàn)象:p 功能、特性沒有實(shí)現(xiàn)或部分實(shí)現(xiàn)功能、特性沒有實(shí)現(xiàn)或部分實(shí)現(xiàn)p 設(shè)計(jì)不合理,存在缺陷設(shè)計(jì)不合理,存在缺陷p 實(shí)際結(jié)果和預(yù)期結(jié)果不一致實(shí)際結(jié)果和預(yù)期結(jié)果不一致p 運(yùn)行出錯(cuò),包括運(yùn)行中斷、系統(tǒng)崩潰、界面混亂運(yùn)行出錯(cuò),包括運(yùn)行中斷、系統(tǒng)崩潰、界面混亂p 數(shù)據(jù)結(jié)果不正確、精度不夠數(shù)據(jù)結(jié)果不正確、精度不夠p 用戶不能接受的其他問題,如存取時(shí)間過長(zhǎng)、界面不美觀用戶不能接受的其他問題,如存取時(shí)間過長(zhǎng)、界面不美觀 第三章第三章 軟件測(cè)試方法軟件測(cè)試方法3.1 白盒測(cè)試方法白盒測(cè)試方法3.2 黑盒測(cè)試方法黑盒測(cè)

4、試方法3.3 測(cè)試用例設(shè)計(jì)與維護(hù)測(cè)試用例設(shè)計(jì)與維護(hù)主要內(nèi)容主要內(nèi)容p 掌握白盒測(cè)試的覆蓋測(cè)試、基路徑測(cè)試方法掌握白盒測(cè)試的覆蓋測(cè)試、基路徑測(cè)試方法p 掌握和理解黑盒測(cè)試方法中常用的黑盒測(cè)試方法掌握和理解黑盒測(cè)試方法中常用的黑盒測(cè)試方法p 了解其它的白盒測(cè)試和黑盒測(cè)試方法了解其它的白盒測(cè)試和黑盒測(cè)試方法p 能用白盒和黑盒測(cè)試技術(shù)去解決實(shí)際問題能用白盒和黑盒測(cè)試技術(shù)去解決實(shí)際問題p 理解和掌握測(cè)試用例的設(shè)計(jì)維護(hù)理解和掌握測(cè)試用例的設(shè)計(jì)維護(hù) 學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)假設(shè)此時(shí)開發(fā)工作已結(jié)束,程假設(shè)此時(shí)開發(fā)工作已結(jié)束,程序送交到測(cè)試組,沒有人知道代碼序送交到測(cè)試組,沒有人知道代碼中有中有一個(gè)潛在的被一個(gè)潛在的被

5、0 0 除的錯(cuò)誤除的錯(cuò)誤。若。若測(cè)試組采用的測(cè)試用例的執(zhí)行路徑測(cè)試組采用的測(cè)試用例的執(zhí)行路徑?jīng)]有同時(shí)經(jīng)過沒有同時(shí)經(jīng)過x=0 x=0和和y=5/xy=5/x進(jìn)行測(cè)試進(jìn)行測(cè)試,顯然測(cè)試工作似乎非常完善,測(cè),顯然測(cè)試工作似乎非常完善,測(cè)試用例覆蓋了所有執(zhí)行語(yǔ)句,也沒試用例覆蓋了所有執(zhí)行語(yǔ)句,也沒有被有被 0 0 除的錯(cuò)誤發(fā)生。除的錯(cuò)誤發(fā)生。為什么要進(jìn)行白盒測(cè)試?為什么要進(jìn)行白盒測(cè)試? 如果所有軟件錯(cuò)誤的根源都可以追溯到某個(gè)唯一原如果所有軟件錯(cuò)誤的根源都可以追溯到某個(gè)唯一原因,那么問題就簡(jiǎn)單了。然而,事實(shí)上一個(gè)因,那么問題就簡(jiǎn)單了。然而,事實(shí)上一個(gè)bug bug 常常是常常是由多個(gè)因素共同導(dǎo)致的,如下

6、圖所示。由多個(gè)因素共同導(dǎo)致的,如下圖所示。3.1 白盒測(cè)試方法白盒測(cè)試方法白盒測(cè)試白盒測(cè)試白盒測(cè)試白盒測(cè)試是指把測(cè)試對(duì)象看做一個(gè)透明的是指把測(cè)試對(duì)象看做一個(gè)透明的盒子,測(cè)試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)盒子,測(cè)試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息設(shè)計(jì)測(cè)試用例,檢查程序中所及有關(guān)信息設(shè)計(jì)測(cè)試用例,檢查程序中所有邏輯路徑是否都按預(yù)定的要求正確的工有邏輯路徑是否都按預(yù)定的要求正確的工作。因此白盒測(cè)試又稱為作。因此白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試結(jié)構(gòu)測(cè)試或或邏輯邏輯驅(qū)動(dòng)測(cè)試驅(qū)動(dòng)測(cè)試。白盒測(cè)試白盒測(cè)試是基于覆蓋的測(cè)試,盡可能覆蓋程序的結(jié)構(gòu)特性和邏輯路徑,是基于覆蓋的測(cè)試,盡可能覆蓋程序的結(jié)構(gòu)特性和邏輯路徑,所以其具

7、體方法有所以其具體方法有邏輯覆蓋、循環(huán)覆蓋、基本路徑覆蓋邏輯覆蓋、循環(huán)覆蓋、基本路徑覆蓋。p邏輯覆蓋:以程序的邏輯覆蓋:以程序的內(nèi)部邏輯結(jié)構(gòu)內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),進(jìn)一步可分為語(yǔ)句覆為基礎(chǔ),進(jìn)一步可分為語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定蓋、判定覆蓋、條件覆蓋、判定- -條件覆蓋、條件組合覆蓋等條件覆蓋、條件組合覆蓋等p基本路徑測(cè)試:在基本路徑測(cè)試:在程序控制流程程序控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例。復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例。白盒測(cè)試主要用于對(duì)白盒測(cè)試主要用于對(duì)模塊模塊的單元測(cè)試,主要包括以下四個(gè)

8、模塊:的單元測(cè)試,主要包括以下四個(gè)模塊:程序模塊中的所有獨(dú)立路徑至少執(zhí)行一次程序模塊中的所有獨(dú)立路徑至少執(zhí)行一次對(duì)所有邏輯判定的取值(對(duì)所有邏輯判定的取值(“真真”與與“假假”)都至少測(cè)試一次)都至少測(cè)試一次在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán)測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等白盒測(cè)試的原則白盒測(cè)試的原則白盒測(cè)試白盒測(cè)試法試圖窮舉路徑測(cè)試,企圖遍歷所有的路徑是很難做到法試圖窮舉路徑測(cè)試,企圖遍歷所有的路徑是很難做到的,即使每條路徑都測(cè)試了,覆蓋率達(dá)到的,即使每條路徑都測(cè)試了,覆蓋率達(dá)到100%,程序仍可能出,程序仍可能出錯(cuò)。因?yàn)椋哄e(cuò)。因?yàn)椋?/p>

9、決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序在實(shí)現(xiàn)一個(gè)不是用戶決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序在實(shí)現(xiàn)一個(gè)不是用戶需要的功能。需要的功能。不可能查出程序中遺漏路徑而出錯(cuò)。不可能查出程序中遺漏路徑而出錯(cuò)??赡馨l(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的異常錯(cuò)誤??赡馨l(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的異常錯(cuò)誤。白盒測(cè)試白盒測(cè)試測(cè)試用例測(cè)試用例被測(cè)程序被測(cè)程序源程序源程序分析分析覆蓋情況覆蓋情況分析分析執(zhí)行路徑執(zhí)行路徑補(bǔ)充:測(cè)試覆蓋率補(bǔ)充:測(cè)試覆蓋率p測(cè)試覆蓋率:測(cè)試覆蓋率:用于確定測(cè)試用于確定測(cè)試所執(zhí)行到的覆蓋項(xiàng)的百分比所執(zhí)行到的覆蓋項(xiàng)的百分比。其中。其中的覆蓋項(xiàng)是指作為測(cè)試基礎(chǔ)的一個(gè)入口或?qū)傩?,比如語(yǔ)句、分的覆蓋項(xiàng)是指作為測(cè)試基礎(chǔ)

10、的一個(gè)入口或?qū)傩?,比如語(yǔ)句、分支、條件等。支、條件等。p測(cè)試覆蓋率可以表示出測(cè)試的充分性,在測(cè)試分析報(bào)告中可以測(cè)試覆蓋率可以表示出測(cè)試的充分性,在測(cè)試分析報(bào)告中可以作為量化指標(biāo)的依據(jù),作為量化指標(biāo)的依據(jù),測(cè)試覆蓋率越高效果越好測(cè)試覆蓋率越高效果越好。但覆蓋率不。但覆蓋率不是目標(biāo),只是一種手段。是目標(biāo),只是一種手段。 p測(cè)試覆蓋率包括測(cè)試覆蓋率包括功能點(diǎn)覆蓋率和結(jié)構(gòu)覆蓋率功能點(diǎn)覆蓋率和結(jié)構(gòu)覆蓋率: 功能點(diǎn)覆蓋率功能點(diǎn)覆蓋率大致用于表示軟件已經(jīng)實(shí)現(xiàn)的功能與軟件需要實(shí)大致用于表示軟件已經(jīng)實(shí)現(xiàn)的功能與軟件需要實(shí)現(xiàn)的功能之間的比例關(guān)系?,F(xiàn)的功能之間的比例關(guān)系。 結(jié)構(gòu)覆蓋率結(jié)構(gòu)覆蓋率包括語(yǔ)句覆蓋率、分支覆

11、蓋率、循環(huán)覆蓋率、路徑包括語(yǔ)句覆蓋率、分支覆蓋率、循環(huán)覆蓋率、路徑覆蓋率等等。覆蓋率等等。 根據(jù)根據(jù)覆蓋目標(biāo)的不同覆蓋目標(biāo)的不同,邏輯覆蓋又可分為語(yǔ)句覆蓋、判定覆蓋、,邏輯覆蓋又可分為語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。條件覆蓋、組合覆蓋和路徑覆蓋。邏輯覆蓋邏輯覆蓋p 語(yǔ)句覆蓋語(yǔ)句覆蓋p 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)p 條件覆蓋條件覆蓋p 判定判定-條件覆蓋條件覆蓋p 條件組合覆蓋條件組合覆蓋p 路徑覆蓋路徑覆蓋3.1.1 語(yǔ)句覆蓋語(yǔ)句覆蓋p語(yǔ)句覆蓋法的基本思想是設(shè)計(jì)若干測(cè)試用例,運(yùn)行被語(yǔ)句覆蓋法的基本思想是設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序

12、,使程序中的每個(gè)可執(zhí)行語(yǔ)句至少被執(zhí)行一次測(cè)程序,使程序中的每個(gè)可執(zhí)行語(yǔ)句至少被執(zhí)行一次p如果是順序結(jié)構(gòu),就是讓測(cè)試從頭執(zhí)行到尾如果是順序結(jié)構(gòu),就是讓測(cè)試從頭執(zhí)行到尾語(yǔ)句覆蓋率語(yǔ)句覆蓋率已執(zhí)行的可執(zhí)行語(yǔ)句已執(zhí)行的可執(zhí)行語(yǔ)句/ /程序中可執(zhí)行語(yǔ)句總數(shù)程序中可執(zhí)行語(yǔ)句總數(shù)* *100%100%復(fù)雜的程序不可能達(dá)到語(yǔ)句的完全覆蓋復(fù)雜的程序不可能達(dá)到語(yǔ)句的完全覆蓋語(yǔ)句覆蓋率越高越好語(yǔ)句覆蓋率越高越好if (A1)&(B=0) X=X/A;if (A=2)|(X1) X=X+1;例子程序例子程序#include(stdio.h);main()float A, B, X;scanf(“%f %f %

13、f”, &A, &B, &X);if (A1)&(B=0) X=X/A;if (A=2)|(X1) X=X+1;printf(“%f”, X);程序的流程圖程序的流程圖(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdcn設(shè)計(jì)若干測(cè)試用例,使程序中的每個(gè)可執(zhí)行語(yǔ)句設(shè)計(jì)若干測(cè)試用例,使程序中的每個(gè)可執(zhí)行語(yǔ)句至少被執(zhí)行一次至少被執(zhí)行一次用例ABX執(zhí)行路徑Case1203ace Case2213abe 語(yǔ)句覆蓋語(yǔ)句覆蓋Case1:A=2, B=0, X=3(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+

14、1eFFTTbdcCase2:A=2, B=1, X=3(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc此語(yǔ)句未覆蓋此語(yǔ)句未覆蓋語(yǔ)句覆蓋測(cè)試用例語(yǔ)句覆蓋測(cè)試用例 p達(dá)到語(yǔ)句覆蓋達(dá)到語(yǔ)句覆蓋100%的測(cè)試用例的測(cè)試用例 a = 2 b = 0 x = 3p未達(dá)到語(yǔ)句覆蓋未達(dá)到語(yǔ)句覆蓋100%的測(cè)試用例的測(cè)試用例 a = 2 b = 1 x = 3語(yǔ)句覆蓋的優(yōu)點(diǎn):語(yǔ)句覆蓋的優(yōu)點(diǎn):p檢查所有語(yǔ)句檢查所有語(yǔ)句p結(jié)構(gòu)簡(jiǎn)單的代碼的測(cè)試效果較好結(jié)構(gòu)簡(jiǎn)單的代碼的測(cè)試效果較好p容易實(shí)現(xiàn)自動(dòng)測(cè)試容易實(shí)現(xiàn)自動(dòng)測(cè)試p代碼覆蓋率高代碼覆蓋率高 Case1:A=2, B=0,

15、X=3錯(cuò)寫成錯(cuò)寫成OR錯(cuò)寫成錯(cuò)寫成AND語(yǔ)句覆蓋不能準(zhǔn)確的判斷運(yùn)算中的邏輯關(guān)系語(yǔ)句覆蓋不能準(zhǔn)確的判斷運(yùn)算中的邏輯關(guān)系錯(cuò)誤語(yǔ)句覆蓋是錯(cuò)誤語(yǔ)句覆蓋是最弱最弱的覆蓋的覆蓋語(yǔ)句覆蓋語(yǔ)句覆蓋(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc語(yǔ)句覆蓋不能檢查出的錯(cuò)誤語(yǔ)句覆蓋不能檢查出的錯(cuò)誤p邏輯運(yùn)算(&、|)錯(cuò)誤 判定的第一個(gè)運(yùn)算符“&”錯(cuò)寫成“|”,或第二個(gè)運(yùn)算符“|”錯(cuò)寫成“&”,這時(shí)使用上述的測(cè)試用例仍然可以達(dá)到100%的語(yǔ)句覆蓋。3.1.2 判定覆蓋判定覆蓋p判定覆蓋法的判定覆蓋法的基本思想基本思想是設(shè)計(jì)若干用是設(shè)計(jì)若干用例,運(yùn)行被

16、測(cè)程序,使得程序中每個(gè)例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的判斷的取真分支和取假分支取真分支和取假分支至少經(jīng)歷至少經(jīng)歷一次,即判斷真假值均曾被滿足。一次,即判斷真假值均曾被滿足。p一個(gè)判定往往代表著程序的一個(gè)分支一個(gè)判定往往代表著程序的一個(gè)分支,所以判定覆蓋也被稱為分支覆蓋。,所以判定覆蓋也被稱為分支覆蓋。用例ABX執(zhí)行路徑Case1203ace 真真真真 Case3101abd 假假假假Case4303acd 真假真假Case5211abe 假真假真 判定覆蓋案例判定覆蓋案例p設(shè)計(jì)若干用例,使得程序中每個(gè)判斷的取真分支和取假分設(shè)計(jì)若干用例,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。

17、支至少經(jīng)歷一次。(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc第一組第一組第二組第二組第一組:第一組:Case1:A=2, B=0, X=3(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc判定覆蓋判定覆蓋第一組:第一組: Case3:A=1, B=0, X=1(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc判定覆蓋判定覆蓋第二組:第二組: Case4:A=3, B=0, X=3 Case5:A=2, B=1, X=1錯(cuò)寫成錯(cuò)寫成X1) AND (B=0)(A=2

18、) OR (X1)aX=X/AX=X+1eFFTTbdc只做到判定覆蓋將無(wú)法確定判定內(nèi)部條件中取只做到判定覆蓋將無(wú)法確定判定內(nèi)部條件中取“或(或(OROR)”的錯(cuò)誤。因此判定覆蓋仍是弱的覆蓋標(biāo)準(zhǔn)。的錯(cuò)誤。因此判定覆蓋仍是弱的覆蓋標(biāo)準(zhǔn)。判定覆蓋判定覆蓋3.1.3 條件覆蓋條件覆蓋p條件覆蓋的基本思想是設(shè)條件覆蓋的基本思想是設(shè)計(jì)若干測(cè)試用例,執(zhí)行被計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后,要使每個(gè)判測(cè)程序以后,要使每個(gè)判斷中每個(gè)條件的可能取值斷中每個(gè)條件的可能取值至少滿足一次。至少滿足一次。(iN) and (result=maxint)TrueFalseresult=maxinti1B=0A=2X1取真

19、值為取真值為T1T2T3T4F1F2F3F4取假值為取假值為p滿足條件覆蓋的一組測(cè)試用例如下:滿足條件覆蓋的一組測(cè)試用例如下:用例用例A B X路徑路徑覆蓋分支覆蓋分支覆蓋條件覆蓋條件Case62 1 1abeb eT1 F2 T3 F4 Case71 0 3abeb eF1 T2 F3 T4 Case6:A=2, B=1, X=1 Case7:A=1, B=0, X=3條件覆蓋(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc兩個(gè)測(cè)試用例覆蓋了四個(gè)條件八種可能取值兩個(gè)測(cè)試用例覆蓋了四個(gè)條件八種可能取值, ,但未覆蓋但未覆蓋c c、d d分支分支, ,

20、不不滿足判定覆蓋的要求。所以要引入判定滿足判定覆蓋的要求。所以要引入判定- -條件覆蓋,使測(cè)試更充分。條件覆蓋,使測(cè)試更充分。3.1.4 判定判定-條件覆蓋條件覆蓋p判定判定-條件覆蓋是判定和條件覆蓋設(shè)計(jì)方法的交集,即條件覆蓋是判定和條件覆蓋設(shè)計(jì)方法的交集,即設(shè)計(jì)足夠的測(cè)試用例,使判定中設(shè)計(jì)足夠的測(cè)試用例,使判定中每個(gè)條件的可能取值每個(gè)條件的可能取值至少滿足一次,并且使至少滿足一次,并且使每個(gè)判定分支每個(gè)判定分支至少執(zhí)行一次。至少執(zhí)行一次。p判定判定-條件覆蓋能條件覆蓋能同時(shí)滿足判定、條件兩種覆蓋同時(shí)滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。用例用例a,b,x覆蓋條件覆蓋條件執(zhí)行路徑執(zhí)行路徑a1&am

21、p;b=0a=2|x1Case12 0 3T1 T2 T3 T4ace真真真真Case81 1 1F1 F2 F3 F4abd假假假假(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdcCase1:A=2, B=0, X=3Case8:A=1, B=1, X=1(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdcCase3:A=1, B=0, X=1(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdcp判定判定-條件覆蓋測(cè)試用例依然可能會(huì)忽視代碼中的條件覆蓋測(cè)試用例依然可能會(huì)

22、忽視代碼中的錯(cuò)誤。錯(cuò)誤。Case8中中B0,然而然而Case3中中B=0,但是通,但是通過的過的路徑是一樣路徑是一樣的,都是的,都是 abd ,并且另外兩條,并且另外兩條路徑?jīng)]有被覆蓋,在這時(shí),第二個(gè)路徑?jīng)]有被覆蓋,在這時(shí),第二個(gè)條件條件X1沒有沒有滿足還是發(fā)現(xiàn)不了。滿足還是發(fā)現(xiàn)不了。p為了測(cè)試的更充分,因此測(cè)試時(shí),不僅為了測(cè)試的更充分,因此測(cè)試時(shí),不僅每個(gè)條件每個(gè)條件被測(cè)試被測(cè)試,而且,而且每個(gè)條件的組合每個(gè)條件的組合也應(yīng)該被覆蓋,這也應(yīng)該被覆蓋,這就是條件組合覆蓋測(cè)試就是條件組合覆蓋測(cè)試判定判定-條件覆蓋測(cè)試的缺點(diǎn)條件覆蓋測(cè)試的缺點(diǎn)3.1.5 條件組合測(cè)試條件組合測(cè)試p條件組合覆蓋條件組合

23、覆蓋的基本思想是設(shè)計(jì)足夠的測(cè)試用的基本思想是設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。少出現(xiàn)一次。p它與條件覆蓋的差別是它不是簡(jiǎn)單地要求每個(gè)它與條件覆蓋的差別是它不是簡(jiǎn)單地要求每個(gè)條件都出現(xiàn)條件都出現(xiàn)“真真”與與“假假”兩種結(jié)果,而是要兩種結(jié)果,而是要求讓這些結(jié)果的求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次所有可能組合都至少出現(xiàn)一次。p2個(gè)條件,個(gè)條件,3個(gè)變量,個(gè)變量,8種組合種組合 a1,b=0 T1,T2 判定一為真判定一為真 a1,b0 T1,F2 a=1,b=0 F1,T2 a=1,b0 F1,F2 a=2,x1 T3,

24、T4 a=2,x=1 T3,F4 a2,x1 F3,T4 a2,x5 THEN X=10ELSE X=1ENDIFIF B10 THEN Y=20ELSE Y=2ENDIFIF C15 THEN Z=30ELSE Z=3END IFPRINT(X,Y,Z)STOP1、設(shè)計(jì)右邊偽程序的、設(shè)計(jì)右邊偽程序的語(yǔ)句覆蓋和路徑覆蓋語(yǔ)句覆蓋和路徑覆蓋測(cè)試用例測(cè)試用例A5B10C15X=10X=1Y=20Y=2Z=30Z=3TFTTFF程序流程圖:程序流程圖:分析:語(yǔ)句覆蓋測(cè)試用例分析:語(yǔ)句覆蓋測(cè)試用例p因?yàn)槊總€(gè)判定表達(dá)式因?yàn)槊總€(gè)判定表達(dá)式為真或?yàn)榧贂r(shí)均有賦值語(yǔ)句,為真或?yàn)榧贂r(shí)均有賦值語(yǔ)句,為了使每個(gè)語(yǔ)句都至

25、少執(zhí)行一次,總共需要兩組為了使每個(gè)語(yǔ)句都至少執(zhí)行一次,總共需要兩組測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù),以便使得每個(gè)判定表達(dá)式取值為真或,以便使得每個(gè)判定表達(dá)式取值為真或?yàn)榧俑饕淮?。為假各一次?、使、使3個(gè)判定表達(dá)式之值個(gè)判定表達(dá)式之值全為假全為假輸入:輸入:A,B,C:1,1,1輸出:輸出:X,Y,Z:1,2,32、使、使3個(gè)判定表達(dá)式之值個(gè)判定表達(dá)式之值全為真全為真輸入:輸入:A,B,C:20,40,60輸出:輸出:X,Y,Z:10,20,30分析:路徑覆蓋測(cè)試用例分析:路徑覆蓋測(cè)試用例p本程序有本程序有8條可能的執(zhí)行通路,為做到路徑條可能的執(zhí)行通路,為做到路徑覆蓋總共需要覆蓋總共需要8組測(cè)試數(shù)據(jù)。組測(cè)試數(shù)

26、據(jù)。1、使、使3個(gè)判定表達(dá)式之值個(gè)判定表達(dá)式之值全為假全為假輸入:輸入:A,B,C:1,1,1輸出:輸出:X,Y,Z:1,2,32、 3個(gè)判定表達(dá)式依次為個(gè)判定表達(dá)式依次為假、假、真假、假、真輸入:輸入:A,B,C:1,1,60輸出:輸出:X,Y,Z:1,2,303、 3個(gè)判定表達(dá)式依次為個(gè)判定表達(dá)式依次為假、真、假假、真、假輸入:輸入:A,B,C:1,40,1輸出:輸出:X,Y,Z:1,20,34、 3個(gè)判定表達(dá)式依次為個(gè)判定表達(dá)式依次為假、真、真假、真、真輸入:輸入:A,B,C:1,40,60輸出:輸出:X,Y,Z:1,20,30分析:路徑覆蓋測(cè)試用例分析:路徑覆蓋測(cè)試用例5、 3個(gè)判定表

27、達(dá)式依次為個(gè)判定表達(dá)式依次為真、假、假真、假、假輸入:輸入:A,B,C:20,1,1輸出:輸出:X,Y,Z:10,2,36、 3個(gè)判定表達(dá)式依次為個(gè)判定表達(dá)式依次為真、假、真真、假、真輸入:輸入:A,B,C:20,1,60輸出:輸出:X,Y,Z:10,2,30分析:路徑覆蓋測(cè)試用例分析:路徑覆蓋測(cè)試用例7、3個(gè)判定表達(dá)式之值依次為個(gè)判定表達(dá)式之值依次為真、真、假真、真、假輸入:輸入:A,B,C:20,40,1輸出:輸出:X,Y,Z:10,20,38、使、使3個(gè)判定表達(dá)式之值個(gè)判定表達(dá)式之值全為真全為真輸入:輸入:A,B,C:20,40,60輸出:輸出:X,Y,Z:10,20,30分析:路徑覆蓋

28、測(cè)試用例分析:路徑覆蓋測(cè)試用例課堂練習(xí):課堂練習(xí):STARTINPUT(A,B,C,D)IF (A0)AND(B0) THEN X=ABELSE X=ABENDIF (CA)OR(DB) THEN Y=CDELSE Y=CDENDPRINT(X,Y)STOP2、設(shè)計(jì)右邊偽程序的、設(shè)計(jì)右邊偽程序的分支覆蓋和條件組合覆蓋分支覆蓋和條件組合覆蓋測(cè)試用例:測(cè)試用例:程序流程圖:程序流程圖:(A0)AND(B0)(CA)OR(DB)X=ABX=ABY=CDY=CDTFTF分析:分支覆蓋測(cè)試用例分析:分支覆蓋測(cè)試用例1、使兩個(gè)判定表達(dá)式全為假、使兩個(gè)判定表達(dá)式全為假輸入:輸入:A,B,C,D:-1,-2,

29、-3,1預(yù)期輸出:預(yù)期輸出:X=1,Y=-22、使兩個(gè)判定表達(dá)式全為真、使兩個(gè)判定表達(dá)式全為真輸入:輸入:A,B,C,D:1,2,3,1預(yù)期輸出:預(yù)期輸出:X=3,Y=2p 分支覆蓋(判定)標(biāo)準(zhǔn)分支覆蓋(判定)標(biāo)準(zhǔn)為,不僅使為,不僅使每個(gè)語(yǔ)句每個(gè)語(yǔ)句至少執(zhí)行一至少執(zhí)行一次,而且使次,而且使每個(gè)判定表達(dá)式每個(gè)判定表達(dá)式的每個(gè)分支都至少執(zhí)行一次的每個(gè)分支都至少執(zhí)行一次p 因?yàn)槊總€(gè)判定表達(dá)式因?yàn)槊總€(gè)判定表達(dá)式為真或?yàn)榧贂r(shí)均有賦值語(yǔ)句為真或?yàn)榧贂r(shí)均有賦值語(yǔ)句,為做,為做到分支覆蓋,到分支覆蓋,至少需要兩組測(cè)試數(shù)據(jù)至少需要兩組測(cè)試數(shù)據(jù),以使每個(gè)判定表達(dá),以使每個(gè)判定表達(dá)式的值為真或?yàn)榧俑饕淮?。下面是典?/p>

30、的測(cè)試用例:式的值為真或?yàn)榧俑饕淮?。下面是典型的測(cè)試用例:分析:條件組合覆蓋測(cè)試用例分析:條件組合覆蓋測(cè)試用例p條件組合覆蓋標(biāo)準(zhǔn)為,使得每個(gè)判定表達(dá)式中條件的各條件組合覆蓋標(biāo)準(zhǔn)為,使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次種可能組合都至少出現(xiàn)一次p本題中共有兩個(gè)判定表達(dá)式,每個(gè)判定表達(dá)式中有兩個(gè)本題中共有兩個(gè)判定表達(dá)式,每個(gè)判定表達(dá)式中有兩個(gè)簡(jiǎn)單條件,因此總共有簡(jiǎn)單條件,因此總共有8種可能的條件組合種可能的條件組合: A0,B0 A0 ,B0 A0, B0 A0, B 0 CA,DB CA,DB CA,DB CA,DB分析:條件組合覆蓋測(cè)試用例分析:條件組合覆蓋測(cè)試用例p下面的下面的

31、4個(gè)測(cè)試用例,可以使上面列出的個(gè)測(cè)試用例,可以使上面列出的8種條件組合每種條件組合每種至少出現(xiàn)一次種至少出現(xiàn)一次1、實(shí)現(xiàn)、實(shí)現(xiàn) 組合組合 輸入:輸入:A,B,C,D:1,1,2,0 預(yù)期輸出:預(yù)期輸出:X2,Y22、實(shí)現(xiàn)、實(shí)現(xiàn) 組合組合 輸入:輸入:A,B,C,D:1,0,2,1 預(yù)期輸出:預(yù)期輸出:X1,Y13、實(shí)現(xiàn)、實(shí)現(xiàn) 組合組合 輸入:輸入:A,B,C,D:0,1,1,0 預(yù)期輸出:預(yù)期輸出:X1,Y14、實(shí)現(xiàn)、實(shí)現(xiàn) 組合組合 輸入:輸入:A,B,C,D:0,0,1,1 預(yù)期輸出:預(yù)期輸出:X0,Y0補(bǔ)充:基本路徑測(cè)試方法補(bǔ)充:基本路徑測(cè)試方法p路徑測(cè)試路徑測(cè)試就是從一個(gè)就是從一個(gè)程序的

32、入口程序的入口開始,執(zhí)行所經(jīng)歷的各個(gè)開始,執(zhí)行所經(jīng)歷的各個(gè)語(yǔ)句的完整過程。從廣義的角度講,任何有關(guān)路徑分析的語(yǔ)句的完整過程。從廣義的角度講,任何有關(guān)路徑分析的測(cè)試都可以被稱為路徑測(cè)試。測(cè)試都可以被稱為路徑測(cè)試。p完成完成路徑測(cè)試的理想情況路徑測(cè)試的理想情況是做到路徑覆蓋,但對(duì)于復(fù)雜性是做到路徑覆蓋,但對(duì)于復(fù)雜性大的程序要做到大的程序要做到所有路徑覆蓋所有路徑覆蓋(測(cè)試所有可執(zhí)行路徑)是(測(cè)試所有可執(zhí)行路徑)是不可能的。不可能的。p在不能做到所有路徑覆蓋的前提下,如果在不能做到所有路徑覆蓋的前提下,如果某一程序的每一某一程序的每一個(gè)獨(dú)立路徑個(gè)獨(dú)立路徑都被測(cè)試過,那么都被測(cè)試過,那么可以認(rèn)為程序中

33、的每個(gè)語(yǔ)句可以認(rèn)為程序中的每個(gè)語(yǔ)句都已經(jīng)檢驗(yàn)過了,即達(dá)到了語(yǔ)句覆蓋都已經(jīng)檢驗(yàn)過了,即達(dá)到了語(yǔ)句覆蓋。這種測(cè)試方法就是。這種測(cè)試方法就是通常所說的通常所說的基本路徑測(cè)試方法基本路徑測(cè)試方法。 3.1.7 基本路徑測(cè)試基本路徑測(cè)試p基本路徑測(cè)試法基本路徑測(cè)試法是在程序是在程序控制流程圖控制流程圖的基礎(chǔ)上,通過的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜度,導(dǎo)出基本可執(zhí)行路徑集分析控制構(gòu)造的環(huán)路復(fù)雜度,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。合,從而設(shè)計(jì)測(cè)試用例的方法。p設(shè)計(jì)出的測(cè)試用例要保證設(shè)計(jì)出的測(cè)試用例要保證被測(cè)試程序的每個(gè)可執(zhí)行語(yǔ)被測(cè)試程序的每個(gè)可執(zhí)行語(yǔ)句句至少被執(zhí)行一次。至少被執(zhí)行一次。

34、程序的程序的控制流圖控制流圖。 計(jì)算程序環(huán)路復(fù)雜度。計(jì)算程序環(huán)路復(fù)雜度。 確定基本路徑。確定基本路徑。 準(zhǔn)備測(cè)試用例。確保基本路徑組中的每一條路徑被執(zhí)行一次。準(zhǔn)備測(cè)試用例。確?;韭窂浇M中的每一條路徑被執(zhí)行一次。基本路徑測(cè)試法實(shí)現(xiàn)的基本步驟如下:基本路徑測(cè)試法實(shí)現(xiàn)的基本步驟如下:控制流程圖控制流程圖p控制流圖是退化的程序流程圖,它是控制流圖是退化的程序流程圖,它是描述程序控制流描述程序控制流的一種圖示方式,圖中每個(gè)處理都退化成一個(gè)結(jié)點(diǎn),的一種圖示方式,圖中每個(gè)處理都退化成一個(gè)結(jié)點(diǎn),流線變成連接不同結(jié)點(diǎn)的流線變成連接不同結(jié)點(diǎn)的有向弧有向弧。p在控制流圖中用圓在控制流圖中用圓“”表示節(jié)點(diǎn),一個(gè)圓代

35、表一條表示節(jié)點(diǎn),一個(gè)圓代表一條或多條語(yǔ)句。或多條語(yǔ)句。p控制流圖中的控制流圖中的基本元素基本元素:節(jié)點(diǎn)節(jié)點(diǎn)邊邊程序的控制流圖程序的控制流圖p節(jié)點(diǎn)節(jié)點(diǎn)標(biāo)有編號(hào)的圓圈標(biāo)有編號(hào)的圓圈 程序流程圖中矩形框所表示的處理程序流程圖中矩形框所表示的處理 菱形表示的兩個(gè)甚至多個(gè)出口判斷菱形表示的兩個(gè)甚至多個(gè)出口判斷 多條流線相交的匯合點(diǎn)多條流線相交的匯合點(diǎn) p邊邊由帶箭頭的弧或線表示由帶箭頭的弧或線表示與程序流程圖中的流線一致與程序流程圖中的流線一致,表明了控制表明了控制的順序的順序 它代表程序中的控制流。它代表程序中的控制流。 控制流線通常標(biāo)有名字控制流線通常標(biāo)有名字12435abcdef程序流程圖程序流程

36、圖控制程控制程圖圖p由邊和節(jié)點(diǎn)所限定的范圍被稱為由邊和節(jié)點(diǎn)所限定的范圍被稱為區(qū)域區(qū)域。p包含條件的節(jié)點(diǎn)被稱為包含條件的節(jié)點(diǎn)被稱為判斷節(jié)點(diǎn)。判斷節(jié)點(diǎn)。常見語(yǔ)句的控制流圖常見語(yǔ)句的控制流圖順序語(yǔ)句順序語(yǔ)句While語(yǔ)句語(yǔ)句If語(yǔ)句語(yǔ)句do while語(yǔ)句語(yǔ)句Case語(yǔ)句語(yǔ)句練習(xí):練習(xí):1236784511流程圖 控制流圖將程序流程圖轉(zhuǎn)化為控制流圖將程序流程圖轉(zhuǎn)化為控制流圖三角形問題三角形問題(流程圖流圖流程圖流圖) 計(jì)算程序環(huán)路復(fù)雜度計(jì)算程序環(huán)路復(fù)雜度p通過對(duì)程序的通過對(duì)程序的控制流程圖的分析和判斷控制流程圖的分析和判斷來計(jì)算程序的來計(jì)算程序的環(huán)路復(fù)雜性,從程序的環(huán)路復(fù)雜性可環(huán)路復(fù)雜性,從程序的環(huán)

37、路復(fù)雜性可導(dǎo)出程序基本路導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù)徑集合中的獨(dú)立路徑條數(shù),這是確定程序中每個(gè)可執(zhí),這是確定程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目的上界。行語(yǔ)句至少執(zhí)行一次所必須的測(cè)試用例數(shù)目的上界。p程序環(huán)路復(fù)雜度又叫圈復(fù)雜度。程序環(huán)路復(fù)雜度又叫圈復(fù)雜度。p圈復(fù)雜度:是一種為程序邏輯復(fù)雜性提供定量測(cè)度的圈復(fù)雜度:是一種為程序邏輯復(fù)雜性提供定量測(cè)度的軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑軟件度量,將該度量用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目。數(shù)目。p獨(dú)立路徑必須包含一條在定義之前不曾用到的邊。獨(dú)立路徑必須包含一條在定義之前不曾用到的邊。(每一條新的路徑都包含了一條新邊

38、每一條新的路徑都包含了一條新邊)p環(huán)路復(fù)雜性可用環(huán)路復(fù)雜性可用V(G)來表示,其計(jì)算方法主要有來表示,其計(jì)算方法主要有三種:三種: V(G) = 區(qū)域數(shù)量區(qū)域數(shù)量(由節(jié)點(diǎn)、連線包圍的區(qū)域,由節(jié)點(diǎn)、連線包圍的區(qū)域,包括圖形外部區(qū)域包括圖形外部區(qū)域) V(G) = 邊數(shù)量邊數(shù)量 - 節(jié)點(diǎn)數(shù)量節(jié)點(diǎn)數(shù)量 + 2 V(G) = 判斷節(jié)點(diǎn)數(shù)量判斷節(jié)點(diǎn)數(shù)量 + 1ABCED 計(jì)算程序環(huán)路復(fù)雜度計(jì)算程序環(huán)路復(fù)雜度 確定基本路徑和確定基本路徑和 準(zhǔn)備測(cè)試用例準(zhǔn)備測(cè)試用例p通過程序的通過程序的控制流程圖的基本路徑控制流程圖的基本路徑導(dǎo)出程序的導(dǎo)出程序的基本路基本路徑集合徑集合,在一個(gè)基本路徑集合里,每條路徑都是唯

39、一,在一個(gè)基本路徑集合里,每條路徑都是唯一的,但是基本路徑的組(集合)不是唯一的,還可以的,但是基本路徑的組(集合)不是唯一的,還可以有其他的路徑組有其他的路徑組ABCED路徑路徑1:ACE路徑路徑2:ABCE路徑路徑3:ABCDEp準(zhǔn)備測(cè)試用例。確?;韭窂浇M中的每一準(zhǔn)備測(cè)試用例。確?;韭窂浇M中的每一條路徑被執(zhí)行一次。條路徑被執(zhí)行一次。注:參看課本注:參看課本P37void Sort(int iR,int iT)1 2 int x=0;3 int y=0;4 while (iR- 0)5 6 if(0= =iT)7x=y+2;8 else9 if(1= =iT)10 x=y+10;11 e

40、lse12 x=y+20;13 14 printf(“%d”,x,y);案例案例1:根據(jù)所給出的程序,畫出其程序流程圖和對(duì)應(yīng)的控制流圖根據(jù)所給出的程序,畫出其程序流程圖和對(duì)應(yīng)的控制流圖467810121314程序流程圖程序流程圖467810121314KBCDEFGHIJA控制流圖控制流圖467810121314KBCDEFGHIJA對(duì)應(yīng)右面圖中的環(huán)路復(fù)雜性,計(jì)算如對(duì)應(yīng)右面圖中的環(huán)路復(fù)雜性,計(jì)算如下:下: 流圖中有四個(gè)區(qū)域;流圖中有四個(gè)區(qū)域; V(G)=11條邊條邊-9結(jié)點(diǎn)結(jié)點(diǎn)+2=4; V(G)=3個(gè)判定結(jié)點(diǎn)個(gè)判定結(jié)點(diǎn)+1=4。路徑路徑1:414路徑路徑2:46713414路徑路徑3:468

41、1013414路徑路徑4:4681113414輸入數(shù)據(jù)輸入數(shù)據(jù)預(yù)期輸出預(yù)期輸出路徑路徑1iR=0 iT=0X=0 Y=0路徑路徑2iR=1 iT=0X=2 Y=0路徑路徑3iR=1 iT=1X=10 Y=0路徑路徑4iR=1 iT=2X=20 Y=0Procedure: process records1. Do While records remain2.Read record;3.If record field 1 = 0 Then4.store in buffer;5.increment counter;6.Else If record field 2 = 0 Then7.reset co

42、unter;8.Else store in file;9.End If10.End If11.End Do案例案例2:程序流程圖程序流程圖1910112457836V(G) = 4程序流程控制圖程序流程控制圖12,387694,51011計(jì)算環(huán)路復(fù)雜度計(jì)算環(huán)路復(fù)雜度V(G)=412,378694,51011Region 1Region 2Region 3Region 4 Path1: 1-2-3-6-7-9-10-1-11確定基本路徑確定基本路徑 Path2: 1-2-3-6-8-9-10-1-11 Path3: 1-2-3-4-5-10-1-11Path4: 1-11191011245873

43、6白盒測(cè)試方法歸納白盒測(cè)試方法歸納在白盒測(cè)試中,可以使用各種測(cè)試方法的綜合策略在白盒測(cè)試中,可以使用各種測(cè)試方法的綜合策略如下:如下:(1)(1)在測(cè)試中,應(yīng)盡量先使用工具進(jìn)行在測(cè)試中,應(yīng)盡量先使用工具進(jìn)行靜態(tài)結(jié)構(gòu)分析靜態(tài)結(jié)構(gòu)分析。(2)(2)測(cè)試中可采取測(cè)試中可采取先靜態(tài)后動(dòng)態(tài)的組合方式先靜態(tài)后動(dòng)態(tài)的組合方式:先進(jìn)行靜態(tài):先進(jìn)行靜態(tài)結(jié)構(gòu)分析、代碼檢查,再進(jìn)行覆蓋率測(cè)試。結(jié)構(gòu)分析、代碼檢查,再進(jìn)行覆蓋率測(cè)試。(3)(3)覆蓋率測(cè)試覆蓋率測(cè)試是白盒測(cè)試的重點(diǎn),一般可使用基本路徑是白盒測(cè)試的重點(diǎn),一般可使用基本路徑測(cè)試法達(dá)到語(yǔ)句覆蓋標(biāo)準(zhǔn);對(duì)于軟件的重點(diǎn)模塊,應(yīng)使測(cè)試法達(dá)到語(yǔ)句覆蓋標(biāo)準(zhǔn);對(duì)于軟件的重

44、點(diǎn)模塊,應(yīng)使用多種覆蓋率標(biāo)準(zhǔn)衡量代碼的覆蓋率。用多種覆蓋率標(biāo)準(zhǔn)衡量代碼的覆蓋率。(4)(4)在在不同的測(cè)試節(jié)點(diǎn),測(cè)試的側(cè)重點(diǎn)不同不同的測(cè)試節(jié)點(diǎn),測(cè)試的側(cè)重點(diǎn)不同:在單元測(cè)試:在單元測(cè)試階段,以代碼檢查、邏輯覆蓋為主;在集成測(cè)試階段,階段,以代碼檢查、邏輯覆蓋為主;在集成測(cè)試階段,需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測(cè)試階段,應(yīng)根據(jù)黑需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測(cè)試階段,應(yīng)根據(jù)黑盒測(cè)試的結(jié)果,采取相應(yīng)的白盒測(cè)試。盒測(cè)試的結(jié)果,采取相應(yīng)的白盒測(cè)試。圖形矩陣圖形矩陣p導(dǎo)出控制流圖和決定基本測(cè)試路徑的過程均需要導(dǎo)出控制流圖和決定基本測(cè)試路徑的過程均需要機(jī)械化,為了開發(fā)輔助基本路徑測(cè)試的軟件工具,機(jī)械化,為

45、了開發(fā)輔助基本路徑測(cè)試的軟件工具,稱為圖形矩陣稱為圖形矩陣(graph matrix)的數(shù)據(jù)結(jié)構(gòu)很有用。的數(shù)據(jù)結(jié)構(gòu)很有用。p定義:有定義:有m個(gè)節(jié)點(diǎn)的控制流圖矩陣,是一個(gè)節(jié)點(diǎn)的控制流圖矩陣,是一個(gè)個(gè)mm矩陣:矩陣:A=( a (i,j) ),其中,其中a(i,j)是是1,當(dāng)且僅當(dāng)從節(jié)點(diǎn),當(dāng)且僅當(dāng)從節(jié)點(diǎn)i到節(jié)點(diǎn)到節(jié)點(diǎn)j有一條弧,有一條弧,否則該元素為否則該元素為0。圖形矩陣圖形矩陣?yán)豪?2345671010000020010001300011004000001050000010601000007000000063542173.2 黑盒測(cè)試方法黑盒測(cè)試方法3.2.1 等價(jià)類劃分法等價(jià)類劃分法3

46、.2.2 邊界值分析法邊界值分析法3.2.3 判定表方法判定表方法3.2.4 因果圖法因果圖法黑盒測(cè)試方法黑盒測(cè)試方法黑盒測(cè)試黑盒測(cè)試是指把測(cè)試對(duì)象看做是指把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,在部特性,在程序接口進(jìn)行測(cè)試程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照它只檢查程序功能是否按照需需求規(guī)格說明書求規(guī)格說明書的規(guī)定正常使用,的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的

47、完整性,檢查文件)的完整性,檢查程序的程序的功能功能是否符合它的功能需求。是否符合它的功能需求。因此黑盒測(cè)試又叫因此黑盒測(cè)試又叫功能測(cè)試功能測(cè)試或或數(shù)據(jù)驅(qū)動(dòng)測(cè)試數(shù)據(jù)驅(qū)動(dòng)測(cè)試。黑盒測(cè)試不深入代碼細(xì)節(jié)黑盒測(cè)試不深入代碼細(xì)節(jié)軟件輸入輸入輸輸出出“黑盒黑盒”的兩種基本方法的兩種基本方法p黑盒測(cè)試有兩種基本方法,即黑盒測(cè)試有兩種基本方法,即通過測(cè)試通過測(cè)試和和失敗測(cè)試失敗測(cè)試。 p在進(jìn)行在進(jìn)行通過測(cè)試通過測(cè)試時(shí),實(shí)際上是確認(rèn)軟件能做什么,而不時(shí),實(shí)際上是確認(rèn)軟件能做什么,而不會(huì)去考驗(yàn)其能力如何。軟件測(cè)試員只運(yùn)用最簡(jiǎn)單,最直會(huì)去考驗(yàn)其能力如何。軟件測(cè)試員只運(yùn)用最簡(jiǎn)單,最直觀的測(cè)試案例。觀的測(cè)試案例。 在設(shè)

48、計(jì)和執(zhí)行測(cè)試案例時(shí),總是先要進(jìn)行通過測(cè)試。在在設(shè)計(jì)和執(zhí)行測(cè)試案例時(shí),總是先要進(jìn)行通過測(cè)試。在進(jìn)行破壞性試驗(yàn)之前,看一看軟件基本功能是否能夠?qū)嵾M(jìn)行破壞性試驗(yàn)之前,看一看軟件基本功能是否能夠?qū)崿F(xiàn)。這一點(diǎn)很重要,否則在正常使用軟件時(shí)就會(huì)奇怪地現(xiàn)。這一點(diǎn)很重要,否則在正常使用軟件時(shí)就會(huì)奇怪地發(fā)現(xiàn),為什么會(huì)有那么多的軟件缺陷出現(xiàn)?發(fā)現(xiàn),為什么會(huì)有那么多的軟件缺陷出現(xiàn)? p在確信了軟件正確運(yùn)行之后,就可以采取各種手段通過在確信了軟件正確運(yùn)行之后,就可以采取各種手段通過搞搞“垮垮”軟件來找出缺陷軟件來找出缺陷。純粹為了破壞軟件而設(shè)計(jì)和。純粹為了破壞軟件而設(shè)計(jì)和執(zhí)行的測(cè)試案例,被稱為失敗測(cè)試或迫使出錯(cuò)測(cè)試。執(zhí)

49、行的測(cè)試案例,被稱為失敗測(cè)試或迫使出錯(cuò)測(cè)試。黑盒測(cè)試過程黑盒測(cè)試過程需求需求說明說明產(chǎn)生產(chǎn)生被測(cè)程序被測(cè)程序測(cè)試結(jié)果測(cè)試結(jié)果輸出輸出比較比較黑盒測(cè)試的目標(biāo)黑盒測(cè)試的目標(biāo)p 黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤:黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤:功能錯(cuò)誤或遺漏;功能錯(cuò)誤或遺漏;界面錯(cuò)誤,不美觀;界面錯(cuò)誤,不美觀;數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息訪問錯(cuò)誤;數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息訪問錯(cuò)誤;性能錯(cuò)誤;性能錯(cuò)誤;初始化和終止錯(cuò)誤初始化和終止錯(cuò)誤接口錯(cuò)誤,在接口上,能否正確地接受輸入數(shù)據(jù),接口錯(cuò)誤,在接口上,能否正確地接受輸入數(shù)據(jù),能否產(chǎn)生正確地輸出信息如輸入能否產(chǎn)生正確地輸出信息如輸入/輸出參數(shù)的個(gè)數(shù)、輸出參數(shù)的個(gè)數(shù)、類

50、型等;類型等;黑盒測(cè)試的優(yōu)、缺點(diǎn)黑盒測(cè)試的優(yōu)、缺點(diǎn)p黑盒測(cè)試的優(yōu)點(diǎn)有:黑盒測(cè)試的優(yōu)點(diǎn)有:比較簡(jiǎn)單,比較簡(jiǎn)單,不需要了解程序內(nèi)部的代碼及實(shí)現(xiàn)不需要了解程序內(nèi)部的代碼及實(shí)現(xiàn);與軟件的內(nèi)部實(shí)現(xiàn)無(wú)關(guān);與軟件的內(nèi)部實(shí)現(xiàn)無(wú)關(guān);從從用戶角度用戶角度出發(fā),能很容易的知道用戶會(huì)用到哪些功出發(fā),能很容易的知道用戶會(huì)用到哪些功能,會(huì)遇到哪些問題;能,會(huì)遇到哪些問題;基于基于軟件開發(fā)文檔軟件開發(fā)文檔,所以也能知道軟件實(shí)現(xiàn)了文檔中,所以也能知道軟件實(shí)現(xiàn)了文檔中的哪些功能;的哪些功能;在做在做軟件自動(dòng)化測(cè)試軟件自動(dòng)化測(cè)試時(shí)較為方便。時(shí)較為方便。p黑盒測(cè)試的缺點(diǎn)有:黑盒測(cè)試的缺點(diǎn)有:不可能覆蓋所有的代碼,不可能覆蓋所有的代

51、碼,覆蓋率較低覆蓋率較低,大概只能達(dá)到,大概只能達(dá)到總代碼量的總代碼量的30%;自動(dòng)化測(cè)試的復(fù)用性較低自動(dòng)化測(cè)試的復(fù)用性較低。黑盒測(cè)試的難點(diǎn)黑盒測(cè)試的難點(diǎn)p黑盒測(cè)試的難點(diǎn)在于黑盒測(cè)試的難點(diǎn)在于如何構(gòu)造有效的輸入如何構(gòu)造有效的輸入。由于輸入空間通常是無(wú)限的,窮舉測(cè)試由于輸入空間通常是無(wú)限的,窮舉測(cè)試顯然行不通。顯然行不通。尋找最小最重要的用例集合以精簡(jiǎn)測(cè)試尋找最小最重要的用例集合以精簡(jiǎn)測(cè)試復(fù)雜性。復(fù)雜性。常用的黑盒測(cè)試方法常用的黑盒測(cè)試方法p 黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法等價(jià)類劃分等價(jià)類劃分邊界值分析邊界值分析基于決策表的測(cè)試基于決策表的測(cè)試因果圖因果圖錯(cuò)誤推測(cè)錯(cuò)誤推測(cè)等

52、價(jià)類等價(jià)類等價(jià)類測(cè)試類型等價(jià)類測(cè)試類型案例案例本節(jié)內(nèi)本節(jié)內(nèi)容容等價(jià)類劃分方法等價(jià)類劃分方法問題引入問題引入測(cè)試的矛盾測(cè)試的矛盾為保證軟件產(chǎn)品的質(zhì)量,我們需要進(jìn)行完為保證軟件產(chǎn)品的質(zhì)量,我們需要進(jìn)行完備備( (徹底徹底) )的測(cè)試;但這是不現(xiàn)實(shí)的的測(cè)試;但這是不現(xiàn)實(shí)的, ,因?yàn)椋阂驗(yàn)椋?輸入量太大輸入量太大 輸出結(jié)果太多輸出結(jié)果太多 軟件實(shí)現(xiàn)途徑太多軟件實(shí)現(xiàn)途徑太多p為了保證軟件質(zhì)量,我們需要做盡量多的測(cè)為了保證軟件質(zhì)量,我們需要做盡量多的測(cè)試,但不可能用所有可能的輸入數(shù)據(jù)來測(cè)試試,但不可能用所有可能的輸入數(shù)據(jù)來測(cè)試程序,即窮盡測(cè)試是不可能的。程序,即窮盡測(cè)試是不可能的。我們可以選我們可以選擇一

53、些有代表性的數(shù)據(jù)來測(cè)試程序,但怎樣擇一些有代表性的數(shù)據(jù)來測(cè)試程序,但怎樣選擇呢?選擇呢?等價(jià)類劃分是解決這一問題的一個(gè)等價(jià)類劃分是解決這一問題的一個(gè)方法。方法。p等價(jià)類方法可令測(cè)試事半功倍。等價(jià)類方法可令測(cè)試事半功倍。問題引入問題引入等價(jià)類劃方法的基本思想等價(jià)類劃方法的基本思想p 等價(jià)類劃分等價(jià)類劃分是把程序中所有可能的輸入是把程序中所有可能的輸入數(shù)據(jù)數(shù)據(jù)(有效的或無(wú)效的有效的或無(wú)效的),即程序的輸入域即程序的輸入域劃分成若干部分劃分成若干部分(子集子集),然后從每一個(gè)子然后從每一個(gè)子集中選取少數(shù)集中選取少數(shù)具有代表性的數(shù)據(jù)具有代表性的數(shù)據(jù)作為測(cè)作為測(cè)試用例進(jìn)行測(cè)試。該測(cè)試方法是一種重試用例進(jìn)

54、行測(cè)試。該測(cè)試方法是一種重要的、常用的黑盒測(cè)試用例設(shè)計(jì)方法。要的、常用的黑盒測(cè)試用例設(shè)計(jì)方法。等價(jià)類等價(jià)類p等價(jià)類等價(jià)類是某個(gè)輸入域的子集是某個(gè)輸入域的子集合合,在該子集中每個(gè)輸入數(shù),在該子集中每個(gè)輸入數(shù)據(jù)(有效等價(jià)類和無(wú)效等價(jià)類)據(jù)(有效等價(jià)類和無(wú)效等價(jià)類)對(duì)于揭露程序中的錯(cuò)誤對(duì)于揭露程序中的錯(cuò)誤都都是等效的是等效的。并合理地假定:測(cè)試某等價(jià)類的代表值就。并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試。因此,可以把全部輸入數(shù)等于對(duì)這一類其它值的測(cè)試。因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的

55、輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù),取得較好的測(cè)試結(jié)果。,取得較好的測(cè)試結(jié)果。p分為分為有效等價(jià)類有效等價(jià)類和和無(wú)效等價(jià)類無(wú)效等價(jià)類。有效等價(jià)類是指有意義。有效等價(jià)類是指有意義的、是合理的輸入數(shù)據(jù),可檢查程序是否實(shí)現(xiàn)了規(guī)格說的、是合理的輸入數(shù)據(jù),可檢查程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無(wú)效等價(jià)類與有效等價(jià)類的明中所規(guī)定的功能和性能。無(wú)效等價(jià)類與有效等價(jià)類的意義相反。意義相反。設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn)。經(jīng)

56、的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn)。經(jīng)過正反的測(cè)試才能確保軟件具有更高過正反的測(cè)試才能確保軟件具有更高的可靠性。的可靠性。all inputsi1i4i2i3等價(jià)類測(cè)試等價(jià)類測(cè)試等價(jià)類的特點(diǎn)等價(jià)類的特點(diǎn) 完備性完備性 無(wú)冗余性無(wú)冗余性 等價(jià)性等價(jià)性 等價(jià)類測(cè)試的假設(shè):等價(jià)類測(cè)試的假設(shè): 測(cè)試某等價(jià)類的代表值,就等效于對(duì)這個(gè)等價(jià)類中其他測(cè)試某等價(jià)類的代表值,就等效于對(duì)這個(gè)等價(jià)類中其他值的測(cè)試。值的測(cè)試。 等價(jià)類測(cè)試的思想:等價(jià)類測(cè)試的思想: 把全部的輸入數(shù)據(jù)把全部的輸入數(shù)據(jù)劃分成若干個(gè)等價(jià)類劃分成若干個(gè)等價(jià)類,在每一個(gè)等價(jià)在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)類中取一個(gè)數(shù)據(jù)來進(jìn)行測(cè)試。來進(jìn)行測(cè)試。確定等價(jià)類的方法

57、確定等價(jià)類的方法p分類,即將輸入域按照具有相同特性或者類似功能進(jìn)行分類。分類,即將輸入域按照具有相同特性或者類似功能進(jìn)行分類。p抽象,即在各個(gè)子類中去抽象出相同特性并用實(shí)例來表征這個(gè)抽象,即在各個(gè)子類中去抽象出相同特性并用實(shí)例來表征這個(gè)特性。特性。1、如果某個(gè)輸入條件規(guī)定值的范圍,可以確定一個(gè)有效等價(jià)類和、如果某個(gè)輸入條件規(guī)定值的范圍,可以確定一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類兩個(gè)無(wú)效等價(jià)類確定等價(jià)類的方法有確定等價(jià)類的方法有5 5種:種:in rangegreater than rangeless than range等價(jià)類在劃分的過程中,一般經(jīng)過兩個(gè)過程等價(jià)類在劃分的過程中,一般經(jīng)過兩個(gè)過程分

58、類和抽象:分類和抽象:例:例: 輸入值是學(xué)生成績(jī),范圍是輸入值是學(xué)生成績(jī),范圍是0100有效等價(jià)類:有效等價(jià)類:0成績(jī)成績(jī)100無(wú)效等價(jià)類:無(wú)效等價(jià)類:成績(jī)成績(jī)1002、如果輸入條件規(guī)定了、如果輸入條件規(guī)定了一個(gè)輸入值一個(gè)輸入值的集合,可以確定一個(gè)有效等的集合,可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。價(jià)類和一個(gè)無(wú)效等價(jià)類。3、如果輸入條件是一個(gè)布爾表達(dá)式的條件,可以確定一個(gè)有效等、如果輸入條件是一個(gè)布爾表達(dá)式的條件,可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類價(jià)類和一個(gè)無(wú)效等價(jià)類確定等價(jià)類的方法確定等價(jià)類的方法4、如果規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),則類似地可以劃分出一個(gè)有效等、如果規(guī)定了輸入數(shù)據(jù)的個(gè)數(shù),則類

59、似地可以劃分出一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。價(jià)類和兩個(gè)無(wú)效等價(jià)類。例:一個(gè)學(xué)生每學(xué)期只能選修例:一個(gè)學(xué)生每學(xué)期只能選修13門課門課 有效等價(jià)類:有效等價(jià)類:選修選修13門門 無(wú)效等價(jià)類:無(wú)效等價(jià)類:不選不選 或或 選修超過選修超過3門門例:例: 輸入條件為輸入條件為 x=10有效等價(jià)類:有效等價(jià)類: x=10 無(wú)效等價(jià)類:無(wú)效等價(jià)類: x 10 例:程序輸入條件為例:程序輸入條件為bool x=true有效等價(jià)類:有效等價(jià)類: x=true 無(wú)效等價(jià)類:無(wú)效等價(jià)類:x=false5、在規(guī)定了輸入數(shù)據(jù)的一組值、在規(guī)定了輸入數(shù)據(jù)的一組值(假定假定n個(gè)個(gè)),并且程序要對(duì)每一個(gè)輸,并且程序要對(duì)每一個(gè)

60、輸入值分別處理的情況下,可確立入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。類。6、如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個(gè)有效等價(jià)類、如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則)。確定等價(jià)類的方法確定等價(jià)類的方法例:輸入條件說明學(xué)歷可為例:輸入條件說明學(xué)歷可為:??啤⒈究?、碩士、博士四種之一???、本科、碩士、博士四種之一有效等價(jià)類:有效等價(jià)類:專科、專科、本科、本科、碩士、碩士、博士博士無(wú)效等價(jià)類:無(wú)效等價(jià)類:其它任何學(xué)歷其它任何學(xué)歷確定測(cè)試用例確定測(cè)試用例p 步驟:步驟:對(duì)對(duì)每個(gè)輸入每個(gè)輸入或或外部條

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論