第四部分(章)白盒測(cè)試方法_第1頁
第四部分(章)白盒測(cè)試方法_第2頁
第四部分(章)白盒測(cè)試方法_第3頁
第四部分(章)白盒測(cè)試方法_第4頁
第四部分(章)白盒測(cè)試方法_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1一、一、白盒測(cè)試白盒測(cè)試二、動(dòng)態(tài)測(cè)試二、動(dòng)態(tài)測(cè)試基本概念基本概念三、三、邏輯覆蓋邏輯覆蓋四、四、路徑分析路徑分析第四部分(章)白盒測(cè)試方法第四部分(章)白盒測(cè)試方法 2 此方法把測(cè)試對(duì)象看做一個(gè)透明的盒把測(cè)試對(duì)象看做一個(gè)透明的盒子子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。 通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。3(一)靜態(tài)白盒測(cè)試 靜態(tài)白盒測(cè)試是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過程。好處: 盡早發(fā)現(xiàn)軟件缺陷。 為黑盒測(cè)試員提

2、供思路。4(一)靜態(tài)白盒測(cè)試審查是正式、嚴(yán)格、具有深度的技術(shù)評(píng)審,以便盡可能準(zhǔn)確地確定問題之所在。審查過程的目的: 在軟件開發(fā)過程中盡可能早地發(fā)現(xiàn)問題。 確保對(duì)需要重做部分達(dá)成一致意見。 驗(yàn)證任何重做部分滿足預(yù)先定義的準(zhǔn)則。 此階段主要進(jìn)行代碼評(píng)審此階段主要進(jìn)行代碼評(píng)審5(一)靜態(tài)白盒測(cè)試一次審查一般需要5人至7人,這些角色是:主審員:協(xié)調(diào)本次審查并主持討論。責(zé)任人:負(fù)責(zé)被審查的產(chǎn)品。講解員:在審查會(huì)上講解被審查的產(chǎn)品。審查員:審查產(chǎn)品。記錄員:記錄在審查會(huì)議上討論的問題。經(jīng)理:責(zé)任人的管理者。6(一)靜態(tài)白盒測(cè)試代碼評(píng)審中選擇要審查的代碼模塊的準(zhǔn)則: 對(duì)于正確操作產(chǎn)品起關(guān)鍵作用的模塊。 復(fù)雜

3、度較高的模塊 與過去發(fā)生錯(cuò)誤率較高的模塊功能類似的模塊。 相對(duì)較新的或缺乏經(jīng)驗(yàn)的軟件程序師編寫的模塊。7(一)靜態(tài)白盒測(cè)試為什么要堅(jiān)持編碼標(biāo)準(zhǔn)和規(guī)范?為什么要堅(jiān)持編碼標(biāo)準(zhǔn)和規(guī)范? 可靠性。 可讀性/維護(hù)性 移植性8(一)靜態(tài)白盒測(cè)試大多數(shù)計(jì)算機(jī)語言和信息技術(shù)的國家和國際標(biāo)準(zhǔn)大多數(shù)計(jì)算機(jī)語言和信息技術(shù)的國家和國際標(biāo)準(zhǔn)可以通過以下途徑獲得:可以通過以下途徑獲得:國際工程協(xié)議(IEC):國際標(biāo)準(zhǔn)化組織(ISO):www.iso.ch信息技術(shù)標(biāo)準(zhǔn)國家委員會(huì)(NCITS):計(jì)算機(jī)械聯(lián)合會(huì)(ACM)(Association for Computing Mac

4、hinery):電子電氣工程學(xué)會(huì)(IEEE):9(一)靜態(tài)白盒測(cè)試通用代碼審查清單通用代碼審查清單數(shù)據(jù)引用錯(cuò)誤;數(shù)據(jù)聲明錯(cuò)誤;計(jì)算錯(cuò)誤;比較錯(cuò)誤;控制流程錯(cuò)誤;子程序參數(shù)錯(cuò)誤;輸入/輸出錯(cuò)誤;其他檢查。10(一)靜態(tài)白盒測(cè)試數(shù)據(jù)引用錯(cuò)誤數(shù)據(jù)引用錯(cuò)誤 是否引用了未初始化的變量? 數(shù)組和字符串的下標(biāo)是整數(shù)值嗎? 是否在應(yīng)該使用常量的地方使用了變量? 變量是否被賦予不同類型的值? 為引用的指針分配內(nèi)存了嗎? 一個(gè)數(shù)據(jù)結(jié)構(gòu)是否在多個(gè)函數(shù)或者子程序中引用,在每一個(gè)引用中明確定義結(jié)構(gòu)了嗎?11(一)靜態(tài)白盒測(cè)試數(shù)據(jù)聲明錯(cuò)誤數(shù)據(jù)聲明錯(cuò)誤 所有變量都賦予正確的長(zhǎng)度

