第6章 基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)_第1頁(yè)
第6章 基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)_第2頁(yè)
第6章 基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)_第3頁(yè)
第6章 基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)_第4頁(yè)
第6章 基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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、基于控制流和數(shù)據(jù)流的測(cè)試充基于控制流和數(shù)據(jù)流的測(cè)試充分性評(píng)價(jià)分性評(píng)價(jià)楊亞娟楊亞娟第第6 6章章Foundations of Software Testing26.1 測(cè)試充分性基礎(chǔ)充分性:用來(lái)度量一個(gè)給定的測(cè)試集是否能驗(yàn)證軟件P滿足其需求。C:如果針對(duì)R中的每一個(gè)需求r,測(cè)試集T中至少有一個(gè)測(cè)試用例測(cè)試證明了P滿足r,則認(rèn)為T針對(duì)(P,R)是充分的。對(duì)每一個(gè)測(cè)試準(zhǔn)則C,我們都導(dǎo)出一個(gè)有限集,稱之為覆蓋域,記為 。( 依賴于代碼或需求)測(cè)試準(zhǔn)則C的包括:基于控制流的覆蓋準(zhǔn)則和基于數(shù)據(jù)流的覆蓋準(zhǔn)則。一個(gè)充分的測(cè)試集有可能不能發(fā)現(xiàn)軟件中最明顯的錯(cuò)誤。eCeC36.1 通過(guò)度量充分性來(lái)增強(qiáng)測(cè)試?yán)?.

2、1 考慮編寫程序sumProduct,其需求如下:R1:輸入兩個(gè)整數(shù)x和y。R2.1:若xy,求x與y之和,并輸出結(jié)果。R2.2:若xy,求x與y之積,并輸出結(jié)果。測(cè)試集T=t:對(duì)于充分性不足的測(cè)試集,通過(guò)增加新的測(cè)試用例,對(duì)其進(jìn)行測(cè)試增強(qiáng),借此提高發(fā)現(xiàn)軟件錯(cuò)誤的幾率。46.1 測(cè)試充分性基礎(chǔ)若程序包含循環(huán)結(jié)構(gòu),則只要T遍歷過(guò)循環(huán)體0次和1次即可。覆蓋域的有效性可以通過(guò)對(duì)軟件執(zhí)行測(cè)試用例,觀察具體的元素是否確實(shí)被覆蓋了來(lái)驗(yàn)證。然而無(wú)效性卻不能通過(guò)執(zhí)行有限個(gè)數(shù)的測(cè)試用例來(lái)驗(yàn)證。對(duì)于更復(fù)雜的程序,確定一個(gè)元素是否有效是很困難的,因此,通過(guò)用t測(cè)試P試圖覆蓋元素e以增強(qiáng)測(cè)試集可能會(huì)失敗。如果覆蓋域中

3、存在無(wú)效元素,那么一個(gè)測(cè)試集覆蓋域中的所有有效元素時(shí)就說(shuō)該測(cè)試集是充分的。因此,在有無(wú)效元素的情況下,覆蓋率小于1時(shí),測(cè)試也可能是充分的。56.1 測(cè)試充分性基礎(chǔ)1 begin2 int x,y;3 int z;4 input (x,y);z=0;5 if(x0 and y0 And b0) 5. c=c/a;6. If (a1 or c1) 7. c=c+1;8. c=b+c8語(yǔ)句覆蓋只需設(shè)計(jì)一個(gè)測(cè)試用例:a=2,b=1,c=6;即達(dá)到了語(yǔ)句覆蓋。9語(yǔ)句覆蓋優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無(wú)須細(xì)分每條判定表達(dá)式。缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯示存在的語(yǔ)句,但對(duì)于隱藏的條件

4、是無(wú)法測(cè)試的。語(yǔ)句覆蓋是最弱的邏輯覆蓋。106.2.2 條件和判定任何計(jì)算結(jié)果為真或假的表達(dá)式就是一個(gè)條件條件,這種表達(dá)式也稱作謂詞。一個(gè)條件可能是簡(jiǎn)單的或復(fù)合的。簡(jiǎn)單條件簡(jiǎn)單條件除了用運(yùn)算符外,它由變量和至多一個(gè)關(guān)系運(yùn)算符構(gòu)成;復(fù)合條件復(fù)合條件由兩個(gè)或多個(gè)簡(jiǎn)單條件經(jīng)一個(gè)或多個(gè)布爾運(yùn)算符連接而成。任何一個(gè)條件都可在適當(dāng)?shù)纳舷挛沫h(huán)境下當(dāng)作一個(gè)判定。(if,while,switch)一個(gè)判定有三種可能的輸出:真、假和未定義。116.2.3 判定覆蓋判定覆蓋基本思想是:設(shè)計(jì)若干測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。126.2.3 判定覆蓋

