第8章軟件測試樣式與用例設(shè)計_第1頁
第8章軟件測試樣式與用例設(shè)計_第2頁
第8章軟件測試樣式與用例設(shè)計_第3頁
第8章軟件測試樣式與用例設(shè)計_第4頁
第8章軟件測試樣式與用例設(shè)計_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

測試樣式與測試用例可復(fù)用的測試用例模式測試用例設(shè)計8軟件測試樣式與測試用例測試樣式與測試用例可復(fù)用的測試用例模式測試用例設(shè)計8軟件測試樣式與測試用例測試樣式與測試用例測試樣式測試樣式是對特定的、重復(fù)出現(xiàn)的軟件測試問題提供的一個通解,它包括決定樣式應(yīng)用環(huán)境的上下問(即:周境),以及相關(guān)因素組成的部件。測試用例測試用例是定義測試實現(xiàn)及其環(huán)境、測試輸入、測試條件以及為一個特定目標所開發(fā)的預(yù)期結(jié)果的集合。3測試樣式與測試用例可復(fù)用的測試用例模式測試用例設(shè)計8軟件測試樣式與測試用例ByZhangQifei可復(fù)用的測試用例模式可復(fù)用的測試樣式可復(fù)用的測試樣式是對可復(fù)用的軟件測試問題提供的一個通解,它包括決定樣式應(yīng)用的周境,以及相關(guān)的因素組成的部件。5可復(fù)用的測試用例模式可復(fù)用測試用例模式在通用測試用例屬性的基礎(chǔ)上,增加可復(fù)用性,如接口描述、功能粒度、復(fù)用頻率和版本信息等,以利用已有測試用例資產(chǎn)來支持用例的復(fù)用。6可復(fù)用的測試用例模式在具體實現(xiàn)時,測試用例在可復(fù)用的測試用例庫中是以樹形結(jié)構(gòu)方式組織的,從所屬測試類型,領(lǐng)域到所屬功能層次展開,以方便測試用例的檢索。7可復(fù)用的測試用例模式測試用例構(gòu)件

測試用例構(gòu)件依據(jù)可復(fù)用測試用例定義設(shè)計的一個封裝的、能獨立完成某個或某組測試功能的、且具有顯性的可交付使用的測試用例。

測試用例構(gòu)件采用四元組可免分類描述模型,可復(fù)用的測試用例構(gòu)件={測試目的、測試類型、被測試域、測試方法},共四個主刻面組成,其下各有若干個子刻面,每個刻面及子刻面描述的信息由上面的BNF范式給出。8可復(fù)用的測試用例模式測試用例設(shè)計原則基于測試需求可追蹤的原則?;跍y試方法的原則。基于測試充分性和效率的原則。基于測試執(zhí)行的可重復(fù)性原則。測試用例設(shè)計考慮的因素測試用例的可追蹤性測試初始化要求評價測試結(jié)果的準則9可復(fù)用的測試用例模式測試用例的設(shè)計步驟設(shè)計的用例應(yīng)滿足測試準出條件,對于測試覆蓋類方法,應(yīng)按照覆蓋具體要求設(shè)計用例,對于其他類型的測試種類,應(yīng)該按照具體的測試方法要求進行用例設(shè)計。測試用例步驟如下10測試樣式與測試用例可復(fù)用的測試用例模式測試用例設(shè)計8軟件測試樣式與測試用例12黑盒測試黑盒測試的概念等價類劃分法邊界條件法決策表法因果圖法黑盒測試的其他方法13黑盒測試的基本概念黑盒測試是從一種從軟件外部對軟件實施的測試,也稱功能測試或基于規(guī)格說明的測試或數(shù)據(jù)驅(qū)動的測試?;居^點:任何程序都可以看作是從輸入定義域到輸出值域的映射,將被測程序看作一個打不開的黑盒,黑盒里面的內(nèi)容(實現(xiàn))是完全不知道的,只知道軟件要做什么。因無法看到盒子中的內(nèi)容,所以不知道軟件是如何實現(xiàn)的,也不關(guān)心黑盒里面的結(jié)構(gòu),只關(guān)心軟件的輸入數(shù)據(jù)和輸出結(jié)果。14黑盒測試發(fā)現(xiàn)的缺陷類型黑盒測試發(fā)現(xiàn)軟件的外部行為錯誤功能錯誤或遺漏界面錯誤外部數(shù)據(jù)庫訪問錯誤性能錯誤初始化和終止錯誤……15黑盒測試技術(shù)根據(jù)選擇測試用例的方式不同劃分,黑盒測試技術(shù)主要有:功能分解法等價類劃分法邊界條件法決策表法因果圖法正交實驗法場景法錯誤猜測法……16等價類劃分法等價類劃分法測試技術(shù)是依據(jù)軟件系統(tǒng)輸入集合、輸出集合或操作集合實現(xiàn)功能的相同性,對其進行子集劃分,然后從每個子集選取典型的具有代表性的數(shù)據(jù)作為測試用例的測試用例設(shè)計方法。等價類劃分法設(shè)計測試用例的意義在于把可能的測試用例集縮減到可控制且仍足以測試軟件的較小范圍內(nèi)。等價類別或者等價區(qū)間是指測試相同目標或者暴露相同軟件缺陷的一組測試。在尋找等價區(qū)間時,想辦法把軟件的相似輸入、輸出、操作分成組。這些組是等價區(qū)間。17等價類劃分方法到目前為止沒有劃分高質(zhì)量等價類的標準方法,不同的功能說明可能使用不同的方法。不同的等價類得到的測試用例質(zhì)量不同。常用的等價類劃分原則(1)按區(qū)間劃分(2)按數(shù)值劃分(3)按數(shù)值集合劃分(4)按限制條件或規(guī)則劃分(5)細分等價類18等價類劃分法示例三角形問題的等價類測試