5、和類型了嗎? 變量是否在聲明的同時(shí)進(jìn)行了初始化? 存在聲明過、但從未引用或者只引用過一次的變量嗎? 在特定模塊中所有變量都顯示聲明了嗎?12(一)靜態(tài)白盒測(cè)試計(jì)算錯(cuò)誤計(jì)算錯(cuò)誤 計(jì)算中是否使用了不同數(shù)據(jù)類型的變量? 計(jì)算中是否了解和考慮到編譯器對(duì)類型或長(zhǎng)度不一致的變量的轉(zhuǎn)換規(guī)則? 在數(shù)值計(jì)算過程中是否可能出現(xiàn)溢出? 除數(shù)/模是否可能為零? 變量的值是否超過有意義的范圍? 對(duì)于包含多個(gè)操作數(shù)的表達(dá)式,求值的次序是否混亂,運(yùn)算優(yōu)先級(jí)對(duì)嗎?13(一)靜態(tài)白盒測(cè)試比較錯(cuò)誤比較錯(cuò)誤 比較的正確嗎? 存在分?jǐn)?shù)或者浮點(diǎn)值之間的比較嗎?如果有,精確問題會(huì)影響比較嗎? 每一個(gè)邏輯表達(dá)式都正確表達(dá)了嗎?邏輯計(jì)算如期

6、進(jìn)行了嗎?求值次序有疑問嗎? 邏輯表達(dá)式的操作是邏輯值嗎?14(一)靜態(tài)白盒測(cè)試控制流程錯(cuò)誤控制流程錯(cuò)誤 如果程序包含beginend和 do while 等語句組,end是否對(duì)應(yīng)? 程序、模塊、子程序和循環(huán)能否終止? 可能存在永遠(yuǎn)不停的循環(huán)嗎? 循環(huán)可能從不執(zhí)行嗎?15(一)靜態(tài)白盒測(cè)試子程序參數(shù)錯(cuò)誤子程序參數(shù)錯(cuò)誤 子程序接受的參數(shù)類型和大小與調(diào)用代碼發(fā)送的匹配嗎? 如果子程序有多個(gè)入口點(diǎn),引用的參數(shù)是否與當(dāng)前入口點(diǎn)沒有關(guān)聯(lián)? 常量是否當(dāng)作形參傳遞,意外在子程序中改動(dòng)?16(一)靜態(tài)白盒測(cè)試輸入輸入/ /輸出錯(cuò)誤輸出錯(cuò)誤 軟件是否嚴(yán)格遵守外部設(shè)備讀寫數(shù)據(jù)的專用格式? 文件或者外部不存在或者未

7、準(zhǔn)備好的錯(cuò)誤情況有處理嗎? 軟件是否處理外部設(shè)備未連接、不可用,或者讀寫過程中存儲(chǔ)空間占滿等情況?17(一)靜態(tài)白盒測(cè)試同行審查同行審查 僅在編寫代碼的程序員和充當(dāng)審查者的其他一兩個(gè)程序員和測(cè)試員之間進(jìn)行。保證審查的高效率,注意審查的4個(gè)關(guān)鍵要素:確定問題;遵守規(guī)則;審查準(zhǔn)備;編寫報(bào)告。18靜態(tài)白盒測(cè)試的小結(jié) 代碼評(píng)審 同行審查 檢查單19(二)動(dòng)態(tài)白盒測(cè)試 動(dòng)態(tài)白盒測(cè)試是指利用查看代碼功能和實(shí)現(xiàn)方式得到的信息來確定哪些要測(cè)試,哪些不要測(cè)試,如何開展測(cè)試。 動(dòng)態(tài)白盒測(cè)試的另一個(gè)常用名稱是結(jié)構(gòu)測(cè)試,因?yàn)檐浖y(cè)試員可以查看并使用代碼的內(nèi)部結(jié)構(gòu),從而設(shè)計(jì)和執(zhí)行測(cè)試。20 軟件人員使用白盒測(cè)試方法,主