5、判定覆蓋 a=2,b=1 ,c=6可覆蓋判斷M的Y分支和判斷Q的Y分支; a=-2,b=-1 ,c=-3可覆蓋判斷M的N分支和判斷Q的N分支 。 這兩組測(cè)試用例可覆蓋所有判定的真假分支。判斷M判斷Q136.2.3 判定覆蓋判定覆蓋【優(yōu)點(diǎn)優(yōu)點(diǎn)】:判定覆蓋具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性,無(wú)須細(xì)分每個(gè)判定就可以得到測(cè)試用例。【缺點(diǎn)缺點(diǎn)】:往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成,若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。判定覆蓋仍是弱的邏輯覆蓋。146.2.4 條件覆蓋條件覆蓋基本思想是:設(shè)計(jì)若干測(cè)試用例,執(zhí)行被測(cè)程序以后

6、要使每個(gè)判斷中每個(gè)條件的可能取值至少滿足一次。1156.2.4 條件覆蓋條件覆蓋判斷M表達(dá)式:設(shè)條件 a0 取真 記為 T1 假 F1 條件 b0 取真 記為 T2 假F2判斷Q表達(dá)式:設(shè)條件 a1 取真 記為 T3 假 F3 條件 c1 取真 記為 T4 假F4判斷M判斷Q166.2.4 條件覆蓋條件覆蓋測(cè)試用例覆蓋條件具體取值條件a=2,b=1,c=2T1, F2, T3, F4a0,b1,c=1a=1,b=2,c=3F1, T2, F3, T4a0,a1它覆蓋了判定它覆蓋了判定M M的的N分支和判斷分支和判斷Q Q的的Y分支。我們用條件覆蓋分支。我們用條件覆蓋設(shè)計(jì)的思想就是讓測(cè)試用例能覆

7、設(shè)計(jì)的思想就是讓測(cè)試用例能覆蓋T1、T2、T3、T4、F1、F2、F3、F4 4。176.2.4 條件覆蓋條件覆蓋【優(yōu)點(diǎn)】【優(yōu)點(diǎn)】:增加了對(duì)條件判定情況的測(cè)試,增加了測(cè)試路徑。【缺點(diǎn)】【缺點(diǎn)】:條件覆蓋不一定包含判定覆蓋。例如,我們剛才設(shè)計(jì)的用例就沒(méi)有覆蓋判斷M的Y分支和判斷Q的N分支。條件覆蓋只能保證每個(gè)條件至少有一次為真,而不考慮所有的判定結(jié)果。186.2.5 條件條件/判定覆蓋判定覆蓋基本思想是:設(shè)計(jì)足夠的測(cè)試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時(shí),所有判斷的可能結(jié)果至少執(zhí)行一次。119判斷M判斷Q6.2.5 條件條件/判定覆蓋判定覆蓋按照條件/判定覆蓋的要求,我們?cè)O(shè)計(jì)

8、的測(cè)試用例要滿足如下條件:1. 所有條件可能至少執(zhí)行一次取值;2. 所有判斷的可能結(jié)所有判斷的可能結(jié)果至少執(zhí)行一次。果至少執(zhí)行一次。要滿足要滿足T1、T2、 T3 、T4F1、 F2 、F3、F4206.2.5 條件條件/判定覆蓋判定覆蓋測(cè)試用例覆蓋條件覆蓋判斷a=2,b=1,c=6T1, T2,T3, T4M的Y分支和Q的Y分支a=1,b=2,c=3F1, F2, F3, F4M的N分支和Q的N分支判斷M判斷Q要滿足要滿足T1、T2、 T3 、T4F1、 F2 、F3、F4216.2.5 條件條件/判定覆蓋判定覆蓋【優(yōu)點(diǎn)優(yōu)點(diǎn)】 :能同時(shí)滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)?!救秉c(diǎn)缺點(diǎn)】 :條件/判定覆

9、蓋準(zhǔn)則的缺點(diǎn)是未考慮條件的組合情況。226.2.6 多重條件覆蓋多重條件覆蓋基本思想是:設(shè)計(jì)足夠的測(cè)試用例,基本思想是:設(shè)計(jì)足夠的測(cè)試用例,使使得所有可能的條件取值組合至少執(zhí)行一得所有可能的條件取值組合至少執(zhí)行一次次1236.2.6 多重條件覆蓋多重條件覆蓋按照條件組合覆蓋的基本思想,對(duì)于前面的例子,我們把每個(gè)判斷中的所有條件進(jìn)行組合,設(shè)計(jì)組合條件如表所示,而我們?cè)O(shè)計(jì)的測(cè)試用例就要包括所有的組合條件。編號(hào)覆蓋條件取值判定條件取值具體條件取值1 T1,T2M取Y a0,b02 T1,F2M取N a0,b=03 F1,T2M取N a04 F1,F2M取N a= 0,b1,c16 T3,F4Q取Y

