軟件測(cè)試技術(shù)與實(shí)踐:第五章 白盒測(cè)試_第1頁(yè)
軟件測(cè)試技術(shù)與實(shí)踐:第五章 白盒測(cè)試_第2頁(yè)
軟件測(cè)試技術(shù)與實(shí)踐:第五章 白盒測(cè)試_第3頁(yè)
軟件測(cè)試技術(shù)與實(shí)踐:第五章 白盒測(cè)試_第4頁(yè)
軟件測(cè)試技術(shù)與實(shí)踐:第五章 白盒測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章 白盒測(cè)試概述邏輯覆蓋法路徑分析數(shù)據(jù)流測(cè)試程序插樁技術(shù) 白盒測(cè)試只測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過(guò)程,而不測(cè)試軟件產(chǎn)品的功能,用于糾正軟件系統(tǒng)在描述、表示和規(guī)格上的錯(cuò)誤,是進(jìn)一步測(cè)試的前提。白盒子測(cè)試分靜態(tài)和動(dòng)態(tài)兩種:靜態(tài)白盒測(cè)試是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程,有時(shí)也稱(chēng)為結(jié)構(gòu)分析。動(dòng)態(tài)白盒測(cè)試也稱(chēng)結(jié)構(gòu)化測(cè)試,通過(guò)查看并使用代碼的內(nèi)部結(jié)構(gòu),設(shè)計(jì)和執(zhí)行測(cè)試。 邏輯覆蓋法 程序控制流圖是白盒測(cè)試的主要依據(jù)。對(duì)于一個(gè)程序,其程序控制流圖G=(V,E,I,O)是一個(gè)有向圖,其中V是結(jié)點(diǎn)的集合,E是邊的集合,I是唯一的源結(jié)點(diǎn)(入口結(jié)點(diǎn)),而O是唯一的

2、匯結(jié)點(diǎn)(出口結(jié)點(diǎn))。 結(jié)點(diǎn)表示語(yǔ)句,以標(biāo)有編號(hào)的圓圈表示。 邊表示語(yǔ)句間可能的控制流向 I, O相應(yīng)于程序的開(kāi)始語(yǔ)句和結(jié)束語(yǔ)句。 如果i和j是程序控制流圖中的結(jié)點(diǎn),從結(jié)點(diǎn)i到結(jié)點(diǎn)j存在一條邊,當(dāng)且僅當(dāng)對(duì)應(yīng)結(jié)點(diǎn)j的語(yǔ)句可以在對(duì)應(yīng)結(jié)點(diǎn)i的語(yǔ)句之后立即執(zhí)行。三角形問(wèn)題類(lèi)C語(yǔ)言實(shí)現(xiàn) /* PROGRAM TRIANGLE */mian ()1int a,b,c;2boolean IsTraingle3sacnf(“Enter 3 integer which is sides of a triangle. %d%d%d”,a,b,c);4printf(“Side a is %d”, a);5printf

3、(“Side b is %d”, b);6printf(“Side c is %d”,c);7if (ab+c) AND (ba+c) AND (ca+b)8 then IsTraingle=True;9 else IsTraingle=False;10if (IsTraingle)11then if (a=b) AND (b=c)12then printf(“Equilateral”)13else if (a!=b) AND (a!=c) AND (b!=c)14then printf(“Scalene”)15else printf(“Isosceles”)16else printf(“No

4、t a Triangle”)程序控制流圖結(jié)點(diǎn)3到7是一個(gè)序列,結(jié)點(diǎn)7到10是一個(gè)if-then-else結(jié)構(gòu),結(jié)點(diǎn)11到16是一個(gè)嵌套的if-then-else結(jié)構(gòu)。結(jié)點(diǎn)3和16是程序源結(jié)點(diǎn)和匯結(jié)點(diǎn),對(duì)應(yīng)于單入口、單出口準(zhǔn)則。該程序沒(méi)有循環(huán),因此控制流圖是一個(gè)有向非循環(huán)圖。 例:P=是一條程序路經(jīng)。 程序控制流圖的重要性在于,程序的執(zhí)行對(duì)應(yīng)于從源結(jié)點(diǎn)到匯結(jié)點(diǎn)的路徑。 檢驗(yàn)程序從入口開(kāi)始,執(zhí)行過(guò)程中經(jīng)歷的各個(gè)語(yǔ)句,直到出口,是白盒測(cè)試最為典型的問(wèn)題。邏輯覆蓋 邏輯覆蓋是一種使用最廣泛的結(jié)構(gòu)測(cè)試方法。邏輯覆蓋以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計(jì)測(cè)試用例,要求對(duì)被測(cè)程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握