三角形問題是軟件測試文獻中使用廣泛的一個例子。

輸入三個整數(shù)a、b和c分別作為三角形的3條邊,通過程序判斷由這3條邊構(gòu)成的三角形類型是:等邊三角形、等腰三角形、一般三角形或非三角形(不能構(gòu)成一個三角形)。根據(jù)輸入域進行等價類劃分,從哪些方面考慮?三個數(shù)整數(shù)19等價類劃分測試用例設(shè)計在設(shè)計測試用例時應(yīng)同時考慮有效等價類和無效等價類測試用例的設(shè)計。根據(jù)等價類表設(shè)計測試用例,具體步驟如下:(1)為每個等價類規(guī)定一個唯一的編號。(2)設(shè)計一個新的測試用例,盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到測試用例覆蓋了所有的有效等價類。(3)設(shè)計一個新的測試用例,使其覆蓋并且只覆蓋一個還沒有被覆蓋的無效等價類。重復(fù)這一步,直至測試用例覆蓋了所有的無效等價類。20輸入條件等價類編號有效等價類等價類編號無效等價類三個整數(shù),取值范圍在1~1001三個數(shù)4只有一條邊5只有兩條邊6多于三條邊2整數(shù)7一邊為非整數(shù)8兩邊為非整數(shù)9三邊為非整數(shù)31≤a≤1001≤b≤1001≤c≤10010一邊為011兩邊為012三邊為013一邊小于014兩邊小于015三邊小于016一邊大于10017兩邊大于10018三邊大于100三角形問題的等價類表測試用例怎么設(shè)計?等價類劃分法示例21三角形問題按照輸出條件,將輸出域劃分等價類R1={<a,b,c>:邊為a,b,c的等邊三角形}R2={<a,b,c>:邊為a,b,c的等腰三角形}R3={<a,b,c>:邊為a,b,c的一般三角形}R4={<a,b,c>:邊a,b,c不能形成三角形}對應(yīng)測試用例測試用例測試用例abc預(yù)期輸出Test1555等邊三角形Test2223等腰三角形Test3345一般三角形Test4412非三角形等價類劃分法例22一些特殊情況的處理一些特殊情況默認值空值無不同的軟件對這些情況的處理可能是不一樣的,采用等價類劃分設(shè)計測試的時候一般要把它們作為單獨的等價類。23邊界條件法(邊界值法)邊界值測試的基本原理:大量的軟件測試實踐表明,故障往往出現(xiàn)在定義域或值域的邊界上,而不是在其內(nèi)部。為檢測邊界附近的處理專門設(shè)計測試用例,通常都會取得很好的測試效果。在等價類劃分基礎(chǔ)上進行邊界值分析測試的基本思想是,選取正好等于、剛剛大于或剛剛小于等價類邊界的值作為測試數(shù)據(jù),而不是選取等價類中的典型值或任意值做為測試數(shù)據(jù)。24邊界條件邊界是一些特殊情況。程序在處理大量中間數(shù)值時都是正確,但是在邊界處可能出現(xiàn)錯誤。邊界條件就是軟件計劃的操作界限所在的邊緣條件。一些可能與邊界有關(guān)的數(shù)據(jù)類型有:數(shù)值,速度,字符,地址,位置,尺寸,數(shù)量等??紤]這些數(shù)據(jù)類型的下述特征: 第一個/最后一個,最小值/最大值,開始/完成,超過/在內(nèi),空/滿,最短/最長,最慢/最快,最早/最遲,最高/最低,相鄰/最遠等。如果在程序中的數(shù)據(jù)結(jié)構(gòu)有指定的邊界,那么選擇這個數(shù)據(jù)結(jié)構(gòu)邊界上的值作為測試用例。分析規(guī)格說明,找出其它可能的邊界條件。25常見的邊界值對16-bit的整數(shù)而言32767和-32768是邊界屏幕上光標在最左上、最右下位置報表的第一行和最后一行數(shù)組元素的第一個和最后一個循環(huán)的第0次、第1次和倒數(shù)第2次、最后一次……26邊界條件法(邊界值法)邊界條件分析測試

