基于控制流和數(shù)據(jù)流的測試充分性評價-課件_第1頁
基于控制流和數(shù)據(jù)流的測試充分性評價-課件_第2頁
基于控制流和數(shù)據(jù)流的測試充分性評價-課件_第3頁
基于控制流和數(shù)據(jù)流的測試充分性評價-課件_第4頁
基于控制流和數(shù)據(jù)流的測試充分性評價-課件_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于控制流和數(shù)據(jù)流的測試充分性評價第6章FoundationsofSoftwareTesting1ppt課件6.1測試充分性基礎(chǔ)充分性:用來度量一個給定的測試集是否能驗證軟件P滿足其需求。C:如果針對R中的每一個需求r,測試集T中至少有一個測試用例測試證明了P滿足r,則認為T針對(P,R)是充分的。對每一個測試準則C,我們都導出一個有限集,稱之為覆蓋域,記為。(依賴于代碼或需求)測試準則C的包括:基于控制流的覆蓋準則和基于數(shù)據(jù)流的覆蓋準則。一個充分的測試集有可能不能發(fā)現(xiàn)軟件中最明顯的錯誤。2ppt課件6.1通過度量充分性來增強測試例6.1考慮編寫程序sumProduct,其需求如下:R1:輸入兩個整數(shù)x和y。R2.1:若x<y,求x與y之和,并輸出結(jié)果。R2.2:若x≥y,求x與y之積,并輸出結(jié)果。測試集T={t:<x=2,y=3>}對于充分性不足的測試集,通過增加新的測試用例,對其進行測試增強,借此提高發(fā)現(xiàn)軟件錯誤的幾率。3ppt課件6.1測試充分性基礎(chǔ)若程序包含循環(huán)結(jié)構(gòu),則只要T遍歷過循環(huán)體0次和1次即可。覆蓋域的有效性可以通過對軟件執(zhí)行測試用例,觀察具體的元素是否確實被覆蓋了來驗證。然而無效性卻不能通過執(zhí)行有限個數(shù)的測試用例來驗證。對于更復雜的程序,確定一個元素是否有效是很困難的,因此,通過用t測試P試圖覆蓋元素e以增強測試集可能會失敗。如果覆蓋域中存在無效元素,那么一個測試集覆蓋域中的所有有效元素時就說該測試集是充分的。因此,在有無效元素的情況下,覆蓋率小于1時,測試也可能是充分的。4ppt課件6.1測試充分性基礎(chǔ)1begin2intx,y;3intz;4input(x,y);z=0;5if(x<0andy<0){6z=x*x;7if(y≥0)z=z+1;8}9elsez=x*x*x;10output(z);11end5ppt課件6.2.1

語句覆蓋和塊覆蓋基本思想是:設(shè)計若干測試用例,運行被測程序,使程序中每個可執(zhí)行語句(塊)至少執(zhí)行一次。針對c語言,當定義基本控制流的測試充分性準則時,把所有的聲明性語句都當作執(zhí)行語句?;緣K:只有一個輸入點和一個輸出點的一組連續(xù)語句。16ppt課件例:實現(xiàn)一個簡單的數(shù)學運算

inta,b;doublec;scanf(“%d,%d,%f”,&a,&b,&c)If(a>0Andb>0)c=c/a;If(a>1orc>1)c=c+1;c=b+c7ppt課件語句覆蓋只需設(shè)計一個測試用例:a=2,b=1,c=6;即達到了語句覆蓋。8ppt課件語句覆蓋優(yōu)點:可以很直觀地從源代碼得到測試用例,無須細分每條判定表達式。缺點:由于這種測試方法僅僅針對程序邏輯中顯示存在的語句,但對于隱藏的條件是無法測試的。語句覆蓋是最弱的邏輯覆蓋。9ppt課件6.2.2條件和判定任何計算結(jié)果為真或假的表達式就是一個條件,這種表達式也稱作謂詞。一個條件可能是簡單的或復合的。簡單條件除了用運算符外,它由變量和至多一個關(guān)系運算符構(gòu)成;復合條件由兩個或多個簡單條件經(jīng)一個或多個布爾運算符連接而成。任何一個條件都可在適當?shù)纳舷挛沫h(huán)境下當作一個判定。(if,while,switch)一個判定有三種可能的輸出:真、假和未定義。10ppt課件6.2.3判定覆蓋基本思想是:設(shè)計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。11ppt課件6.2.3判定覆蓋a=2,b=1,c=6可覆蓋判斷M的Y分支和判斷Q的Y分支;

a=-2,b=-1,c=-3可覆蓋判斷M的N分支和判斷Q的N分支

