版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟件測試方法和技術(shù)軟件測試方法和技術(shù) 第第3 3章章 軟件測試方法軟件測試方法第第2章回顧章回顧軟件缺陷是軟件質(zhì)量的對立面軟件缺陷是軟件質(zhì)量的對立面軟件缺陷軟件缺陷(Bug)是什么是什么驗證和確認驗證和確認軟件測試的分類和階段軟件測試的分類和階段- 單元、集成、系統(tǒng)(性能、適用性、兼容性單元、集成、系統(tǒng)(性能、適用性、兼容性)、驗收測試)、驗收測試軟件測試的工作范疇軟件測試的工作范疇- 策略、計劃、設(shè)計、執(zhí)行、報告、評估策略、計劃、設(shè)計、執(zhí)行、報告、評估IEEE (1983) 729 IEEE (1983) 729 軟件缺陷一個標準的定義:軟件缺陷一個標準的定義:p 從產(chǎn)品內(nèi)部看,軟件缺陷是軟
2、件產(chǎn)品開發(fā)或維護過程中所存在的錯從產(chǎn)品內(nèi)部看,軟件缺陷是軟件產(chǎn)品開發(fā)或維護過程中所存在的錯誤、毛病等各種問題;誤、毛病等各種問題;p 從外部看,軟件缺陷是系統(tǒng)所需要實現(xiàn)的某種功能的失效或違背。從外部看,軟件缺陷是系統(tǒng)所需要實現(xiàn)的某種功能的失效或違背。pIEEESTD729:軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能:軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性。力有關(guān)的全部特征和特性。 它主要包括:它主要包括: 軟件產(chǎn)品滿足使用要求的程度軟件產(chǎn)品滿足使用要求的程度 軟件各種屬性的組合程度軟件各種屬性的組合程度 用戶對軟件產(chǎn)品的綜合反映程度用戶對軟件產(chǎn)品的綜合反映程度 軟件在使用過程中滿足用
3、戶要求的程度軟件在使用過程中滿足用戶要求的程度 軟件缺陷的主要類型軟件缺陷的主要類型/ /現(xiàn)象:現(xiàn)象:p 功能、特性沒有實現(xiàn)或部分實現(xiàn)功能、特性沒有實現(xiàn)或部分實現(xiàn)p 設(shè)計不合理,存在缺陷設(shè)計不合理,存在缺陷p 實際結(jié)果和預(yù)期結(jié)果不一致實際結(jié)果和預(yù)期結(jié)果不一致p 運行出錯,包括運行中斷、系統(tǒng)崩潰、界面混亂運行出錯,包括運行中斷、系統(tǒng)崩潰、界面混亂p 數(shù)據(jù)結(jié)果不正確、精度不夠數(shù)據(jù)結(jié)果不正確、精度不夠p 用戶不能接受的其他問題,如存取時間過長、界面不美觀用戶不能接受的其他問題,如存取時間過長、界面不美觀 第三章第三章 軟件測試方法軟件測試方法3.1 白盒測試方法白盒測試方法3.2 黑盒測試方法黑盒測
4、試方法3.3 測試用例設(shè)計與維護測試用例設(shè)計與維護主要內(nèi)容主要內(nèi)容p 掌握白盒測試的覆蓋測試、基路徑測試方法掌握白盒測試的覆蓋測試、基路徑測試方法p 掌握和理解黑盒測試方法中常用的黑盒測試方法掌握和理解黑盒測試方法中常用的黑盒測試方法p 了解其它的白盒測試和黑盒測試方法了解其它的白盒測試和黑盒測試方法p 能用白盒和黑盒測試技術(shù)去解決實際問題能用白盒和黑盒測試技術(shù)去解決實際問題p 理解和掌握測試用例的設(shè)計維護理解和掌握測試用例的設(shè)計維護 學(xué)習(xí)目標學(xué)習(xí)目標假設(shè)此時開發(fā)工作已結(jié)束,程假設(shè)此時開發(fā)工作已結(jié)束,程序送交到測試組,沒有人知道代碼序送交到測試組,沒有人知道代碼中有中有一個潛在的被一個潛在的被
5、0 0 除的錯誤除的錯誤。若。若測試組采用的測試用例的執(zhí)行路徑測試組采用的測試用例的執(zhí)行路徑?jīng)]有同時經(jīng)過沒有同時經(jīng)過x=0 x=0和和y=5/xy=5/x進行測試進行測試,顯然測試工作似乎非常完善,測,顯然測試工作似乎非常完善,測試用例覆蓋了所有執(zhí)行語句,也沒試用例覆蓋了所有執(zhí)行語句,也沒有被有被 0 0 除的錯誤發(fā)生。除的錯誤發(fā)生。為什么要進行白盒測試?為什么要進行白盒測試? 如果所有軟件錯誤的根源都可以追溯到某個唯一原如果所有軟件錯誤的根源都可以追溯到某個唯一原因,那么問題就簡單了。然而,事實上一個因,那么問題就簡單了。然而,事實上一個bug bug 常常是常常是由多個因素共同導(dǎo)致的,如下
6、圖所示。由多個因素共同導(dǎo)致的,如下圖所示。3.1 白盒測試方法白盒測試方法白盒測試白盒測試白盒測試白盒測試是指把測試對象看做一個透明的是指把測試對象看做一個透明的盒子,測試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)盒子,測試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息設(shè)計測試用例,檢查程序中所及有關(guān)信息設(shè)計測試用例,檢查程序中所有邏輯路徑是否都按預(yù)定的要求正確的工有邏輯路徑是否都按預(yù)定的要求正確的工作。因此白盒測試又稱為作。因此白盒測試又稱為結(jié)構(gòu)測試結(jié)構(gòu)測試或或邏輯邏輯驅(qū)動測試驅(qū)動測試。白盒測試白盒測試是基于覆蓋的測試,盡可能覆蓋程序的結(jié)構(gòu)特性和邏輯路徑,是基于覆蓋的測試,盡可能覆蓋程序的結(jié)構(gòu)特性和邏輯路徑,所以其具
7、體方法有所以其具體方法有邏輯覆蓋、循環(huán)覆蓋、基本路徑覆蓋邏輯覆蓋、循環(huán)覆蓋、基本路徑覆蓋。p邏輯覆蓋:以程序的邏輯覆蓋:以程序的內(nèi)部邏輯結(jié)構(gòu)內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ),進一步可分為語句覆為基礎(chǔ),進一步可分為語句覆蓋、判定覆蓋、條件覆蓋、判定蓋、判定覆蓋、條件覆蓋、判定- -條件覆蓋、條件組合覆蓋等條件覆蓋、條件組合覆蓋等p基本路徑測試:在基本路徑測試:在程序控制流程程序控制流程的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路的基礎(chǔ)上,分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例。復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例。白盒測試主要用于對白盒測試主要用于對模塊模塊的單元測試,主要包括以下四個
8、模塊:的單元測試,主要包括以下四個模塊:程序模塊中的所有獨立路徑至少執(zhí)行一次程序模塊中的所有獨立路徑至少執(zhí)行一次對所有邏輯判定的取值(對所有邏輯判定的取值(“真真”與與“假假”)都至少測試一次)都至少測試一次在上下邊界及可操作范圍內(nèi)運行所有循環(huán)在上下邊界及可操作范圍內(nèi)運行所有循環(huán)測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性等白盒測試的原則白盒測試的原則白盒測試白盒測試法試圖窮舉路徑測試,企圖遍歷所有的路徑是很難做到法試圖窮舉路徑測試,企圖遍歷所有的路徑是很難做到的,即使每條路徑都測試了,覆蓋率達到的,即使每條路徑都測試了,覆蓋率達到100%,程序仍可能出,程序仍可能出錯。因為:錯。因為:
9、決不能查出程序違反了設(shè)計規(guī)范,即程序在實現(xiàn)一個不是用戶決不能查出程序違反了設(shè)計規(guī)范,即程序在實現(xiàn)一個不是用戶需要的功能。需要的功能。不可能查出程序中遺漏路徑而出錯。不可能查出程序中遺漏路徑而出錯??赡馨l(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的異常錯誤??赡馨l(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的異常錯誤。白盒測試白盒測試測試用例測試用例被測程序被測程序源程序源程序分析分析覆蓋情況覆蓋情況分析分析執(zhí)行路徑執(zhí)行路徑補充:測試覆蓋率補充:測試覆蓋率p測試覆蓋率:測試覆蓋率:用于確定測試用于確定測試所執(zhí)行到的覆蓋項的百分比所執(zhí)行到的覆蓋項的百分比。其中。其中的覆蓋項是指作為測試基礎(chǔ)的一個入口或?qū)傩?,比如語句、分的覆蓋項是指作為測試基礎(chǔ)
10、的一個入口或?qū)傩裕热缯Z句、分支、條件等。支、條件等。p測試覆蓋率可以表示出測試的充分性,在測試分析報告中可以測試覆蓋率可以表示出測試的充分性,在測試分析報告中可以作為量化指標的依據(jù),作為量化指標的依據(jù),測試覆蓋率越高效果越好測試覆蓋率越高效果越好。但覆蓋率不。但覆蓋率不是目標,只是一種手段。是目標,只是一種手段。 p測試覆蓋率包括測試覆蓋率包括功能點覆蓋率和結(jié)構(gòu)覆蓋率功能點覆蓋率和結(jié)構(gòu)覆蓋率: 功能點覆蓋率功能點覆蓋率大致用于表示軟件已經(jīng)實現(xiàn)的功能與軟件需要實大致用于表示軟件已經(jīng)實現(xiàn)的功能與軟件需要實現(xiàn)的功能之間的比例關(guān)系。現(xiàn)的功能之間的比例關(guān)系。 結(jié)構(gòu)覆蓋率結(jié)構(gòu)覆蓋率包括語句覆蓋率、分支覆
11、蓋率、循環(huán)覆蓋率、路徑包括語句覆蓋率、分支覆蓋率、循環(huán)覆蓋率、路徑覆蓋率等等。覆蓋率等等。 根據(jù)根據(jù)覆蓋目標的不同覆蓋目標的不同,邏輯覆蓋又可分為語句覆蓋、判定覆蓋、,邏輯覆蓋又可分為語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。條件覆蓋、組合覆蓋和路徑覆蓋。邏輯覆蓋邏輯覆蓋p 語句覆蓋語句覆蓋p 判定覆蓋(分支覆蓋)判定覆蓋(分支覆蓋)p 條件覆蓋條件覆蓋p 判定判定-條件覆蓋條件覆蓋p 條件組合覆蓋條件組合覆蓋p 路徑覆蓋路徑覆蓋3.1.1 語句覆蓋語句覆蓋p語句覆蓋法的基本思想是設(shè)計若干測試用例,運行被語句覆蓋法的基本思想是設(shè)計若干測試用例,運行被測程序
12、,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次測程序,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次p如果是順序結(jié)構(gòu),就是讓測試從頭執(zhí)行到尾如果是順序結(jié)構(gòu),就是讓測試從頭執(zhí)行到尾語句覆蓋率語句覆蓋率已執(zhí)行的可執(zhí)行語句已執(zhí)行的可執(zhí)行語句/ /程序中可執(zhí)行語句總數(shù)程序中可執(zhí)行語句總數(shù)* *100%100%復(fù)雜的程序不可能達到語句的完全覆蓋復(fù)雜的程序不可能達到語句的完全覆蓋語句覆蓋率越高越好語句覆蓋率越高越好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è)計若干測試用例,使程序中的每個可執(zhí)行語句設(shè)計若干測試用例,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次至少被執(zhí)行一次用例ABX執(zhí)行路徑Case1203ace Case2213abe 語句覆蓋語句覆蓋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此語句未覆蓋此語句未覆蓋語句覆蓋測試用例語句覆蓋測試用例 p達到語句覆蓋達到語句覆蓋100%的測試用例的測試用例 a = 2 b = 0 x = 3p未達到語句覆蓋未達到語句覆蓋100%的測試用例的測試用例 a = 2 b = 1 x = 3語句覆蓋的優(yōu)點:語句覆蓋的優(yōu)點:p檢查所有語句檢查所有語句p結(jié)構(gòu)簡單的代碼的測試效果較好結(jié)構(gòu)簡單的代碼的測試效果較好p容易實現(xiàn)自動測試容易實現(xiàn)自動測試p代碼覆蓋率高代碼覆蓋率高 Case1:A=2, B=0,
15、X=3錯寫成錯寫成OR錯寫成錯寫成AND語句覆蓋不能準確的判斷運算中的邏輯關(guān)系語句覆蓋不能準確的判斷運算中的邏輯關(guān)系錯誤語句覆蓋是錯誤語句覆蓋是最弱最弱的覆蓋的覆蓋語句覆蓋語句覆蓋(A1) AND (B=0)(A=2) OR (X1)aX=X/AX=X+1eFFTTbdc語句覆蓋不能檢查出的錯誤語句覆蓋不能檢查出的錯誤p邏輯運算(&、|)錯誤 判定的第一個運算符“&”錯寫成“|”,或第二個運算符“|”錯寫成“&”,這時使用上述的測試用例仍然可以達到100%的語句覆蓋。3.1.2 判定覆蓋判定覆蓋p判定覆蓋法的判定覆蓋法的基本思想基本思想是設(shè)計若干用是設(shè)計若干用例,運行被
16、測程序,使得程序中每個例,運行被測程序,使得程序中每個判斷的判斷的取真分支和取假分支取真分支和取假分支至少經(jīng)歷至少經(jīng)歷一次,即判斷真假值均曾被滿足。一次,即判斷真假值均曾被滿足。p一個判定往往代表著程序的一個分支一個判定往往代表著程序的一個分支,所以判定覆蓋也被稱為分支覆蓋。,所以判定覆蓋也被稱為分支覆蓋。用例ABX執(zhí)行路徑Case1203ace 真真真真 Case3101abd 假假假假Case4303acd 真假真假Case5211abe 假真假真 判定覆蓋案例判定覆蓋案例p設(shè)計若干用例,使得程序中每個判斷的取真分支和取假分設(shè)計若干用例,使得程序中每個判斷的取真分支和取假分支至少經(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錯寫成錯寫成X1) AND (B=0)(A=2
18、) OR (X1)aX=X/AX=X+1eFFTTbdc只做到判定覆蓋將無法確定判定內(nèi)部條件中取只做到判定覆蓋將無法確定判定內(nèi)部條件中取“或(或(OROR)”的錯誤。因此判定覆蓋仍是弱的覆蓋標準。的錯誤。因此判定覆蓋仍是弱的覆蓋標準。判定覆蓋判定覆蓋3.1.3 條件覆蓋條件覆蓋p條件覆蓋的基本思想是設(shè)條件覆蓋的基本思想是設(shè)計若干測試用例,執(zhí)行被計若干測試用例,執(zhí)行被測程序以后,要使每個判測程序以后,要使每個判斷中每個條件的可能取值斷中每個條件的可能取值至少滿足一次。至少滿足一次。(iN) and (result=maxint)TrueFalseresult=maxinti1B=0A=2X1取真
19、值為取真值為T1T2T3T4F1F2F3F4取假值為取假值為p滿足條件覆蓋的一組測試用例如下:滿足條件覆蓋的一組測試用例如下:用例用例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兩個測試用例覆蓋了四個條件八種可能取值兩個測試用例覆蓋了四個條件八種可能取值, ,但未覆蓋但未覆蓋c c、d d分支分支, ,
20、不不滿足判定覆蓋的要求。所以要引入判定滿足判定覆蓋的要求。所以要引入判定- -條件覆蓋,使測試更充分。條件覆蓋,使測試更充分。3.1.4 判定判定-條件覆蓋條件覆蓋p判定判定-條件覆蓋是判定和條件覆蓋設(shè)計方法的交集,即條件覆蓋是判定和條件覆蓋設(shè)計方法的交集,即設(shè)計足夠的測試用例,使判定中設(shè)計足夠的測試用例,使判定中每個條件的可能取值每個條件的可能取值至少滿足一次,并且使至少滿足一次,并且使每個判定分支每個判定分支至少執(zhí)行一次。至少執(zhí)行一次。p判定判定-條件覆蓋能條件覆蓋能同時滿足判定、條件兩種覆蓋同時滿足判定、條件兩種覆蓋標準。標準。用例用例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判定判定-條件覆蓋測試用例依然可能會忽視代碼中的條件覆蓋測試用例依然可能會
22、忽視代碼中的錯誤。錯誤。Case8中中B0,然而然而Case3中中B=0,但是通,但是通過的過的路徑是一樣路徑是一樣的,都是的,都是 abd ,并且另外兩條,并且另外兩條路徑?jīng)]有被覆蓋,在這時,第二個路徑?jīng)]有被覆蓋,在這時,第二個條件條件X1沒有沒有滿足還是發(fā)現(xiàn)不了。滿足還是發(fā)現(xiàn)不了。p為了測試的更充分,因此測試時,不僅為了測試的更充分,因此測試時,不僅每個條件每個條件被測試被測試,而且,而且每個條件的組合每個條件的組合也應(yīng)該被覆蓋,這也應(yīng)該被覆蓋,這就是條件組合覆蓋測試就是條件組合覆蓋測試判定判定-條件覆蓋測試的缺點條件覆蓋測試的缺點3.1.5 條件組合測試條件組合測試p條件組合覆蓋條件組合
23、覆蓋的基本思想是設(shè)計足夠的測試用的基本思想是設(shè)計足夠的測試用例,使得每個判定中條件的各種可能組合都至例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。少出現(xiàn)一次。p它與條件覆蓋的差別是它不是簡單地要求每個它與條件覆蓋的差別是它不是簡單地要求每個條件都出現(xiàn)條件都出現(xiàn)“真真”與與“假假”兩種結(jié)果,而是要兩種結(jié)果,而是要求讓這些結(jié)果的求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次所有可能組合都至少出現(xiàn)一次。p2個條件,個條件,3個變量,個變量,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è)計右邊偽程序的、設(shè)計右邊偽程序的語句覆蓋和路徑覆蓋語句覆蓋和路徑覆蓋測試用例測試用例A5B10C15X=10X=1Y=20Y=2Z=30Z=3TFTTFF程序流程圖:程序流程圖:分析:語句覆蓋測試用例分析:語句覆蓋測試用例p因為每個判定表達式因為每個判定表達式為真或為假時均有賦值語句,為真或為假時均有賦值語句,為了使每個語句都至
25、少執(zhí)行一次,總共需要兩組為了使每個語句都至少執(zhí)行一次,總共需要兩組測試數(shù)據(jù)測試數(shù)據(jù),以便使得每個判定表達式取值為真或,以便使得每個判定表達式取值為真或為假各一次。為假各一次。1、使、使3個判定表達式之值個判定表達式之值全為假全為假輸入:輸入:A,B,C:1,1,1輸出:輸出:X,Y,Z:1,2,32、使、使3個判定表達式之值個判定表達式之值全為真全為真輸入:輸入:A,B,C:20,40,60輸出:輸出:X,Y,Z:10,20,30分析:路徑覆蓋測試用例分析:路徑覆蓋測試用例p本程序有本程序有8條可能的執(zhí)行通路,為做到路徑條可能的執(zhí)行通路,為做到路徑覆蓋總共需要覆蓋總共需要8組測試數(shù)據(jù)。組測試數(shù)
26、據(jù)。1、使、使3個判定表達式之值個判定表達式之值全為假全為假輸入:輸入:A,B,C:1,1,1輸出:輸出:X,Y,Z:1,2,32、 3個判定表達式依次為個判定表達式依次為假、假、真假、假、真輸入:輸入:A,B,C:1,1,60輸出:輸出:X,Y,Z:1,2,303、 3個判定表達式依次為個判定表達式依次為假、真、假假、真、假輸入:輸入:A,B,C:1,40,1輸出:輸出:X,Y,Z:1,20,34、 3個判定表達式依次為個判定表達式依次為假、真、真假、真、真輸入:輸入:A,B,C:1,40,60輸出:輸出:X,Y,Z:1,20,30分析:路徑覆蓋測試用例分析:路徑覆蓋測試用例5、 3個判定表
27、達式依次為個判定表達式依次為真、假、假真、假、假輸入:輸入:A,B,C:20,1,1輸出:輸出:X,Y,Z:10,2,36、 3個判定表達式依次為個判定表達式依次為真、假、真真、假、真輸入:輸入:A,B,C:20,1,60輸出:輸出:X,Y,Z:10,2,30分析:路徑覆蓋測試用例分析:路徑覆蓋測試用例7、3個判定表達式之值依次為個判定表達式之值依次為真、真、假真、真、假輸入:輸入:A,B,C:20,40,1輸出:輸出:X,Y,Z:10,20,38、使、使3個判定表達式之值個判定表達式之值全為真全為真輸入:輸入:A,B,C:20,40,60輸出:輸出:X,Y,Z:10,20,30分析:路徑覆蓋
28、測試用例分析:路徑覆蓋測試用例課堂練習(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è)計右邊偽程序的、設(shè)計右邊偽程序的分支覆蓋和條件組合覆蓋分支覆蓋和條件組合覆蓋測試用例:測試用例:程序流程圖:程序流程圖:(A0)AND(B0)(CA)OR(DB)X=ABX=ABY=CDY=CDTFTF分析:分支覆蓋測試用例分析:分支覆蓋測試用例1、使兩個判定表達式全為假、使兩個判定表達式全為假輸入:輸入:A,B,C,D:-1,-2,
29、-3,1預(yù)期輸出:預(yù)期輸出:X=1,Y=-22、使兩個判定表達式全為真、使兩個判定表達式全為真輸入:輸入:A,B,C,D:1,2,3,1預(yù)期輸出:預(yù)期輸出:X=3,Y=2p 分支覆蓋(判定)標準分支覆蓋(判定)標準為,不僅使為,不僅使每個語句每個語句至少執(zhí)行一至少執(zhí)行一次,而且使次,而且使每個判定表達式每個判定表達式的每個分支都至少執(zhí)行一次的每個分支都至少執(zhí)行一次p 因為每個判定表達式因為每個判定表達式為真或為假時均有賦值語句為真或為假時均有賦值語句,為做,為做到分支覆蓋,到分支覆蓋,至少需要兩組測試數(shù)據(jù)至少需要兩組測試數(shù)據(jù),以使每個判定表達,以使每個判定表達式的值為真或為假各一次。下面是典型
30、的測試用例:式的值為真或為假各一次。下面是典型的測試用例:分析:條件組合覆蓋測試用例分析:條件組合覆蓋測試用例p條件組合覆蓋標準為,使得每個判定表達式中條件的各條件組合覆蓋標準為,使得每個判定表達式中條件的各種可能組合都至少出現(xiàn)一次種可能組合都至少出現(xiàn)一次p本題中共有兩個判定表達式,每個判定表達式中有兩個本題中共有兩個判定表達式,每個判定表達式中有兩個簡單條件,因此總共有簡單條件,因此總共有8種可能的條件組合種可能的條件組合: A0,B0 A0 ,B0 A0, B0 A0, B 0 CA,DB CA,DB CA,DB CA,DB分析:條件組合覆蓋測試用例分析:條件組合覆蓋測試用例p下面的下面的
31、4個測試用例,可以使上面列出的個測試用例,可以使上面列出的8種條件組合每種條件組合每種至少出現(xiàn)一次種至少出現(xiàn)一次1、實現(xiàn)、實現(xiàn) 組合組合 輸入:輸入:A,B,C,D:1,1,2,0 預(yù)期輸出:預(yù)期輸出:X2,Y22、實現(xiàn)、實現(xiàn) 組合組合 輸入:輸入:A,B,C,D:1,0,2,1 預(yù)期輸出:預(yù)期輸出:X1,Y13、實現(xiàn)、實現(xiàn) 組合組合 輸入:輸入:A,B,C,D:0,1,1,0 預(yù)期輸出:預(yù)期輸出:X1,Y14、實現(xiàn)、實現(xiàn) 組合組合 輸入:輸入:A,B,C,D:0,0,1,1 預(yù)期輸出:預(yù)期輸出:X0,Y0補充:基本路徑測試方法補充:基本路徑測試方法p路徑測試路徑測試就是從一個就是從一個程序的
32、入口程序的入口開始,執(zhí)行所經(jīng)歷的各個開始,執(zhí)行所經(jīng)歷的各個語句的完整過程。從廣義的角度講,任何有關(guān)路徑分析的語句的完整過程。從廣義的角度講,任何有關(guān)路徑分析的測試都可以被稱為路徑測試。測試都可以被稱為路徑測試。p完成完成路徑測試的理想情況路徑測試的理想情況是做到路徑覆蓋,但對于復(fù)雜性是做到路徑覆蓋,但對于復(fù)雜性大的程序要做到大的程序要做到所有路徑覆蓋所有路徑覆蓋(測試所有可執(zhí)行路徑)是(測試所有可執(zhí)行路徑)是不可能的。不可能的。p在不能做到所有路徑覆蓋的前提下,如果在不能做到所有路徑覆蓋的前提下,如果某一程序的每一某一程序的每一個獨立路徑個獨立路徑都被測試過,那么都被測試過,那么可以認為程序中
33、的每個語句可以認為程序中的每個語句都已經(jīng)檢驗過了,即達到了語句覆蓋都已經(jīng)檢驗過了,即達到了語句覆蓋。這種測試方法就是。這種測試方法就是通常所說的通常所說的基本路徑測試方法基本路徑測試方法。 3.1.7 基本路徑測試基本路徑測試p基本路徑測試法基本路徑測試法是在程序是在程序控制流程圖控制流程圖的基礎(chǔ)上,通過的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜度,導(dǎo)出基本可執(zhí)行路徑集分析控制構(gòu)造的環(huán)路復(fù)雜度,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。合,從而設(shè)計測試用例的方法。p設(shè)計出的測試用例要保證設(shè)計出的測試用例要保證被測試程序的每個可執(zhí)行語被測試程序的每個可執(zhí)行語句句至少被執(zhí)行一次。至少被執(zhí)行一次。
34、程序的程序的控制流圖控制流圖。 計算程序環(huán)路復(fù)雜度。計算程序環(huán)路復(fù)雜度。 確定基本路徑。確定基本路徑。 準備測試用例。確?;韭窂浇M中的每一條路徑被執(zhí)行一次。準備測試用例。確?;韭窂浇M中的每一條路徑被執(zhí)行一次?;韭窂綔y試法實現(xiàn)的基本步驟如下:基本路徑測試法實現(xiàn)的基本步驟如下:控制流程圖控制流程圖p控制流圖是退化的程序流程圖,它是控制流圖是退化的程序流程圖,它是描述程序控制流描述程序控制流的一種圖示方式,圖中每個處理都退化成一個結(jié)點,的一種圖示方式,圖中每個處理都退化成一個結(jié)點,流線變成連接不同結(jié)點的流線變成連接不同結(jié)點的有向弧有向弧。p在控制流圖中用圓在控制流圖中用圓“”表示節(jié)點,一個圓代
35、表一條表示節(jié)點,一個圓代表一條或多條語句?;蚨鄺l語句。p控制流圖中的控制流圖中的基本元素基本元素:節(jié)點節(jié)點邊邊程序的控制流圖程序的控制流圖p節(jié)點節(jié)點標有編號的圓圈標有編號的圓圈 程序流程圖中矩形框所表示的處理程序流程圖中矩形框所表示的處理 菱形表示的兩個甚至多個出口判斷菱形表示的兩個甚至多個出口判斷 多條流線相交的匯合點多條流線相交的匯合點 p邊邊由帶箭頭的弧或線表示由帶箭頭的弧或線表示與程序流程圖中的流線一致與程序流程圖中的流線一致,表明了控制表明了控制的順序的順序 它代表程序中的控制流。它代表程序中的控制流。 控制流線通常標有名字控制流線通常標有名字12435abcdef程序流程圖程序流程
36、圖控制程控制程圖圖p由邊和節(jié)點所限定的范圍被稱為由邊和節(jié)點所限定的范圍被稱為區(qū)域區(qū)域。p包含條件的節(jié)點被稱為包含條件的節(jié)點被稱為判斷節(jié)點。判斷節(jié)點。常見語句的控制流圖常見語句的控制流圖順序語句順序語句While語句語句If語句語句do while語句語句Case語句語句練習(xí):練習(xí):1236784511流程圖 控制流圖將程序流程圖轉(zhuǎn)化為控制流圖將程序流程圖轉(zhuǎn)化為控制流圖三角形問題三角形問題(流程圖流圖流程圖流圖) 計算程序環(huán)路復(fù)雜度計算程序環(huán)路復(fù)雜度p通過對程序的通過對程序的控制流程圖的分析和判斷控制流程圖的分析和判斷來計算程序的來計算程序的環(huán)路復(fù)雜性,從程序的環(huán)路復(fù)雜性可環(huán)路復(fù)雜性,從程序的環(huán)
37、路復(fù)雜性可導(dǎo)出程序基本路導(dǎo)出程序基本路徑集合中的獨立路徑條數(shù)徑集合中的獨立路徑條數(shù),這是確定程序中每個可執(zhí),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。p程序環(huán)路復(fù)雜度又叫圈復(fù)雜度。程序環(huán)路復(fù)雜度又叫圈復(fù)雜度。p圈復(fù)雜度:是一種為程序邏輯復(fù)雜性提供定量測度的圈復(fù)雜度:是一種為程序邏輯復(fù)雜性提供定量測度的軟件度量,將該度量用于計算程序的基本的獨立路徑軟件度量,將該度量用于計算程序的基本的獨立路徑數(shù)目。數(shù)目。p獨立路徑必須包含一條在定義之前不曾用到的邊。獨立路徑必須包含一條在定義之前不曾用到的邊。(每一條新的路徑都包含了一條新邊
38、每一條新的路徑都包含了一條新邊)p環(huán)路復(fù)雜性可用環(huán)路復(fù)雜性可用V(G)來表示,其計算方法主要有來表示,其計算方法主要有三種:三種: V(G) = 區(qū)域數(shù)量區(qū)域數(shù)量(由節(jié)點、連線包圍的區(qū)域,由節(jié)點、連線包圍的區(qū)域,包括圖形外部區(qū)域包括圖形外部區(qū)域) V(G) = 邊數(shù)量邊數(shù)量 - 節(jié)點數(shù)量節(jié)點數(shù)量 + 2 V(G) = 判斷節(jié)點數(shù)量判斷節(jié)點數(shù)量 + 1ABCED 計算程序環(huán)路復(fù)雜度計算程序環(huán)路復(fù)雜度 確定基本路徑和確定基本路徑和 準備測試用例準備測試用例p通過程序的通過程序的控制流程圖的基本路徑控制流程圖的基本路徑導(dǎo)出程序的導(dǎo)出程序的基本路基本路徑集合徑集合,在一個基本路徑集合里,每條路徑都是唯
39、一,在一個基本路徑集合里,每條路徑都是唯一的,但是基本路徑的組(集合)不是唯一的,還可以的,但是基本路徑的組(集合)不是唯一的,還可以有其他的路徑組有其他的路徑組ABCED路徑路徑1:ACE路徑路徑2:ABCE路徑路徑3:ABCDEp準備測試用例。確?;韭窂浇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ù)所給出的程序,畫出其程序流程圖和對應(yīng)的控制流圖根據(jù)所給出的程序,畫出其程序流程圖和對應(yīng)的控制流圖467810121314程序流程圖程序流程圖467810121314KBCDEFGHIJA控制流圖控制流圖467810121314KBCDEFGHIJA對應(yīng)右面圖中的環(huán)路復(fù)雜性,計算如對應(yīng)右面圖中的環(huán)路復(fù)雜性,計算如下:下: 流圖中有四個區(qū)域;流圖中有四個區(qū)域; V(G)=11條邊條邊-9結(jié)點結(jié)點+2=4; V(G)=3個判定結(jié)點個判定結(jié)點+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計算環(huán)路復(fù)雜度計算環(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白盒測試方法歸納白盒測試方法歸納在白盒測試中,可以使用各種測試方法的綜合策略在白盒測試中,可以使用各種測試方法的綜合策略如下:如下:(1)(1)在測試中,應(yīng)盡量先使用工具進行在測試中,應(yīng)盡量先使用工具進行靜態(tài)結(jié)構(gòu)分析靜態(tài)結(jié)構(gòu)分析。(2)(2)測試中可采取測試中可采取先靜態(tài)后動態(tài)的組合方式先靜態(tài)后動態(tài)的組合方式:先進行靜態(tài):先進行靜態(tài)結(jié)構(gòu)分析、代碼檢查,再進行覆蓋率測試。結(jié)構(gòu)分析、代碼檢查,再進行覆蓋率測試。(3)(3)覆蓋率測試覆蓋率測試是白盒測試的重點,一般可使用基本路徑是白盒測試的重點,一般可使用基本路徑測試法達到語句覆蓋標準;對于軟件的重點模塊,應(yīng)使測試法達到語句覆蓋標準;對于軟件的重
44、點模塊,應(yīng)使用多種覆蓋率標準衡量代碼的覆蓋率。用多種覆蓋率標準衡量代碼的覆蓋率。(4)(4)在在不同的測試節(jié)點,測試的側(cè)重點不同不同的測試節(jié)點,測試的側(cè)重點不同:在單元測試:在單元測試階段,以代碼檢查、邏輯覆蓋為主;在集成測試階段,階段,以代碼檢查、邏輯覆蓋為主;在集成測試階段,需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測試階段,應(yīng)根據(jù)黑需要增加靜態(tài)結(jié)構(gòu)分析等;在系統(tǒng)測試階段,應(yīng)根據(jù)黑盒測試的結(jié)果,采取相應(yīng)的白盒測試。盒測試的結(jié)果,采取相應(yīng)的白盒測試。圖形矩陣圖形矩陣p導(dǎo)出控制流圖和決定基本測試路徑的過程均需要導(dǎo)出控制流圖和決定基本測試路徑的過程均需要機械化,為了開發(fā)輔助基本路徑測試的軟件工具,機械化,為
45、了開發(fā)輔助基本路徑測試的軟件工具,稱為圖形矩陣稱為圖形矩陣(graph matrix)的數(shù)據(jù)結(jié)構(gòu)很有用。的數(shù)據(jù)結(jié)構(gòu)很有用。p定義:有定義:有m個節(jié)點的控制流圖矩陣,是一個節(jié)點的控制流圖矩陣,是一個個mm矩陣:矩陣:A=( a (i,j) ),其中,其中a(i,j)是是1,當且僅當從節(jié)點,當且僅當從節(jié)點i到節(jié)點到節(jié)點j有一條弧,有一條弧,否則該元素為否則該元素為0。圖形矩陣圖形矩陣例:例:12345671010000020010001300011004000001050000010601000007000000063542173.2 黑盒測試方法黑盒測試方法3.2.1 等價類劃分法等價類劃分法3
46、.2.2 邊界值分析法邊界值分析法3.2.3 判定表方法判定表方法3.2.4 因果圖法因果圖法黑盒測試方法黑盒測試方法黑盒測試黑盒測試是指把測試對象看做是指把測試對象看做一個黑盒子,測試人員完全不一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,在部特性,在程序接口進行測試程序接口進行測試,它只檢查程序功能是否按照它只檢查程序功能是否按照需需求規(guī)格說明書求規(guī)格說明書的規(guī)定正常使用,的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)程序是否能適當?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫或且保持外部信息(如數(shù)據(jù)庫或文件)的
47、完整性,檢查文件)的完整性,檢查程序的程序的功能功能是否符合它的功能需求。是否符合它的功能需求。因此黑盒測試又叫因此黑盒測試又叫功能測試功能測試或或數(shù)據(jù)驅(qū)動測試數(shù)據(jù)驅(qū)動測試。黑盒測試不深入代碼細節(jié)黑盒測試不深入代碼細節(jié)軟件輸入輸入輸輸出出“黑盒黑盒”的兩種基本方法的兩種基本方法p黑盒測試有兩種基本方法,即黑盒測試有兩種基本方法,即通過測試通過測試和和失敗測試失敗測試。 p在進行在進行通過測試通過測試時,實際上是確認軟件能做什么,而不時,實際上是確認軟件能做什么,而不會去考驗其能力如何。軟件測試員只運用最簡單,最直會去考驗其能力如何。軟件測試員只運用最簡單,最直觀的測試案例。觀的測試案例。 在設(shè)
48、計和執(zhí)行測試案例時,總是先要進行通過測試。在在設(shè)計和執(zhí)行測試案例時,總是先要進行通過測試。在進行破壞性試驗之前,看一看軟件基本功能是否能夠?qū)嵾M行破壞性試驗之前,看一看軟件基本功能是否能夠?qū)崿F(xiàn)。這一點很重要,否則在正常使用軟件時就會奇怪地現(xiàn)。這一點很重要,否則在正常使用軟件時就會奇怪地發(fā)現(xiàn),為什么會有那么多的軟件缺陷出現(xiàn)?發(fā)現(xiàn),為什么會有那么多的軟件缺陷出現(xiàn)? p在確信了軟件正確運行之后,就可以采取各種手段通過在確信了軟件正確運行之后,就可以采取各種手段通過搞搞“垮垮”軟件來找出缺陷軟件來找出缺陷。純粹為了破壞軟件而設(shè)計和。純粹為了破壞軟件而設(shè)計和執(zhí)行的測試案例,被稱為失敗測試或迫使出錯測試。執(zhí)
49、行的測試案例,被稱為失敗測試或迫使出錯測試。黑盒測試過程黑盒測試過程需求需求說明說明產(chǎn)生產(chǎn)生被測程序被測程序測試結(jié)果測試結(jié)果輸出輸出比較比較黑盒測試的目標黑盒測試的目標p 黑盒測試試圖發(fā)現(xiàn)以下類型的錯誤:黑盒測試試圖發(fā)現(xiàn)以下類型的錯誤:功能錯誤或遺漏;功能錯誤或遺漏;界面錯誤,不美觀;界面錯誤,不美觀;數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤;數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤;性能錯誤;性能錯誤;初始化和終止錯誤初始化和終止錯誤接口錯誤,在接口上,能否正確地接受輸入數(shù)據(jù),接口錯誤,在接口上,能否正確地接受輸入數(shù)據(jù),能否產(chǎn)生正確地輸出信息如輸入能否產(chǎn)生正確地輸出信息如輸入/輸出參數(shù)的個數(shù)、輸出參數(shù)的個數(shù)、類
50、型等;類型等;黑盒測試的優(yōu)、缺點黑盒測試的優(yōu)、缺點p黑盒測試的優(yōu)點有:黑盒測試的優(yōu)點有:比較簡單,比較簡單,不需要了解程序內(nèi)部的代碼及實現(xiàn)不需要了解程序內(nèi)部的代碼及實現(xiàn);與軟件的內(nèi)部實現(xiàn)無關(guān);與軟件的內(nèi)部實現(xiàn)無關(guān);從從用戶角度用戶角度出發(fā),能很容易的知道用戶會用到哪些功出發(fā),能很容易的知道用戶會用到哪些功能,會遇到哪些問題;能,會遇到哪些問題;基于基于軟件開發(fā)文檔軟件開發(fā)文檔,所以也能知道軟件實現(xiàn)了文檔中,所以也能知道軟件實現(xiàn)了文檔中的哪些功能;的哪些功能;在做在做軟件自動化測試軟件自動化測試時較為方便。時較為方便。p黑盒測試的缺點有:黑盒測試的缺點有:不可能覆蓋所有的代碼,不可能覆蓋所有的代
51、碼,覆蓋率較低覆蓋率較低,大概只能達到,大概只能達到總代碼量的總代碼量的30%;自動化測試的復(fù)用性較低自動化測試的復(fù)用性較低。黑盒測試的難點黑盒測試的難點p黑盒測試的難點在于黑盒測試的難點在于如何構(gòu)造有效的輸入如何構(gòu)造有效的輸入。由于輸入空間通常是無限的,窮舉測試由于輸入空間通常是無限的,窮舉測試顯然行不通。顯然行不通。尋找最小最重要的用例集合以精簡測試尋找最小最重要的用例集合以精簡測試復(fù)雜性。復(fù)雜性。常用的黑盒測試方法常用的黑盒測試方法p 黑盒測試的測試用例設(shè)計方法黑盒測試的測試用例設(shè)計方法等價類劃分等價類劃分邊界值分析邊界值分析基于決策表的測試基于決策表的測試因果圖因果圖錯誤推測錯誤推測等
52、價類等價類等價類測試類型等價類測試類型案例案例本節(jié)內(nèi)本節(jié)內(nèi)容容等價類劃分方法等價類劃分方法問題引入問題引入測試的矛盾測試的矛盾為保證軟件產(chǎn)品的質(zhì)量,我們需要進行完為保證軟件產(chǎn)品的質(zhì)量,我們需要進行完備備( (徹底徹底) )的測試;但這是不現(xiàn)實的的測試;但這是不現(xiàn)實的, ,因為:因為: 輸入量太大輸入量太大 輸出結(jié)果太多輸出結(jié)果太多 軟件實現(xiàn)途徑太多軟件實現(xiàn)途徑太多p為了保證軟件質(zhì)量,我們需要做盡量多的測為了保證軟件質(zhì)量,我們需要做盡量多的測試,但不可能用所有可能的輸入數(shù)據(jù)來測試試,但不可能用所有可能的輸入數(shù)據(jù)來測試程序,即窮盡測試是不可能的。程序,即窮盡測試是不可能的。我們可以選我們可以選擇一
53、些有代表性的數(shù)據(jù)來測試程序,但怎樣擇一些有代表性的數(shù)據(jù)來測試程序,但怎樣選擇呢?選擇呢?等價類劃分是解決這一問題的一個等價類劃分是解決這一問題的一個方法。方法。p等價類方法可令測試事半功倍。等價類方法可令測試事半功倍。問題引入問題引入等價類劃方法的基本思想等價類劃方法的基本思想p 等價類劃分等價類劃分是把程序中所有可能的輸入是把程序中所有可能的輸入數(shù)據(jù)數(shù)據(jù)(有效的或無效的有效的或無效的),即程序的輸入域即程序的輸入域劃分成若干部分劃分成若干部分(子集子集),然后從每一個子然后從每一個子集中選取少數(shù)集中選取少數(shù)具有代表性的數(shù)據(jù)具有代表性的數(shù)據(jù)作為測作為測試用例進行測試。該測試方法是一種重試用例進
54、行測試。該測試方法是一種重要的、常用的黑盒測試用例設(shè)計方法。要的、常用的黑盒測試用例設(shè)計方法。等價類等價類p等價類等價類是某個輸入域的子集是某個輸入域的子集合合,在該子集中每個輸入數(shù),在該子集中每個輸入數(shù)據(jù)(有效等價類和無效等價類)據(jù)(有效等價類和無效等價類)對于揭露程序中的錯誤對于揭露程序中的錯誤都都是等效的是等效的。并合理地假定:測試某等價類的代表值就。并合理地假定:測試某等價類的代表值就等于對這一類其它值的測試。因此,可以把全部輸入數(shù)等于對這一類其它值的測試。因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價類據(jù)合理劃分為若干等價類,在每一個等價類中取一個數(shù)據(jù)在每一個等價類中取一個數(shù)據(jù)作為測試的
55、輸入條件,就可以用少量代表性的測試數(shù)據(jù)作為測試的輸入條件,就可以用少量代表性的測試數(shù)據(jù),取得較好的測試結(jié)果。,取得較好的測試結(jié)果。p分為分為有效等價類有效等價類和和無效等價類無效等價類。有效等價類是指有意義。有效等價類是指有意義的、是合理的輸入數(shù)據(jù),可檢查程序是否實現(xiàn)了規(guī)格說的、是合理的輸入數(shù)據(jù),可檢查程序是否實現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。無效等價類與有效等價類的明中所規(guī)定的功能和性能。無效等價類與有效等價類的意義相反。意義相反。設(shè)計測試用例時,要同時考慮這兩種設(shè)計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理等價類。因為軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗。經(jīng)
56、的數(shù)據(jù),也要能經(jīng)受意外的考驗。經(jīng)過正反的測試才能確保軟件具有更高過正反的測試才能確保軟件具有更高的可靠性。的可靠性。all inputsi1i4i2i3等價類測試等價類測試等價類的特點等價類的特點 完備性完備性 無冗余性無冗余性 等價性等價性 等價類測試的假設(shè):等價類測試的假設(shè): 測試某等價類的代表值,就等效于對這個等價類中其他測試某等價類的代表值,就等效于對這個等價類中其他值的測試。值的測試。 等價類測試的思想:等價類測試的思想: 把全部的輸入數(shù)據(jù)把全部的輸入數(shù)據(jù)劃分成若干個等價類劃分成若干個等價類,在每一個等價在每一個等價類中取一個數(shù)據(jù)類中取一個數(shù)據(jù)來進行測試。來進行測試。確定等價類的方法
57、確定等價類的方法p分類,即將輸入域按照具有相同特性或者類似功能進行分類。分類,即將輸入域按照具有相同特性或者類似功能進行分類。p抽象,即在各個子類中去抽象出相同特性并用實例來表征這個抽象,即在各個子類中去抽象出相同特性并用實例來表征這個特性。特性。1、如果某個輸入條件規(guī)定值的范圍,可以確定一個有效等價類和、如果某個輸入條件規(guī)定值的范圍,可以確定一個有效等價類和兩個無效等價類兩個無效等價類確定等價類的方法有確定等價類的方法有5 5種:種:in rangegreater than rangeless than range等價類在劃分的過程中,一般經(jīng)過兩個過程等價類在劃分的過程中,一般經(jīng)過兩個過程分
58、類和抽象:分類和抽象:例:例: 輸入值是學(xué)生成績,范圍是輸入值是學(xué)生成績,范圍是0100有效等價類:有效等價類:0成績成績100無效等價類:無效等價類:成績成績1002、如果輸入條件規(guī)定了、如果輸入條件規(guī)定了一個輸入值一個輸入值的集合,可以確定一個有效等的集合,可以確定一個有效等價類和一個無效等價類。價類和一個無效等價類。3、如果輸入條件是一個布爾表達式的條件,可以確定一個有效等、如果輸入條件是一個布爾表達式的條件,可以確定一個有效等價類和一個無效等價類價類和一個無效等價類確定等價類的方法確定等價類的方法4、如果規(guī)定了輸入數(shù)據(jù)的個數(shù),則類似地可以劃分出一個有效等、如果規(guī)定了輸入數(shù)據(jù)的個數(shù),則類
59、似地可以劃分出一個有效等價類和兩個無效等價類。價類和兩個無效等價類。例:一個學(xué)生每學(xué)期只能選修例:一個學(xué)生每學(xué)期只能選修13門課門課 有效等價類:有效等價類:選修選修13門門 無效等價類:無效等價類:不選不選 或或 選修超過選修超過3門門例:例: 輸入條件為輸入條件為 x=10有效等價類:有效等價類: x=10 無效等價類:無效等價類: x 10 例:程序輸入條件為例:程序輸入條件為bool x=true有效等價類:有效等價類: x=true 無效等價類:無效等價類:x=false5、在規(guī)定了輸入數(shù)據(jù)的一組值、在規(guī)定了輸入數(shù)據(jù)的一組值(假定假定n個個),并且程序要對每一個輸,并且程序要對每一個
60、輸入值分別處理的情況下,可確立入值分別處理的情況下,可確立n個有效等價類和一個無效等價個有效等價類和一個無效等價類。類。6、如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類、如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。確定等價類的方法確定等價類的方法例:輸入條件說明學(xué)歷可為例:輸入條件說明學(xué)歷可為:專科、本科、碩士、博士四種之一專科、本科、碩士、博士四種之一有效等價類:有效等價類:???、???、本科、本科、碩士、碩士、博士博士無效等價類:無效等價類:其它任何學(xué)歷其它任何學(xué)歷確定測試用例確定測試用例p 步驟:步驟:對對每個輸入每個輸入或或外部條
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年企業(yè)用車借用協(xié)議范本3篇
- 2025年度文化旅游融合項目投資借款協(xié)議
- 買賣合同第三方保證擔保合同(2024版)
- 二零二五年度旅行社旅游培訓(xùn)合作合同4篇
- 2025年度女方婚內(nèi)出軌離婚財產(chǎn)分割及贍養(yǎng)費協(xié)議
- 2025年度個人商鋪租賃合同能源消耗監(jiān)測與管理合同4篇
- 2025年度個人與企業(yè)間特殊用途車輛租賃合同3篇
- 二零二五年度農(nóng)民工勞動保護補貼發(fā)放合同標準
- 2024苗木運輸合同范本全面規(guī)范運輸過程中的風險防控3篇
- 二零二五年度加油站LED廣告屏安裝裝修合同3篇
- 北師大版小學(xué)三年級上冊數(shù)學(xué)第五單元《周長》測試卷(含答案)
- DB45T 1950-2019 對葉百部生產(chǎn)技術(shù)規(guī)程
- 資源枯竭型城市的轉(zhuǎn)型發(fā)展 課件 2024-2025學(xué)年高二上學(xué)期地理人教版選擇性必修2
- 2025屆河北省衡水市衡水中學(xué)高考仿真模擬英語試卷含解析
- 新修訂《保密法》知識考試題及答案
- 電工基礎(chǔ)知識培訓(xùn)課程
- 住宅樓安全性檢測鑒定方案
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年五年級上學(xué)期期末考試數(shù)學(xué)試題
- 市政道路及設(shè)施零星養(yǎng)護服務(wù)技術(shù)方案(技術(shù)標)
- 選擇性必修一 期末綜合測試(二)(解析版)2021-2022學(xué)年人教版(2019)高二數(shù)學(xué)選修一
- 《論語》學(xué)而篇-第一課件
評論
0/150
提交評論