邊界值分析利用被測試域變量的最小值(min),稍大于最小值(min+),域內(nèi)任意值(nom),稍小于最大值(max-),最大值(max)來設(shè)計測試用例。即通過使所有變量取正常值,只使一個變量分別取最小值,略大于最小值、略小于最大值和最大值。27函數(shù)y=f(x1,x2)

輸入變量的取值范圍分別為:x1

∈[a,b],

x2∈[c,d]。邊界條件法(邊界值法)abcdX2X1邊界條件坐標28函數(shù)y=f(x1,x2)

輸入變量的取值范圍分別為:x1

∈[a,b],

x2∈[c,d]。邊界條件法(邊界值法)abcdX2X1(一般)邊界值29邊界條件法(邊界值法)示例加法器程序功能描述計算兩個1~100之間整數(shù)的和。設(shè)計測試用例對于加法器程序,根據(jù)輸入要求可將輸入空間劃分為三個等價類,即1個有效等價類(1~100之間),兩個無效等價類(<1,>100)。但這種等價類劃分不是很完善,我們只考慮了輸入數(shù)據(jù)的取值范圍,而沒有考慮輸入數(shù)據(jù)的類型,我們認為輸入應(yīng)為整數(shù),但用戶輸入什么都有可能。30加法器問題的邊界條件法設(shè)計的測試用例測試用例輸入數(shù)據(jù)預(yù)期輸出加數(shù)1加數(shù)2和Test115051Test225052Test39950149Test410050150Test550151Test650252Test75099149Test850100150Test9050提示“請輸入1~100間的整數(shù)”Test10500提示“請輸入1~100間的整數(shù)”Test1110150提示“請輸入1~100間的整數(shù)”31加法器問題的邊界條件法設(shè)計的測試用例測試用例輸入數(shù)據(jù)預(yù)期輸出加數(shù)1加數(shù)2和Test1250101提示“請輸入1~100間的整數(shù)”Test130.250提示“請輸入1~100間的整數(shù)”Test14500.2提示“請輸入1~100間的整數(shù)”Test15A50提示“請輸入1~100間的整數(shù)”Test1650A提示“請輸入1~100間的整數(shù)”Test17@50提示“請輸入1~100間的整數(shù)”Test1850@提示“請輸入1~100間的整數(shù)”Test19空格50提示“請輸入1~100間的整數(shù)”Test2050空格提示“請輸入1~100間的整數(shù)”Test2150提示“請輸入1~100間的整數(shù)”Test2250提示“請輸入1~100間的整數(shù)”32決策表法決策表是分析和表達多邏輯條件下執(zhí)行不同操作情況的工具。優(yōu)點能夠?qū)?fù)雜的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。在所有功能測試方法中,基于決策表的測試方法是最嚴格、最具有邏輯性的黑盒測試方法。

軟件開發(fā)中,某些操作的實施依賴于多個邏輯條件的組合,即針對不同邏輯條件的組合值,分別執(zhí)行不同的操作。決策表很適合處理這類問題。if…then…elseif…then……else…then(判定表法)33規(guī)則