5、源程序的所有細(xì)節(jié)。 由于覆蓋測(cè)試的目標(biāo)不同,邏輯覆蓋又可分為:語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋及路徑覆蓋。 下面的一小段程序來(lái)討論。 if (age25)AND(sex=M) then commission = commission +150; end if if (age=50 OR (commission 2000.0) then commission = commission -200; endif 3個(gè)變量為:年齡age 、性別sex、傭金commission a、b、c、d和e為控制流上程序點(diǎn)。 語(yǔ)句覆蓋要求設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使程序中的每個(gè)可執(zhí)行語(yǔ)句至少被

6、執(zhí)行一次。這里所謂“若干”,自然是越少越好。Test 1: age=50, sex=M, comm=2500作為測(cè)試用例,則程序按路徑ace執(zhí)行。這樣該程序段的4個(gè)語(yǔ)句都得到執(zhí)行,從而作到了語(yǔ)句覆蓋。語(yǔ)句覆蓋 Test 2:age=50, sex=F, comm=2500程序則按abe執(zhí)行,沒(méi)有達(dá)到語(yǔ)句覆蓋。 從程序中每個(gè)語(yǔ)句都得到執(zhí)行這一點(diǎn)來(lái)看,語(yǔ)句覆蓋的方法似乎能夠比較全面地檢驗(yàn)被測(cè)程序的每一個(gè)語(yǔ)句。但語(yǔ)句覆蓋是很弱的邏輯覆蓋準(zhǔn)則。 假如這一程序段中兩個(gè)判斷的邏輯運(yùn)算有問(wèn)題,例如,第一個(gè)判斷的運(yùn)算符“”錯(cuò)成運(yùn)算符“”或是第二個(gè)判斷中的運(yùn)算符“”錯(cuò)成了運(yùn)算符“”仍使用上述前一個(gè)測(cè)試用例Tes

7、t 1,程序仍將按路徑ace執(zhí)行,但不能發(fā)現(xiàn)判斷中邏輯運(yùn)算的錯(cuò)誤。 判定覆蓋判定覆蓋要求設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少執(zhí)行一次,即判斷的真假值均要被檢測(cè)。判定覆蓋又稱(chēng)為分支覆蓋。 若選用兩組測(cè)試用例:Test 1: age=50, sex=M, comm.=2500 Test3:age=20, sex=M, comm.=1500 則分別執(zhí)行路徑ace和abd,從而使兩個(gè)判斷的4個(gè)分支c,e和b,d分別得到檢測(cè)。 若選用另外兩組測(cè)試用例:Test4age=40, sex=M, comm.=1500Test5 age=50, sex=F, comm.=1

8、900 則分別路徑acd及abe, 同樣也可覆蓋4個(gè)分支. 上述兩組測(cè)試用例不僅滿(mǎn)足判定覆蓋,同時(shí)還滿(mǎn)足語(yǔ)句覆蓋。判定覆蓋比語(yǔ)句覆蓋更強(qiáng)一些。 如果在此程序段中第2個(gè)判斷條件comm2000錯(cuò)寫(xiě)成comm25 取真值,記為T(mén)1age25 取假值,即age25,記為sex=M 取真值,記為T(mén)2:sex=M 取假值,即sex=F,記為第2個(gè)判斷應(yīng)考慮到;Age=50 取真值,記為T(mén)3Age=50 取假值,即age2000 取真值,記為T(mén)4 comm.2000 取假值, 記為 3個(gè)測(cè)試用例覆蓋了4個(gè)條件的8種情況。覆蓋了兩個(gè)判斷的4個(gè)分支b、c、d和c。 測(cè)試用例 age sex comm 所走路徑

9、 覆蓋條件 Test1 Test3 Test550 M 2500.0 20 M 1500.0 50 F 1900.0 a c e a b d a b e T1 T2 T3 T4 1T T2 3T 4T T1 2T T3 4T 測(cè)試用例 age sex comm 所走路徑 覆蓋分支 覆蓋條件 Test6Test7 20 M 2100.0 50 F 1500.0 a b e a b e be be 1T T2 3T T4 T1 2T T3 4T 覆蓋了條件的測(cè)試用例不一定覆蓋了分支。 事實(shí)上,它只覆蓋了4個(gè)分支中的兩個(gè)。 判定/條件覆蓋要求設(shè)計(jì)足夠的測(cè)試用例,執(zhí)行被測(cè)程序,使得判斷中每個(gè)條件的所有

10、可能取值至少被執(zhí)行一次,同時(shí)每個(gè)判斷的所有可能判斷結(jié)果也至少被執(zhí)行一次。 判定/條件覆蓋 兩個(gè)判斷各包含兩個(gè)條件,這4個(gè)條件在兩個(gè)判斷中可能有8種組合,它們是:1)age25, sex=M,記為T(mén)1,T22) age25, sex=F,記為T(mén)1,3) age25, sex=M,記為 ,T24) age25, sex=F,記為 ,5)age50, comm2000.0,記為T(mén)3,T46) age 50,comm2000.0記為T(mén)3, 7) age2000.0, 記為 ,T48) age=2,對(duì)于P-use的程序圖出度=24)C-use當(dāng)且僅當(dāng)USE(v,n)是計(jì)算使用,對(duì)于C-use的程序圖入度