。這兩組測試用例可覆蓋所有判定的真假分支。判斷M判斷Q12ppt課件6.2.3判定覆蓋【優(yōu)點】:判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。【缺點】:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。13ppt課件6.2.4條件覆蓋基本思想是:設(shè)計若干測試用例,執(zhí)行被測程序以后要使每個判斷中每個條件的可能取值至少滿足一次。114ppt課件6.2.4條件覆蓋判斷M表達式:設(shè)條件a>0

取真記為T1

假F1

條件b>0

取真記為

T2

假F2判斷Q表達式:設(shè)條件a>1

取真記為T3

假F3

條件c>1

取真記為T4

假F4判斷M判斷Q15ppt課件6.2.4條件覆蓋

測試用例覆蓋條件具體取值條件a=2,b=-1,c=-2T1,F2,T3,F4a>0,b<=0,a>1,c<=1a=-1,b=2,c=3F1,T2,F3,T4a<=0,b>0,a<=1,c>1它覆蓋了判定M的N分支和判斷Q的Y分支。我們用條件覆蓋設(shè)計的思想就是讓測試用例能覆蓋T1、T2、T3、T4、F1、F2、F3、F4。16ppt課件6.2.4條件覆蓋

【優(yōu)點】:增加了對條件判定情況的測試,增加了測試路徑。【缺點】:條件覆蓋不一定包含判定覆蓋。例如,我們剛才設(shè)計的用例就沒有覆蓋判斷M的Y分支和判斷Q的N分支。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。17ppt課件6.2.5條件/判定覆蓋

基本思想是:設(shè)計足夠的測試用例,使得判斷條件中的所有條件可能取值至少執(zhí)行一次,同時,所有判斷的可能結(jié)果至少執(zhí)行一次。118ppt課件判斷M判斷Q6.2.5條件/判定覆蓋按照條件/判定覆蓋的要求,我們設(shè)計的測試用例要滿足如下條件:所有條件可能至少執(zhí)行一次取值;所有判斷的可能結(jié)果至少執(zhí)行一次。要滿足T1、T2、T3、T4F1、F2、F3、F419ppt課件6.2.5條件/判定覆蓋測試用例覆蓋條件覆蓋判斷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、F420ppt課件6.2.5條件/判定覆蓋【優(yōu)點】:能同時滿足判定、條件兩種覆蓋標準。【缺點】

:條件/判定覆蓋準則的缺點是未考慮條件的組合情況。21ppt課件6.2.6多重條件覆蓋基本思想是:設(shè)計足夠的測試用例,使得所有可能的條件取值組合至少執(zhí)行一次122ppt課件6.2.6多重條件覆蓋按照條件組合覆蓋的基本思想,對于前面的例子,我們把每個判斷中的所有條件進行組合,設(shè)計組合條件如表所示,而我們設(shè)計的測試用例就要包括所有的組合條件。編號覆蓋條件取值判定條件取值具體條件取值1T1,T2M取Ya>0,b>02T1,F2M取Na>0,b<=03F1,T2M取Na<=0,b>04F1,F2M取Na<=0,b<=05T3,T4Q取Ya>1,c>16T3,F4Q取Ya>1,c<=17F3,T4Q取Ya<=1,c>18F3,F4Q取Na<=1,c<=123ppt課件6.2.6多重條件覆蓋測試用例覆蓋條件覆蓋判斷覆蓋組合a=2,b=1,c=6T1,T2,T3,T4M取Y分支,Q取Y分支1,5a=2,b=-1,c=-2T1,F2,T3,F4M取N分支,Q取Y分支2,6a=-1,b=2,c=3F1,T2,F3,T4M取N分支,Q取Y分支3,7a=-1,b=-2,c=-3F1,F2,F3,F4M取N分支,Q取N分支4,824ppt課件6.2.6多重條件覆蓋【優(yōu)點】:條件組合覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則?!救秉c】:線性地增加了測試用例的數(shù)量。(要求覆蓋復合條件中所有簡單條件的真值)25ppt課件6.2.7路徑覆蓋基本思想是:設(shè)計所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑。126ppt課件6.2.7路徑覆蓋測試用例覆蓋組合覆蓋路徑a=2,b=1,c=61,51-2-4a=1,b=1,c=-31,81-2-5a=-1,b=2,c=34,71-3-4a=-1,b=-2,c=-34,81-3-527ppt課件6.2.7路徑覆蓋【優(yōu)點】

:這種測試方法可以對程序進行徹底的測試,比前面五種的覆蓋面都廣。【缺點】

:需要設(shè)計大量、復雜的測試用例,使得工作量呈指數(shù)級增長,不見得把所有的條件組合都覆蓋。28ppt課件29ppt課件