決策表通常由條件樁、條件項、動作樁和動作項4部分組成。任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作稱為一條規(guī)則。在決策表中貫穿條件項和動作項的一列就是一條規(guī)則!問題的條件的列表列出條件所有可能的取值列出滿足條件時系統(tǒng)可能產(chǎn)生的動作的列表在條件項的各組取值情況下應(yīng)采取的動作決策表法條件樁條件項動作樁動作項34決策表法設(shè)計測試用例的步驟建立決策表的步驟:(1)列出所有的條件樁和動作樁。(2)確定規(guī)則的個數(shù)。(3)填入條件項。(4)填入動作項,得到初始決策表。(5)簡化決策表,合并相似規(guī)則(相同動作)。根據(jù)簡化決策表的規(guī)則設(shè)計測試用例,每一條規(guī)則對應(yīng)一個測試用例。35決策表法設(shè)計測試用例示例三角形問題。三個整數(shù)a、b、c,分別作為三角形的三條邊,判斷由此三條邊構(gòu)成的三角形類型為等邊三角形、等腰三角形、一般三角形(包括直角三角形)或非三角形。

分析:三角形問題設(shè)計測試用例條件C1:a,b,c構(gòu)成一個三角形?C2:a=b?C3:b=c?C4:a=c?動作A1:非三角形A2:一般三角形A3:等腰三角形A4:等邊三角形36決策表法設(shè)計測試用例示例步驟如下:列出所有條件樁和動作樁。確定規(guī)則的個數(shù)。 三角形問題的決策表有4個條件,每個條件可以取兩個值(真值和假值),所以應(yīng)該有24=16種規(guī)則。填寫條件項。填寫動作項,從而得到初始決策表。簡化決策表。合并相似規(guī)則后得到問題的簡化決策表。設(shè)計測試用例。三角形問題設(shè)計測試用例37決策表法設(shè)計測試用例示例測試用例abc預(yù)期輸出TestCase11044非三角形TestCase2444等邊三角形TestCase3???不可能TestCase4???不可能TestCase5445等腰三角形TestCase6???不可能TestCase7544等腰三角形TestCase8454等腰三角形TestCase9345一般三角形根據(jù)簡化決策表,可設(shè)計測試用例三角形問題設(shè)計測試用例38決策表法當測試邏輯時,決策表是一個非常好的選擇

If-then-else邏輯很突出條件和規(guī)則的順序不影響執(zhí)行哪些操作輸入變量之間存在邏輯關(guān)系涉及輸入變量子集的計算輸入與輸出之間存在因果關(guān)系很高的圈復(fù)雜度為了降低測試用例個數(shù),可以使用擴展項決策表決策表并不是專用于設(shè)計測試用例的方法,它同樣可以應(yīng)用于其他方面,例如需求分析決策表的設(shè)計一次不一定成功,迭代會有所幫助39等價類劃分法和邊界值分析方法都是著重考慮輸入條件,如果程序輸入之間沒有什么聯(lián)系,采用等價類劃分和邊界值分析是一種比較有效的方法。但如果輸入之間有關(guān)系,例如,約束關(guān)系、組合關(guān)系,這種關(guān)系用等價類劃分和邊界值分析是很難描述的,測試效果難以保障,因此必須考慮使用一種適合于描述對于多種條件的組合,產(chǎn)生多個相應(yīng)動作的測試方法,因果圖正是在此背景下提出的。因果圖法就是一種利用圖解法分析輸入的各種組合情況,生成決策表,從而設(shè)計測試用例的方法,它適合于檢查程序輸入條件的各種情況的組合。因果圖法40在因果圖中使用4種邏輯符號分別表示4種因果關(guān)系,如下圖所示。用直線連接左右節(jié)點,其中左邊節(jié)點表示輸入狀態(tài)(或稱原因),右邊節(jié)點表示輸出狀態(tài)(或稱結(jié)果)。輸入節(jié)點和輸出接點都可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。若a是1,則b也是1若a是1,則b是0若a、b全是1,則c為1;a、b有一個是0,則c是0??梢杂卸鄠€輸入!若a、b、c有一個是1,則d為1。可以有多個輸入!因果圖法41因果圖的基本圖形符號恒等:若原因出現(xiàn),則結(jié)果出現(xiàn);若原因不出現(xiàn),則結(jié)果也不出現(xiàn)。非(~):若原因出現(xiàn),則結(jié)果不出現(xiàn);若原因不出現(xiàn),則結(jié)果出現(xiàn)。