11、=15)定義使用路徑關(guān)于變量v的定義使用路徑(記做du-path),存在定義和使用結(jié)點(diǎn)DEF(v,m) 和USE(v,n),使得m和n是該路徑的開(kāi)始結(jié)點(diǎn)和結(jié)束結(jié)點(diǎn)。6)清除路徑當(dāng)定義結(jié)點(diǎn)和清除結(jié)點(diǎn)中間沒(méi)有其他的定義結(jié)點(diǎn)的時(shí)候?yàn)榍宄窂健?5647328191結(jié)點(diǎn)被定義的變量被引用的變量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10Z語(yǔ)句2使用了變量W,而在此之前并未對(duì)其進(jìn)行定義(賦值)。語(yǔ)句5,6使用了變量V,但在第一次執(zhí)行循環(huán)時(shí)也未對(duì)其定義過(guò)。語(yǔ)句6對(duì)變量Z的定義從未被使用過(guò)。語(yǔ)句8對(duì)變量W的定義從未被使用過(guò)。 程序片 首先,介紹程序片的一個(gè)重要概念S(V,

12、n)。S(V,n)表示結(jié)點(diǎn)n之前的所有對(duì)V中的變量值做出貢獻(xiàn)的所有語(yǔ)句片段的總和。程序插樁 在程序的特定部位插入記錄動(dòng)態(tài)特性的語(yǔ)句,最終是為了把程序執(zhí)行過(guò)程中發(fā)生的一些重要的歷史事件記錄下來(lái)。例如,記錄在程序執(zhí)行過(guò)程中某些變量值的變化情況,變化的范圍等。這些插入的語(yǔ)句常常被稱(chēng)為“探測(cè)器”或者“探測(cè)點(diǎn)”, 插樁位置 程序插樁需要從插樁位置、插樁策略、插樁過(guò)程 1)程序的開(kāi)始,即程序塊的第1個(gè)可執(zhí)行語(yǔ)句之前2)轉(zhuǎn)移指令之前 for,do ,do-while,do until 等循環(huán)語(yǔ)句處。if, else if, else及end if等條件語(yǔ)句各分支處。輸入/輸出語(yǔ)句之后。函數(shù)、過(guò)程、子程序調(diào)用

13、語(yǔ)句之后。3)標(biāo)號(hào)之前。4)程序的出口return語(yǔ)句之后call語(yǔ)句之后插樁策略 插樁策略主要解決的如何在程序中植入探針,包括植入的位置和方法。主要考慮塊探針和分支探針。 插樁的過(guò)程 在被測(cè)試的源程序中植入探針函數(shù)的樁,即函數(shù)的聲明。而插樁函數(shù)的原型在插樁函數(shù)庫(kù)中定義。在目標(biāo)文件連接成可執(zhí)行文件時(shí),則必須連入插樁函數(shù)庫(kù)。探針函數(shù)是否被觸發(fā)就要依據(jù)插樁選擇記錄文件了,要求不同的覆蓋率測(cè)試會(huì)激活不同的插樁函數(shù)。程序插樁圖插樁程序中插入的語(yǔ)句斷言測(cè)試 斷言測(cè)試用于檢查在程序運(yùn)行過(guò)程出現(xiàn)的一些本“不應(yīng)該”發(fā)生的情況。也就是在一個(gè)應(yīng)該正確的地方,加一條判斷來(lái)驗(yàn)證程序運(yùn)行時(shí),它是否真正如當(dāng)初預(yù)料的那樣,