8、要想對(duì)程序模塊進(jìn)行如下的檢查: 對(duì)程序模塊的至少測(cè)試一次; 對(duì),; 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體; 測(cè)試,等。21 對(duì)一個(gè)具有的程序,。給出一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)行20次的循環(huán)。 包含的不同執(zhí)行路徑數(shù)達(dá)520條,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作365 24小時(shí),要想把所有路徑測(cè)試完,需3170年。2223二、動(dòng)態(tài)測(cè)試基本概念流圖環(huán)形復(fù)雜性圖矩陣24 符號(hào)為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無分支的語句。箭頭為邊,表示控制流的方向。25 在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。 邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。

9、如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符 (OR, AND, NAND, NOR) 連接的復(fù)合條件表達(dá)式,則需要改為一系列。262728 程序的環(huán)形(圈)復(fù)雜性給出了,這是確保程序中每個(gè)可執(zhí)行語句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。 從控制流圖來看,一條獨(dú)立路徑是從入口到出口至少包含有一條在其它獨(dú)立路徑中從未有過的邊的路徑。29 例如,在圖示的控制流圖中,一組獨(dú)立的路徑是path1:1 - 11path2:1 - 2 , 3 - 4 , 5 - 10 - 1 - 11path3:1 - 2 , 3 - 6 - 8 - 9 - 10 - 1 - 11path4:1 - 2 , 3 -

10、6 - 7 - 9 - 10 - 1 - 11 路徑 path1,path2,path3,path4組成了控制流圖的一個(gè)基本路徑集。30環(huán)形復(fù)雜性的三種計(jì)算方法1)、流圖G的環(huán)形復(fù)雜性V(G)=流圖中區(qū)域的數(shù)量2)、流圖G的環(huán)形復(fù)雜性V(G)E-N+2,E是流圖中邊的數(shù)量,N是流圖中節(jié)點(diǎn)的數(shù)量3)、流圖G的復(fù)雜性V(G)P1,P是流圖中判定節(jié)點(diǎn)的數(shù)量31 為便于在機(jī)器上表示和處理控制流圖,開發(fā)輔助基本路徑測(cè)試的軟件工具,可把流圖轉(zhuǎn)化為矩陣形式,即圖矩陣。 圖矩陣是一個(gè)正方形矩陣,其大小等于流圖的節(jié)點(diǎn)數(shù)。 1 1 2 2 4 4 5 5 3 3a a c cb b d df fe e節(jié)點(diǎn)1234

11、51a2cb3d4e5f3233邏輯覆蓋是以的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試。語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋路徑覆蓋3435L1L1L2L2L3L3L4L436L1(ace)A B A XA1021andandorA B A A B X A102101andandorandandA B A B X A20101andorandand37L2 (abd)=A B A X1021andandorA B A X1021orandand=A A X B A X121021andandorandandA X B A X11021a n do ra n da n d38L3 (abc)

12、 A B A X1021a n da n do r A B A X1021o ra n do r A1 and X1 o r B0 and A2 o r B0 and X1 A X B A B X110201a n do ra n do ra n d 39L4 (acd)A B A X A1021andandorA B A X A1021andandand40 語句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得。 在圖例中,正好所有的可執(zhí)行語句都在上,所以選擇設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語句。41 測(cè)試用例的設(shè)計(jì)格式如下【輸入的(A, B, X),輸出的(A, B, X)】 為圖例設(shè)計(jì)

13、滿足的測(cè)試用例是:【(2, 0, 4),(2, 0, 3)】 覆蓋 ace【L1】A B A B X A20101andorandand如果將第一個(gè)條件中的如果將第一個(gè)條件中的andand改為改為oror,或?qū)⒌诙€(gè)條件中的或?qū)⒌诙€(gè)條件中的oror改為改為andand,該測(cè)試用例測(cè)試不出錯(cuò)誤。該測(cè)試用例測(cè)試不出錯(cuò)誤。42 判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得。 判定覆蓋又稱為。 對(duì)于圖例,如果選擇和,就可得滿足要求的測(cè)試用例:43 【(2, 0, 4),(2, 0, 3)】覆蓋 ace【L1】【(1, 1, 1),(1, 1, 1)】覆蓋 abd【L2】A X B A X110

14、21andorandandA B A B X A20101andorandand44 如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】【(3, 0, 3),(3, 0, 1)】覆蓋 acd【L4】451X 0B 2A 0B 1X 1Aandorandorand1AX 2A 0B 1Aandandand【(2, 1, 1),(2, 1, 2)】覆蓋 abe【L3】【(3, 0, 3),(3, 0, 1)】覆蓋 acd【L4】上述兩組測(cè)試用例不僅滿足了上述兩組測(cè)試用例不僅滿足了“判定覆蓋判定覆蓋”,同時(shí)還做到了,同時(shí)還做到了“語句覆