或(∨):若幾個原因中有1個出現(xiàn),則結(jié)果出現(xiàn);若幾個原因都不出現(xiàn),則結(jié)果不出現(xiàn)。與(∧):若幾個原因都出現(xiàn),結(jié)果才出現(xiàn)。若其中有1個原因不出現(xiàn),則結(jié)果不出現(xiàn)。42因果圖的約束符號E(互斥):表示a、b兩個原因不會同時成立,兩個中最多有一個可能成立。I(包含):表示a、b、c這3個原因中至少有一個必須成立。O(惟一):表示a和b當中必須有一個,且僅有一個成立。R(要求):表示當a出現(xiàn)時,b必須也出現(xiàn)。a出現(xiàn)時不可能b不出現(xiàn)。M(屏蔽):表示當a是1時,b必須是0。而當a為0時,b的值不定。43(1)確定軟件規(guī)格中的原因和結(jié)果。 分析規(guī)格說明中哪些是原因(即輸入條件或輸入條件的等價類),哪些是結(jié)果(即輸出條件),并給每個原因和結(jié)果賦予一個標識符。(2)確定原因和結(jié)果之間的邏輯關(guān)系。

分析軟件規(guī)格說明中的語義,找出原因與結(jié)果之間、原因與原因之間對應(yīng)的關(guān)系,根據(jù)這些關(guān)系畫出因果圖。(3)確定因果圖中的各個約束。 由于語法或環(huán)境的限制,有些原因與原因之間、原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號表明約束或限制條件。(4)把因果圖轉(zhuǎn)換為決策表。(5)根據(jù)決策表設(shè)計測試用例。因果圖法設(shè)計測試用例步驟44因果圖法設(shè)計測試用例示例有一個處理單價為1元5角錢的盒裝飲料的自動售貨機軟件。若投入1元5角硬幣,按下“可樂”、“雪碧”和“紅茶”按鈕,相應(yīng)的飲料就送出來。若投入的是兩元硬幣,在送出飲料的同時退還5角硬幣。

使用因果圖法設(shè)計測試用例。45因果圖法設(shè)計測試用例示例46因果圖法設(shè)計測試用例示例47因果圖法根據(jù)需求規(guī)格說明書,分析因果關(guān)系。有助于用一個系統(tǒng)的方法選擇出高效的測試用例集。額外的好處,就是可以指出規(guī)格說明的不完整性和不明確之處。因果圖是一種形式語言,實際上是一種數(shù)字邏輯電路,但沒有使用標準的電子學(xué)符號,而是使用了稍微簡單點的符號。48白盒測試白盒測試技術(shù)靜態(tài)白盒法路徑覆蓋法基本路徑法白盒測試的其他方法49白盒測試技術(shù)白盒測試的定義

白盒測試是基于代碼的針對被測對象內(nèi)部是如何進行工作的測試,通過程序代碼或者通過開發(fā)工具找出軟件的缺陷,也稱作結(jié)構(gòu)測試或邏輯驅(qū)動測試。白盒測試的目的

檢測軟件程序內(nèi)部結(jié)構(gòu),程序書寫是否規(guī)范、是否按照項目需求規(guī)格說明正常運行。白盒測試法檢查程序內(nèi)部邏輯結(jié)構(gòu),對所有邏輯路徑進行測試,是一種窮舉路徑的測試方法。是基于覆蓋的測試技術(shù)!覆蓋全部代碼、分支、路徑、條件

50為什么進行白盒測試程序自身存在缺陷邏輯錯誤(特別是備選流的邏輯)筆誤(設(shè)計正確,實施時出現(xiàn)錯誤)……51白盒測試的實施步驟測試計劃階段根據(jù)需求說明書,制定測試進度計劃。測試設(shè)計階段依據(jù)程序設(shè)計說明書,按照一定規(guī)范化的方法進行軟件結(jié)構(gòu)劃分和設(shè)計測試用例。測試執(zhí)行階段輸入測試用例,得到測試結(jié)果。測試總結(jié)階段對比測試的結(jié)果和代碼的預(yù)期結(jié)果,分析錯誤原因,找到并解決錯誤。52白盒測試方法采用白盒測試方法必須遵循以下幾條原則,才能達到測試的目的:保證一個模塊中的所有獨立路徑至少被測試一次。所有邏輯值均需測試真(true)和假(false)兩種情況。在上下邊界及可操作范圍內(nèi)運行所有循環(huán)。檢查程序的內(nèi)部數(shù)據(jù)結(jié)構(gòu),保證其結(jié)構(gòu)的有效性。白盒測試主要是檢查程序的內(nèi)部結(jié)構(gòu)、邏輯、循環(huán)和路徑。常用測試用例設(shè)計方法有:邏輯覆蓋法(邏輯驅(qū)動測試)基本路徑測試方法53白盒測試技術(shù)重要說明 即使每條路徑都測試過了,仍然可能存在錯誤。 原因在于:窮舉路徑測試無法檢查出程序本身是否違反了設(shè)計規(guī)范,即程序是否是一個錯誤的程序。窮舉路徑測試不可能查出程序因遺漏路徑而出錯。窮舉路徑測試發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤。多數(shù)質(zhì)量機構(gòu)把分支覆蓋準則作為測試覆蓋的最低可接受級別。54白盒測試技術(shù)白盒測試技術(shù)靜態(tài)方法(靜態(tài)分析)

