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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

測試用例構件依據可復用測試用例定義設計的一個封裝的、能獨立完成某個或某組測試功能的、且具有顯性的可交付使用的測試用例。

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

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

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

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

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

∈[a,b],

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

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

∈[a,b],

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

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

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

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

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

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

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

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

白盒測試是基于代碼的針對被測對象內部是如何進行工作的測試,通過程序代碼或者通過開發工具找出軟件的缺陷,也稱作結構測試或邏輯驅動測試。白盒測試的目的

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

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

檢查軟件的表示和描述是否一致,有沒有沖突或歧義 代碼檢查、靜態結構分析,可能借助某些工具實現 靜態分析能夠有效地發現30%~70%的邏輯設計和編碼錯誤

定性分析軟件質量動態方法

基于各種覆蓋準則方法

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

語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋物理路徑覆蓋是從圖論角度來測試所有可執行的物理路徑。邏輯路徑測試與物理路徑測試不能相互替代。60語句路徑覆蓋語句路徑覆蓋是一個比較弱的邏輯路徑覆蓋標準。它的涵義是指通過選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每個語句至少被執行一次。61TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預期輸出被測路徑CASE1x=4,y=2,z=0x=3sacbed62語句路徑覆蓋【優點】可以很直觀地從源代碼得到測試用例,無須細分每條判定表達式。【缺點】由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。如在多分支的邏輯運算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。語句覆蓋通常是實際測試過程中所要達到的最基本的邏輯路徑覆蓋度量標準。63判定路徑覆蓋判定路徑覆蓋又稱為分支路徑覆蓋。它是指通過設計足夠的測試用例,使得程序中的每一個判定至少都獲得一次“真值”和“假值”,或者說使得程序中的每一個分支都至少通過一次。判定路徑覆蓋比語句路徑覆蓋的標準稍強一些。64TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預期輸出被測路徑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判定路徑覆蓋【優點】判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細分每個判定就可以得到測試用例。【缺點】往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。66條件路徑覆蓋條件路徑覆蓋的涵義是指,對于每個判定中所包含的若干個條件,應設計足夠多的測試用例,使得判定中的每個條件都至少取到一次“真值”和“假值”的機會。也就是說,判定中的每個條件的所有可能結果至少出現一次。67TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預期輸出被測路徑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條件路徑覆蓋【優點】增加了對條件判定情況的測試,增加了測試路徑。【缺點】條件覆蓋不一定包含判定覆蓋。例如,剛才設計的用例就沒有覆蓋判斷b的N分支。條件覆蓋只能保證每個條件至少有一次為“真”和“假”,而不考慮所有的判定結果。69條件組合路徑覆蓋條件組合路徑覆蓋是指,通過設計足夠多的測試用例,使得運行這些測試用例時,每個判定中條件結果的所有可能組合至少出現一次。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測試用例輸入預期輸出被測路徑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條件組合路徑覆蓋【優點】條件組合覆蓋準則滿足語句覆蓋、判定覆蓋、條件覆蓋和判定/條件覆蓋準則。【缺點】線性地增加了測試用例的數量。條件組合覆蓋并不能覆蓋程序中的每一條路徑。示例中的“a真b假”未覆蓋!72邏輯路徑覆蓋條件組合覆蓋判定/條件覆蓋判定覆蓋條件覆蓋語句覆蓋73修正的條件/判定路徑覆蓋修正的條件/判定覆蓋方法要求在一個程序中每一種輸入輸出至少得出現一次,每個程序的判定到所有可能的結果至少轉換一次;在程序中的每一個條件必須產生所有可能的輸出結果至少一次,并且每一個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結果改變。是條件/判定覆蓋的完善和條件組合覆蓋的精簡實現條件/判定覆蓋中未考慮到的各種條件組合情況,又減少了條件組合覆蓋產生的測試用例的數目當每個判定條件比較多的時候,即對于那些每個判定存在3個或3個以上的條件的情況下,修正的條件/判定能夠大幅減少測試用例的數目。74物理路徑覆蓋條件組合覆蓋并不能覆蓋程序中的每一條路徑。物理路徑覆蓋是指,通過設計足夠多的測試用例,使得運行這些測試用例時,程序的每條可能執行的物理路徑都至少經過一次(如果程序中有環路,則要求每條環路至少經過一次)。75TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce測試用例輸入預期輸出被測路徑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語句路徑覆蓋 被測程序的每個語句至少被執行一次。判定路徑覆蓋(分支路徑覆蓋) 程序中的每一個判定至少都獲得一次“真值”和“假值”,或者說使得程序中的每一個分支都至少通過一次。條件路徑覆蓋 判定中的每個條件都至少取到一次“真值”和“假值”。判定/條件路徑覆蓋 判定中的每個條件的所有可能結果至少出現一次,并且每個判定本身的所有可能結果也至少出現一次。條件組合路徑覆蓋 每個判定中條件結果的所有可能組合至少出現一次。修正的條件/判定路徑覆蓋 在一個程序中每一種輸入輸出至少得出現一次,在程序中的每一個條件必須產生所有可能的輸出結果至少一次,并且每一個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結果改變。物理路徑覆蓋 程序的每條可能執行的物理路徑都至少經過一次(如果程序中有環路,則要求每條環路至少經過一次)。77內容提要白盒測試技術靜態白盒法路徑覆蓋法基本路徑法白盒測試的其他方法軟件缺陷分析78基本路徑法即便一個不復雜的程序,特別是有循環存在的情況下,其路徑的組合都可能是一個天文數字!要進行完全測試是不可能的。在不能做到所有路徑覆蓋的前提下,如果某一程序的每一個獨立路徑都被測試過,那么可以認為程序中的每個語句都已經檢驗過了,即達到了語句覆蓋。這種測試方法就是通常所說的基本路徑測試方法。

79基本路徑法基本路徑本質上是從程序入口到出口的一些通路。之所以稱其為基本路徑,原因在于可以通過對基本路徑進行連接或者重復操作得到程序中的其它路徑。程序中的循環體只執行零次和一次,就成為基本路徑測試。設計出的測試用例要保證在測試中程序的每一條可執行語句至少執行一次。基本路徑法是在程序控制流圖的基礎上,通過分析控制結構的環路復雜性,導出基本可執行路徑集合,從而設計測試用例的方法。

80基本路徑法基本路徑測試方法是在控制流圖的基礎上,通過分析控制結構的環路復雜度,導出執行路徑的基本集,再從該基本集設計測試用例。基本路徑測試方法包括以下4個步驟: (1)畫出程序的控制流圖。 (2)計算程序的環路復雜度,導出程序基本路徑集中的獨立路徑條數,這是確定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界。 (3)導出基本路徑集,確定程序的獨立路徑。 (4)根據(3)中的獨立路徑,設計測試用例的輸入數據和預期輸出。81示例所示程序流程圖描述了最多輸入50個學生成績(以–1作為輸入結束標志),計算其中有效的學生分數的個數、總分數和平均值。其中,score存放學生成績的值,n2存放輸入的學生成績個數,n1存放輸入成績中有效成績的個數,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導出控制流圖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確定環路復雜性度量方法1 V(G)=6(個區域)方法2

V(G)=E–N+2=16–12+2=6其中E為流圖中的邊數,N為結點數;方法3V(G)=P+1=5+1=6其中P為判

溫馨提示

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

評論

0/150

提交評論