10、a1,c=17 F3,T4Q取Y a18 F3,F4Q取N a=1,c0) output(z);)356.3.3 全局和局部的定義與使用一個(gè)變量可能在同一個(gè)基本塊中被定義、使用和重定義??紤]如下含有3條語(yǔ)句的基本塊: p=y+z; x=p+1; p=z*z; 這個(gè)基本塊定義了p,使用了p,并且還重定義了p。p的第一 個(gè)定義是局部的,這個(gè)定義被同一基本塊中的第二個(gè)定義屏蔽了,因此,它的值未能超越此基本塊。p的第二個(gè)定義則是全局的。 注:在本章中,我們只關(guān)心全局定義和使用,局部定義與使用在研究基于數(shù)據(jù)流的測(cè)試充分性時(shí)沒(méi)有意義。366.3.4 數(shù)據(jù)流圖 程序的數(shù)據(jù)流圖(DFG)也稱為def-use圖

11、,它勾畫了程序中變量在不同基本塊間的定義流。 :定義在基本塊i中的變量的集合。程序中的變量聲明、賦值語(yǔ)句、輸入語(yǔ)句和傳址調(diào)用都可以用來(lái)定義變量。 :在基本塊i中有 的變量的集合。 :在基本塊i中有 的變量的集合。 例:p=y+z; foo(p+q,number);/傳值參數(shù) Ai=x+1; if(xy).iuse-ciuse-pidefuse-cuse-p376.3.4 數(shù)據(jù)流圖 構(gòu)造數(shù)據(jù)流圖的過(guò)程:步驟步驟1 計(jì)算P中每個(gè)基本塊i的 、 和 。步驟步驟2 將結(jié)點(diǎn)集N中的每個(gè)結(jié)點(diǎn)i與 、 和 關(guān)聯(lián)起來(lái)。步驟步驟3 針對(duì)每個(gè)具有非空 集并且在條件C處結(jié)束的結(jié)點(diǎn)i,如果條件C為真時(shí)執(zhí)行的是邊(i,

12、j),C為假時(shí)執(zhí)行的是邊(i,k),分別將邊(i,j),(i,k)與C,!C關(guān)聯(lián)起來(lái)。 idefiuse-ciuse-pidefiuse-ciuse-puse-p381 begin2 int x,y;3 int z;4 input (x,y);z=0;5 if(x0 and y0)6 z=x*x;7 if(y0) z=z+1;8 9 else z=x*x*x;10 output(z);11 end396.3.5 defclear路徑def-clear路徑:路徑:假設(shè)變量x在結(jié)點(diǎn)i中定義,在結(jié)點(diǎn)j中使用,考慮路徑p=(i,n1,n2,.,nk,j),k0,路徑p從結(jié)點(diǎn)i開始,結(jié)束于結(jié)點(diǎn)j,并且結(jié)

13、點(diǎn)i、j在子路徑n1,n2,.,nk中未出現(xiàn),如果變量x沒(méi)有在子路徑n1,n2,.,nk中被重定義,稱p是變量x的defclear路徑。在這種情況下,也稱x在結(jié)點(diǎn)i處的定義,即di(x)在結(jié)點(diǎn)j處是活躍的。406.3.6 defuse對(duì)def-use對(duì)對(duì)勾畫了變量的一次特定的定義和使用。我們只關(guān)心兩種類型的defuse對(duì):一種是定義及其cuse構(gòu)成的defuse對(duì),另一種是定義及其puse構(gòu)成的defuse對(duì),分別用集合dcu和dpu來(lái)描述這兩類defuse對(duì)。416.4 基于數(shù)據(jù)流的測(cè)試充分性準(zhǔn)則1)All-defs coverage (ADC):對(duì)于du-path的每一個(gè)集合S=du(n,v),TR包含了S中的至少一條路徑d(確保了所有被定義的變量被使用)2)All-uses coverage(AUC):對(duì)于du-path的每一個(gè)要被使用的集合S=du(ni,nj,v),TR包含了S中的至少一條路徑(確保每個(gè)定義能夠到達(dá)所有可能的使用)3)All-du-paths coverage(ADUPC):對(duì)于每個(gè)集合S=du(ni,nj,v),TR包含了S中的所有路徑(覆蓋定義和使用之間的所有路徑)426.5 控制流和數(shù)據(jù)流 基于控制流的測(cè)試充分性準(zhǔn)則旨在測(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)論