檢查軟件的表示和描述是否一致,有沒有沖突或歧義 代碼檢查、靜態(tài)結(jié)構(gòu)分析,可能借助某些工具實現(xiàn) 靜態(tài)分析能夠有效地發(fā)現(xiàn)30%~70%的邏輯設(shè)計和編碼錯誤

定性分析軟件質(zhì)量動態(tài)方法

基于各種覆蓋準則方法

……55靜態(tài)白盒方法的四個要素確定問題 靜態(tài)白盒測試的目的是找出軟件的問題,全部的批評應(yīng)該直指代碼或設(shè)計,而不是其設(shè)計實現(xiàn)者。參與者之間不應(yīng)該相互指責,應(yīng)該把自我意識、個人情緒和敏感丟在一邊。遵守規(guī)則 靜態(tài)白盒測試要遵守一套固定的規(guī)則,如哪些內(nèi)容要做評價等。其重要性在于參與者了解自己的角色、目標是什么。有助于使審查進展更加順利。充分準備 每一個參與者都盡力為審查做準備。根據(jù)審查的類型,參與者可能扮演不同的角色。他們需要了解自己的責任和義務(wù),并積極參與審查。在審查過程中找出的問題大部分是在準備期間發(fā)現(xiàn)的,而不是實際審查期間。編寫報告 審查小組必須做出審查結(jié)果的書面總結(jié)報告,并使報告便于開發(fā)小組的成員使用。56常見的控制流圖的基本控制結(jié)構(gòu)57不可能進行完全的白盒測試左圖是某程序的流程圖,假設(shè)循環(huán)10次,請計算一下有多少條程序執(zhí)行通路?假設(shè)由圖中得到的所有路徑都是可執(zhí)行路徑,執(zhí)行一次循環(huán)大約需要10微秒(奔騰41.7G)。如果循環(huán)次數(shù)為10的話,遍歷圖中所有路徑需要多長時間?結(jié)論是:需要14秒左右的時間如果循環(huán)次數(shù)為20次,100次時,結(jié)果又如何?結(jié)論是:循環(huán)20次,需要約4072小時,循環(huán)100次則大約需要6.79*1047年58路徑覆蓋法白盒測試是基于代碼的針對被測對象內(nèi)部是如何進行工作的測試。白盒測試法檢查程序內(nèi)部邏輯結(jié)構(gòu),常用的基本技術(shù)是覆蓋率分析。覆蓋全部代碼、分支、路徑、條件路徑覆蓋法即設(shè)計出足夠的測試用例來完成對被測試程序可執(zhí)行路徑進行全方位的執(zhí)行覆蓋。主要包括邏輯路徑覆蓋和物理路徑覆蓋的兩種方法。59路徑覆蓋法邏輯路徑覆蓋考察對程序邏輯的覆蓋程度,主要針對程序中由于判定條件所產(chǎn)生的邏輯分支結(jié)構(gòu)進行測試。