14、具有預(yù)期的正確性。 斷言測(cè)試就是在程序中插入斷言,插入斷言的根本目的是用于幫助程序的調(diào)試與排錯(cuò),因此本質(zhì)上它是屬于測(cè)試代碼,是一種特殊的插樁語(yǔ)句,而不是屬于真正的應(yīng)用程序模塊的一部分。 缺陷種植測(cè)試 是一種用來(lái)估計(jì)駐留在程序中的缺陷數(shù)量的技術(shù)。工作原理是向一個(gè)軟件中“種植”缺陷,然后運(yùn)行測(cè)試集,以檢查發(fā)現(xiàn)了多少個(gè)種植的缺陷,還有多少個(gè)種植的缺陷沒(méi)有被發(fā)現(xiàn),以及已經(jīng)發(fā)現(xiàn)了多少個(gè)新的非種植的缺陷。然后就可以預(yù)測(cè)殘留的缺陷數(shù)量。案例 如果種植了100個(gè)種子缺陷,而在測(cè)試中只找到75個(gè)種植的缺陷,那么種子發(fā)現(xiàn)率為75%。如果已經(jīng)發(fā)現(xiàn)了450個(gè)真實(shí)的缺陷,那么可以通過(guò)種子發(fā)現(xiàn)率,推出這450個(gè)真實(shí)的缺陷

15、只代表了現(xiàn)在存在所有真實(shí)缺陷的75%。那么,真是的缺陷總數(shù)估計(jì)為600個(gè)。所以還有150個(gè)真實(shí)的缺陷需要測(cè)試出來(lái)。靜態(tài)白盒法靜態(tài)白盒測(cè)試是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過(guò)程。好處:盡早發(fā)現(xiàn)軟件缺陷。 為黑盒測(cè)試員提供思路。靜態(tài)白盒測(cè)試法分類(lèi)靜態(tài)白盒測(cè)試法一般根據(jù)審查的嚴(yán)格程度分為三種:同行評(píng)審走查評(píng)審 同行評(píng)審也稱(chēng)為伙伴審查,這種方法大體類(lèi)似于“如果你給我看你的,我也給你看我的”類(lèi)型的討論。同行評(píng)審常常僅在編寫(xiě)代碼或設(shè)計(jì)體系結(jié)構(gòu)的程序員,以及充當(dāng)審查者的其他一兩個(gè)程序員和測(cè)試員之間進(jìn)行。走查走查是正式、嚴(yán)格、具有深度的技術(shù)評(píng)審,以便盡可能準(zhǔn)確地確定

16、問(wèn)題之所在。走查過(guò)程的目的:在軟件開(kāi)發(fā)過(guò)程中盡可能早地發(fā)現(xiàn)問(wèn)題。確保對(duì)重要部分達(dá)成一致意見(jiàn)。評(píng)審 評(píng)審是最正式的審查類(lèi)型,具有高度組織化,要求每一個(gè)參與者都接受訓(xùn)練。評(píng)審與同行評(píng)審和走查的不同之處在于陳述代碼的人陳述者或者宣讀者不是原來(lái)的程序員。這就迫使他們學(xué)習(xí)和了解要陳述的材料,從而有可能在檢驗(yàn)會(huì)議上提出不同的看法和解釋。其余的參與者稱(chēng)為評(píng)審員,其職責(zé)是從不同的角度,例如用戶(hù)、測(cè)試員或者產(chǎn)品支持人員的角度審查代碼。這有助于對(duì)產(chǎn)品的全面審查,通??梢哉页霾煌能浖毕?。召開(kāi)評(píng)審會(huì)議之后,要準(zhǔn)備一份書(shū)面報(bào)告,明確解決問(wèn)題所必需重做的工作。然后程序員進(jìn)行修改,由會(huì)議協(xié)調(diào)員驗(yàn)證修改結(jié)果。根據(jù)修改的范

17、圍和規(guī)模以及軟件的關(guān)鍵程序,可能還需要進(jìn)行重新評(píng)審,以便找到其余的軟件缺陷。評(píng)審經(jīng)證實(shí)是所有軟件交付過(guò)程中,特別是設(shè)計(jì)文檔和代碼中發(fā)現(xiàn)軟件缺陷非常有效的方法。靜態(tài)白盒法應(yīng)該具備的基本要素 確定問(wèn)題。靜態(tài)白盒測(cè)試的目的是找出軟件的問(wèn)題,全部的批評(píng)應(yīng)該直指代碼或設(shè)計(jì),而不是其設(shè)計(jì)實(shí)現(xiàn)者。參與者之間不應(yīng)該相互指責(zé),應(yīng)該把自我意識(shí)、個(gè)人情緒和敏感丟在一邊。遵守規(guī)則。靜態(tài)白盒測(cè)試要遵守一套固定的規(guī)則,如哪些內(nèi)容要做評(píng)價(jià)等。其重要性在于參與者了解自己的角色、目標(biāo)是什么。這有助于使審查進(jìn)展的更加順利。充分準(zhǔn)備。每一個(gè)參與者都盡自己的力量為審查做準(zhǔn)備。根據(jù)審查的類(lèi)型,參與者可能扮演不同的角色。他們需要了解自己的責(zé)任和義務(wù),并

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論