15、蓋語句覆蓋”. .但如但如果第二個(gè)判定條件果第二個(gè)判定條件X1X1,錯(cuò)寫成,錯(cuò)寫成X1,X0 and B=0 S1 S25556覆蓋種類需滿足的條件測(cè)試數(shù)據(jù)期望結(jié)果判定覆蓋A1,B=0A=2,B=0執(zhí)行S1A1,B0或A1,B=0或A1,B0A=2,B=1或A=1,B=0或A=1,B=1執(zhí)行S2條件覆蓋以下四種情況各出現(xiàn)一次A1B=0A=2,B=0執(zhí)行S1A1B0A=1,B=1執(zhí)行S2條件組合覆蓋A1,B=0A=2,B=0執(zhí)行S1A1,B0A=2,B=1執(zhí)行S2A1,B=0A=1,B=0執(zhí)行S2A1,B0A=1,B=1執(zhí)行S257 當(dāng)程序中判定多于一個(gè)時(shí),形成的分支結(jié)構(gòu)可以分為兩類:和。 對(duì)于

16、,若有n個(gè)判定語句,需要n+1個(gè)測(cè)試用例; 對(duì)于, 若有n個(gè)判定語句,需要有2n個(gè)測(cè)試用例,覆蓋它的2n條路徑。當(dāng)n較大時(shí)將無法測(cè)試。5859 循環(huán)分為4種不同類型:、和。 零次循環(huán):從循環(huán)入口到出口 一次循環(huán):檢查循環(huán)初始值 二次循環(huán):檢查多次循環(huán) m次循環(huán): 檢查在多次循環(huán) 最大次數(shù)循環(huán)、比最大次數(shù)多一次、少一次的循環(huán)。60 61abecj=nk=j j+62循環(huán) i n Ai Ai+1 Ai+2 k 路 徑 0 1 2 1 1 i ac 1 2 1 2 i abefc 2 1 i+1 abdfc 1 3 1 2 3 i abefefc 2 3 1 i+2 abefdfc 3 2 1 i+

17、2 abdfdfc 3 1 2 i+1 abdfefc d 改 k 的值,e 不改 k 的值63 對(duì)最內(nèi)層循環(huán)做簡(jiǎn)單循環(huán)的全部測(cè)試。所有其它層的循環(huán)變量置為最小值; 逐步外推,對(duì)其外面一層循環(huán)進(jìn)行測(cè)試。測(cè)試時(shí)保持所有外層循環(huán)的循環(huán)變量取最小值,所有其它嵌套內(nèi)層循環(huán)的循環(huán)變量取“典型”值。 反復(fù)進(jìn)行,直到所有各層循環(huán)測(cè)試完畢。 6465 對(duì)全部各層循環(huán)同時(shí)取最小循環(huán)次數(shù),或者同時(shí)取最大循環(huán)次數(shù)如果各個(gè)循環(huán)互相獨(dú)立,則可以用與簡(jiǎn)單循環(huán)相同的方法進(jìn)行測(cè)試。但如果幾個(gè)循環(huán)不是互相獨(dú)立的,則需要使用測(cè)試嵌套循環(huán)的辦法來處理。這一類循環(huán)應(yīng)該使用結(jié)構(gòu)化程序設(shè)計(jì)方法重新設(shè)計(jì)測(cè)試用例。66 基本路徑測(cè)試方法把覆

18、蓋的路徑數(shù)壓縮到一定限度內(nèi),。 它是在程序控制流圖的基礎(chǔ)上,方法。設(shè)計(jì)出的測(cè)試用例要保證在測(cè)試中,程序的每一個(gè)可執(zhí)行語句至少要執(zhí)行一次。67 符號(hào)為控制流圖的一個(gè)結(jié)點(diǎn),表示一個(gè)或多個(gè)無分支的PDL語句或源程序語句。箭頭為邊,表示控制流的方向。68 在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。 邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。 如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符 (OR, AND, NAND, NOR) 連接的復(fù)合條件表達(dá)式,則需要改為一系列。697071 程序的環(huán)路復(fù)雜性給出了,這是確保程序中每個(gè)可執(zhí)行語句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目的上界。 從控制流圖來看,一條獨(dú)立路徑是至少包含有一條在其它獨(dú)立路徑中從未有過的邊的路徑。72 例如,在圖示的控制流圖中,一組獨(dú)立的路徑是path1:1 - 11path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11 路徑 path1,path2,path3,path4組成了控制流圖的一個(gè)基本路

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論