語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋物理路徑覆蓋是從圖論角度來測試所有可執(zhí)行的物理路徑。邏輯路徑測試與物理路徑測試不能相互替代。60語句路徑覆蓋語句路徑覆蓋是一個比較弱的邏輯路徑覆蓋標準。它的涵義是指通過選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每個語句至少被執(zhí)行一次。61TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預(yù)期輸出被測路徑CASE1x=4,y=2,z=0x=3sacbed62語句路徑覆蓋【優(yōu)點】可以很直觀地從源代碼得到測試用例,無須細分每條判定表達式?!救秉c】由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。如在多分支的邏輯運算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。語句覆蓋通常是實際測試過程中所要達到的最基本的邏輯路徑覆蓋度量標準。63判定路徑覆蓋判定路徑覆蓋又稱為分支路徑覆蓋。它是指通過設(shè)計足夠的測試用例,使得程序中的每一個判定至少都獲得一次“真值”和“假值”,或者說使得程序中的每一個分支都至少通過一次。判定路徑覆蓋比語句路徑覆蓋的標準稍強一些。64TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預(yù)期輸出被測路徑CASE2x=1,y=3,z=0x=1/3sacbdCASE3x=3,y=2,z=1X=4sabeda真,b假a假,b真y=3,x=4,z=0a真,b真y=3,x=0,z=1a假,b假65判定路徑覆蓋【優(yōu)點】判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例?!救秉c】往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。66條件路徑覆蓋條件路徑覆蓋的涵義是指,對于每個判定中所包含的若干個條件,應(yīng)設(shè)計足夠多的測試用例,使得判定中的每個條件都至少取到一次“真值”和“假值”的機會。也就是說,判定中的每個條件的所有可能結(jié)果至少出現(xiàn)一次。67TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預(yù)期輸出被測路徑CASE4x=0,y=2,z=0x=1sacbedCASE5x=2,y=1,z=1x=3sabedy>1,y<=1z==0,z!=0y==2,y!=2x>1,x<=1aC1:T,FaC2:T,FbC1:T,FbC2:T,FaC1

T,aC2

T,bC1

T,

bC2

FaC1

F,aC2

F,bC1

F,

bC2

T68條件路徑覆蓋【優(yōu)點】增加了對條件判定情況的測試,增加了測試路徑?!救秉c】條件覆蓋不一定包含判定覆蓋。例如,剛才設(shè)計的用例就沒有覆蓋判斷b的N分支。條件覆蓋只能保證每個條件至少有一次為“真”和“假”,而不考慮所有的判定結(jié)果。69條件組合路徑覆蓋條件組合路徑覆蓋是指,通過設(shè)計足夠多的測試用例,使得運行這些測試用例時,每個判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。70TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce①y>1,z==0②y>1,z!=0③y<=1,z==0④y<=1,z!=0⑤y==2,x>1⑥y==2,x<=1⑦y!=2,x>1⑧y!=2,x<=1測試用例輸入預(yù)期輸出被測路徑CASE8x=4,y=2,z=0x=3sacbedCASE9x=1,y=2,z=1x=2sabedCASE10x=2,y=1,z=0x=3sabedCASE11x=1,y=1,z=1x=1sabd①和⑤②和⑥③和⑦④和⑧a真b真a假b真a假b真a假b假aC1:T,aC2:TaC1:T,aC2:FaC1:F,aC2:TaC1:F,aC2:FbC1:T,bC2:TbC1:T,bC2:FbC1:F,bC2:TbC1:F,bC2:F71條件組合路徑覆蓋【優(yōu)點】條件組合覆蓋準則滿足語句覆蓋、判定覆蓋、條件覆蓋和判定/條件覆蓋準則?!救秉c】線性地增加了測試用例的數(shù)量。條件組合覆蓋并不能覆蓋程序中的每一條路徑。示例中的“a真b假”未覆蓋!72邏輯路徑覆蓋條件組合覆蓋判定/條件覆蓋判定覆蓋條件覆蓋語句覆蓋73修正的條件/判定路徑覆蓋修正的條件/判定覆蓋方法要求在一個程序中每一種輸入輸出至少得出現(xiàn)一次,每個程序的判定到所有可能的結(jié)果至少轉(zhuǎn)換一次;在程序中的每一個條件必須產(chǎn)生所有可能的輸出結(jié)果至少一次,并且每一個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結(jié)果改變。是條件/判定覆蓋的完善和條件組合覆蓋的精簡實現(xiàn)條件/判定覆蓋中未考慮到的各種條件組合情況,又減少了條件組合覆蓋產(chǎn)生的測試用例的數(shù)目當每個判定條件比較多的時候,即對于那些每個判定存在3個或3個以上的條件的情況下,修正的條件/判定能夠大幅減少測試用例的數(shù)目。74物理路徑覆蓋條件組合覆蓋并不能覆蓋程序中的每一條路徑。物理路徑覆蓋是指,通過設(shè)計足夠多的測試用例,使得運行這些測試用例時,程序的每條可能執(zhí)行的物理路徑都至少經(jīng)過一次(如果程序中有環(huán)路,則要求每條環(huán)路至少經(jīng)過一次)。75TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預(yù)期輸出被測路徑CASE8x=4,y=2,z=0x=3sacbedCASE9x=1,y=2,z=1x=2sabedCASE12x=1,y=3,z=0x=1/3sacbdCASE11x=1,y=1,z=1x=1sabd①和⑤②和⑥①和⑧④和⑧a真b真a假b真a真b假a假b假①y>1,z==0②y>1,z!=0③y<=1,z==0④y<=1,z!=0⑤y==2,x>1⑥y==2,x<=1⑦y!=2,x>1⑧y!=2,x<=1aC1:T,aC2:TaC1:T,aC2:FaC1:F,aC2:TaC1:F,aC2:FbC1:T,bC2:TbC1:T,bC2:FbC1:F,bC2:TbC1:F,bC2:F76語句路徑覆蓋 被測程序的每個語句至少被執(zhí)行一次。判定路徑覆蓋(分支路徑覆蓋) 程序中的每一個判定至少都獲得一次“真值”和“假值”,或者說使得程序中的每一個分支都至少通過一次。條件路徑覆蓋 判定中的每個條件都至少取到一次“真值”和“假值”。判定/條件路徑覆蓋 判定中的每個條件的所有可能結(jié)果至少出現(xiàn)一次,并且每個判定本身的所有可能結(jié)果也至少出現(xiàn)一次。條件組合路徑覆蓋 每個判定中條件結(jié)果的所有可能組合至少出現(xiàn)一次。修正的條件/判定路徑覆蓋 在一個程序中每一種輸入輸出至少得出現(xiàn)一次,在程序中的每一個條件必須產(chǎn)生所有可能的輸出結(jié)果至少一次,并且每一個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結(jié)果改變。物理路徑覆蓋 程序的每條可能執(zhí)行的物理路徑都至少經(jīng)過一次(如果程序中有環(huán)路,則要求每條環(huán)路至少經(jīng)過一次)。77內(nèi)容提要白盒測試技術(shù)靜態(tài)白盒法路徑覆蓋法基本路徑法白盒測試的其他方法軟件缺陷分析78基本路徑法即便一個不復(fù)雜的程序,特別是有循環(huán)存在的情況下,其路徑的組合都可能是一個天文數(shù)字!要進行完全測試是不可能的。在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個獨立路徑都被測試過,那么可以認為程序中的每個語句都已經(jīng)檢驗過了,即達到了語句覆蓋。這種測試方法就是通常所說的基本路徑測試方法。