從前面的例子我們可以看到,采用任何一種覆蓋方法都不能滿足我們的要求,所以,在實際的測試用例設(shè)計過程中,可以根據(jù)需要將不同的覆蓋方法組合起來使用,以實現(xiàn)最佳的測試用例設(shè)計。30ppt課件條件組合覆蓋結(jié)合路徑覆蓋測試用例覆蓋條件覆蓋路徑覆蓋組合a=2,b=1,c=6T1,T2,T3,T4P1:(1-2-4)1,5a=1,b=1,c=-3T1,T2,F3,F4P2:(1-2-5)1,8a=-1,b=2,c=3F1,F2,F3,T4P3:(1-3-4)4,7a=-1,b=-2,c=-3F1,F2,F3,F4P4:(1-3-5)4,8a=2,b=-1,c=-2T1,F2,T3,F4P3:(1-3-4)2,6a=-1,b=2,c=3F1,T2,F3,T4P3:(1-3-4)3,731ppt課件6.3數(shù)據(jù)流概念數(shù)據(jù)流圖:把數(shù)據(jù)源、數(shù)據(jù)接受、數(shù)據(jù)存儲和數(shù)據(jù)處理作為節(jié)點描述的一個圖形,數(shù)據(jù)之間的邏輯體現(xiàn)為節(jié)點之間的邊。數(shù)據(jù)流測試:根據(jù)代碼中變量的使用情況進行的測試,主要關(guān)注軟件中的數(shù)據(jù)定義和使用。32ppt課件6.3定義和使用定義:將數(shù)據(jù)存儲起來,存儲單元的內(nèi)容改變使用:將數(shù)據(jù)取出來,存儲單元的內(nèi)容不變33ppt課件6.3.2c-use和p-usec-use(c表示計算):1.變量被用在賦值語句的表達式、輸出語句中;(z=x+1;output(x);)2.變量被被當作參數(shù)傳遞給調(diào)用函數(shù);(foo(x*x))3.變量被用在下標表達式中.(A[i]=2*x)p-use(p表示謂詞):

變量被用在分支語句的條件表達式中。

(if(z>0)output(z);)34ppt課件6.3.3全局和局部的定義與使用一個變量可能在同一個基本塊中被定義、使用和重定義。考慮如下含有3條語句的基本塊:

p=y+z;x=p+1;p=z*z;

這個基本塊定義了p,使用了p,并且還重定義了p。p的第一個定義是局部的,這個定義被同一基本塊中的第二個定義屏蔽了,因此,它的值未能超越此基本塊。p的第二個定義則是全局的。注:在本章中,我們只關(guān)心全局定義和使用,局部定義與使用在研究基于數(shù)據(jù)流的測試充分性時沒有意義。35ppt課件6.3.4數(shù)據(jù)流圖

程序的數(shù)據(jù)流圖(DFG)也稱為def-use圖,它勾畫了程序中變量在不同基本塊間的定義流。:定義在基本塊i中的變量的集合。程序中的變量聲明、賦值語句、輸入語句和傳址調(diào)用都可以用來定義變量。:在基本塊i中有的變量的集合。:在基本塊i中有的變量的集合。例:p=y+z;foo(p+q,number);//傳值參數(shù)

A[i]=x+1;if(x>y){......}36ppt課件6.3.4數(shù)據(jù)流圖

構(gòu)造數(shù)據(jù)流圖的過程:步驟1

計算P中每個基本塊i的、和。步驟2

將結(jié)點集N中的每個結(jié)點i與、和關(guān)聯(lián)起來。步驟3

針對每個具有非空集并且在條件C處結(jié)束的結(jié)點i,如果條件C為真時執(zhí)行的是邊(i,j),C為假時執(zhí)行的是邊(i,k),分別將邊(i,j),(i,k)與C,!C關(guān)聯(lián)起來。

37ppt課件1begin2intx,y;3intz;4input(x,y);z=0;5if(x<0andy<0){6z=x*x;7if(y≥0)z=z+1;8}9elsez=x*x*x;10output(z);11end38ppt課件6.3.5def-clear路徑def-clear路徑:假設(shè)變量x在結(jié)點i中定義,在結(jié)點j中使用,考慮路徑p=(i,n1,n2,...,nk,j),k≥0,路徑p從結(jié)點i開始,結(jié)束于結(jié)點j,并且結(jié)點i、j在子路徑n1,n2,...,nk中未出現(xiàn),如果變量x沒有在子路徑n1,n2,...,nk中被重定義,稱p是變量x的def-clear路徑。在這種情況下,也稱x在結(jié)點i處的定義,即di(x)在結(jié)點j處是活躍的。39ppt課件6.3.6def-use對def-use對勾畫了變量的一次特定的定義和使用。我們只關(guān)心兩種類型的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論