79基本路徑法基本路徑本質(zhì)上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復(fù)操作得到程序中的其它路徑。程序中的循環(huán)體只執(zhí)行零次和一次,就成為基本路徑測試。設(shè)計出的測試用例要保證在測試中程序的每一條可執(zhí)行語句至少執(zhí)行一次?;韭窂椒ㄊ窃诔绦蚩刂屏鲌D的基礎(chǔ)上,通過分析控制結(jié)構(gòu)的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。

80基本路徑法基本路徑測試方法是在控制流圖的基礎(chǔ)上,通過分析控制結(jié)構(gòu)的環(huán)路復(fù)雜度,導(dǎo)出執(zhí)行路徑的基本集,再從該基本集設(shè)計測試用例?;韭窂綔y試方法包括以下4個步驟: (1)畫出程序的控制流圖。 (2)計算程序的環(huán)路復(fù)雜度,導(dǎo)出程序基本路徑集中的獨立路徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必須的測試用例數(shù)目的上界。 (3)導(dǎo)出基本路徑集,確定程序的獨立路徑。 (4)根據(jù)(3)中的獨立路徑,設(shè)計測試用例的輸入數(shù)據(jù)和預(yù)期輸出。81示例所示程序流程圖描述了最多輸入50個學(xué)生成績(以–1作為輸入結(jié)束標志),計算其中有效的學(xué)生分數(shù)的個數(shù)、總分數(shù)和平均值。其中,score存放學(xué)生成績的值,n2存放輸入的學(xué)生成績個數(shù),n1存放輸入成績中有效成績的個數(shù),sum存放成績總和,average存放平均值。開始

i=1,n1=n2=0,sum=0score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1

輸出n1,sum和averageFFFTTT12和345和6789101112

輸入一個成績score[i]82導(dǎo)出控制流圖123456789111012A1A2A3A4A5A6開始

i=1,n1=n2=0,sum=0score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1

輸出n1,sum和averageFFFTTT12和345和6789101112

輸入一個成績score[i]83確定環(huán)路復(fù)雜性度量方法1 V(G)=6(個區(qū)域)方法2

V(G)=E–N+2=16–12+2=6其中E為流圖中的邊數(shù),N為結(jié)點數(shù);方法3V(G)=P+1=5+1=6其中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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論