白盒測試分類

白盒測試概述

        白盒測試是對軟件的過程性細節做細緻的檢查,把測試對象看做一個打開的盒子,允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。  
        白盒測試只測試軟件產品的內部結構和處理過程,而不測試軟件產品的功能,用於糾正軟件系統在描述、表示和規格上的錯誤,是進一步測試的前提。白盒測試分靜態和動態兩種:靜態白盒測試是在不執行的條件下有條理地仔細審查軟件設計、體系結構和代碼,從而找出軟件缺陷的過程,有時也稱爲結構分析。動態白盒測試也稱結構化測試,通過查看並使用代碼的內部結構,設計和執行測試
 

邏輯覆蓋測試

 

1.語句覆蓋

概述:根據每個可執行語句是否被執行,即每行代碼是否都被執行了並且被測試了。
 
含義:選擇足夠多的測試數據使被測程序中每條語句至少執行一次。
 
要求:要達到100%聲明覆蓋面,每一條語句都要被測試覆蓋。
 
優點:它可以直接應用於目標代碼,並且不需要處理源代碼。
 
缺陷:它對一-些控制結構是不敏感的,對程序執行邏輯的覆蓋很低,往往發現不了判斷邏輯中邏輯運算符出現的錯誤。
 
 

2.分支覆蓋(判定覆蓋)

概述:報告在控制結構中是否測試了布爾表達式取值分別爲真和假的情況。分支覆蓋保證只要程序能跳轉,就能跳轉到所有可能的目的語句。
 
含義:設計足夠的測試用例,使得每個判定至少都獲得一次“真”和“假,或使得每一個取“真”分支和取“假”分支至少經歷一次。。
 
優點:具有語句覆蓋的簡單性且沒有語句覆蓋所存在的問題。
 
缺陷:忽略了在布爾表達式內的分支,當程序中分支的判定由幾個條件組合構成時,它未必能發現每個條件的錯誤。
 
 

3.條件覆蓋

概述:報告每個布爾型子表達式的結果是真是假,是否都被執行和測試了。子表達式是用邏輯與運算符和邏輯或運算符分離開的。條件覆蓋檢查每個判定點(例如真/假的判定)是否被執行和測試了。
 
含義:構建一組測試用例,使得每一個判定語句中每個子邏輯條件的可能值至少滿足一次。
 
 

4.修正條件判定覆蓋

 
        修正條件判定覆蓋是判定中每個條件的所有可能結果至少出現一次,每個判定本身的所有可能結果也至少出現一次,每個入口點和出口點至少要喚醒一次,並且每個條件都顯示能單獨影響判定結果。  
        MC/DC定義的第一部分是標準的語句覆蓋,第一和第二部分是條件判定覆蓋準則,第四部分是MC/DC特有的判定條件。定義中最關鍵的字是“獨立影響”,也就說明每一次每一個判定條件發生改變,必然會導致一次判定結果的改變,消除判定中的某些條件會被其它的條件所掩蓋的問題,從而使得測試更加完備。  
        MC/DC的目的就是消除測試過程中的各個單獨條件之間的相互影響並且保證每個單獨條件能夠分別影響判定結果的正確性。
        MC/DC繼承了語句覆蓋準則、條件判定覆蓋準則、多重條件覆蓋等判定條件,同時加入了新的判定條件。在條件判定覆蓋準則中,不能夠保證在模型中所有的條件都被覆蓋,因爲一個判定中的某些條件會被其它的一些條件所掩蓋。如:任何一個條件與“1”進行“或”運算時,這個條件都不會起到任何的作用;同樣,任何一個條件與“0”進行“與”運算時,這個條件都不會起到任何的作用。
 
優點:
(1) 繼承了多重條件覆蓋的優點;  
(2) 線性地增加了測試用例的數量;  
(3) 對操作數及非等式條件變化反應敏感;  
(4) 具有更高的目標碼覆蓋率。  
        在許多軟件系統中,尤其是以嵌入式和實時性爲特徵的航空機載軟件中,MC/DC得到了廣泛的應用。如:MC/DC已經被應用於RTCA/DO-178B標準當中,這個標準主要用於美國測試飛行軟件的安全性審查。
 

5.分支/條件覆蓋(條件組合覆蓋)

 
基本思想:設計測試用例使得判斷中每個條件的所有可能至少出現一次,並且每個判斷本身的判定結果也至少出現一次,與條件覆蓋的差別是條件組合覆蓋不是簡單地要求每個條件都出現“真”與“假”兩種結果,而是要求這些結果的所有可能組合都至少出現一次。  
        條件組合覆蓋是一種相當強的覆蓋準則,可以有效地檢查各種可能的條件取值的組合是否正確。它不但可覆蓋所有條件的可能取值的組合,還可覆蓋所有判斷的可取分支,但仍可能會遺漏掉某些路徑,測試還不完全。
 
概述:條件覆蓋和分支覆蓋的一個混合。
 
歸納:有兩者的簡單性但是沒有兩者的缺點。分支/條件覆蓋的含義是設計足夠的測試用例,使得判定中每個布爾型子表達式條件的所有可能(真/假)至少出現一次,並且每個判定本身的判定結果(真/假)也至少出現一次。
 
 
 
缺陷:例如,判定條件a&& (b | c)中的第一個運算符“&&”錯寫成運算符“|I”或第二個運算符“||” 錯寫成運算符“&&”時,雖然使用表一中的2組測試用例可以使得覆蓋率爲100%,但它們無法發現這類錯誤。
 
 

6.路徑覆蓋

 
概述:路徑覆蓋報告是否每個函數的每一條 可能的路徑都被走過。它檢查代碼中給定部分每條可能的路徑是否都被執行了並且被測試了。一條路徑是從函數的入口到出口分支裏的一一個唯一序列。
 
優點:進行非常徹底的測試,比判定覆蓋強。
 
缺陷:路徑是以分支的數增加而指數級增加許多路徑由於數據相關不可能被執行
 

7.邏輯覆蓋總結

 
        邏輯覆蓋法中語句覆蓋、判定覆蓋、條件覆蓋、條件判定覆蓋、條件組合覆蓋和路徑覆蓋具有相互包含的關係,其中語句覆蓋最弱,從下至上依次增強,路徑覆蓋的效果最好。
 
        根據測試用例設計的需要,邏輯覆蓋法將不同的設計方法有效地結合起來,設計出覆蓋率最大、最有效的測試用例。
 
 
 

程序控制流圖

1.定義:

        (簡稱流圖)是對程序流程圖進行簡化後得到的,它可以更加突出的表示程序控制流的結構。
 
        基本路徑測試使用程序流程圖來描述程序的結構性。程序流程圖是一個有向圖,又稱爲框圖,採用不同圖形符號標明條件或者處理等。由於這些符號在路徑分析時不重要,爲了突出控制流結構,將程序流程圖進行簡化,便產生控制流圖。

 

2.控制流圖中包括兩種圖形符號:

  • 節點:以標有編號的圓圈表示,用於表示程序流程圖中矩形框、菱形框的功能,是一個或多個無分支的語句或源程序語句。
  • 控制流線或弧:以箭頭表示,與程序流程圖中的流線功能一致,表示控制的順序。
 

3.常見的控制流圖

  控制流圖是用於描述程序控制流的一種圖示方法。控制流圖只有節點和控制流線(或弧)兩種圖形符號

 
 
判定節點(謂詞節點)
由判定節點發出的邊必須終止於某一個節點,
由邊和節點所限定的範圍被稱爲區域,
當對區域計數時,圖形外的區域也應記爲一個區域。
 
 

4.流程圖轉換爲流圖

 
①如果判斷中的條件表達式是由一個或多個邏輯運算符(OR, AND, NAND, NOR連接的複合條件表達式,則需要改爲一系列只有單條件的嵌套的判斷。(A和B叫做判斷節點)
 
 
②一個節點可以包含1個或多個連續的無分支語句,節點不允許含有複合節點
 

 
 

 
 
程序流程圖簡化成控制流圖時,需注意以下情況:
  (1) 在選擇或多分支結構中,分支的匯聚處應有一個匯聚結點。
  (2) 邊和結點圈定的範圍稱爲區域。需要注意,圖形外的區域也應記爲一個區域。
 
 
        爲了評估程序的控制結構,控制流圖矩陣項加入連接權值,連接權值爲控制流提供瞭如下附加信息:
  (1) 執行連接(邊)的概率;
  (2) 穿越連接的處理時間;
  (3) 穿越連接時所需的內存;
  (4) 穿越連接時所需的資源。
 
        控制流圖表示成矩陣的形式,稱爲控制流圖矩陣。一個圖形矩陣是一個方陣,其行列數目爲控制流圖中的結點數,行列依次對應到一個被標識的結點,矩陣元素對應到結點間的連接。
        控制流圖的結點用數字標識,邊用字母標識,第i結點到第j結點有x邊相連接,則對應的圖形矩陣中第i行與第j列有一個非空的元素x。
 
  最簡單情況是連接權值爲1(存在連接)或0(不存在連接)。如圖5.5所示,將圖5.4(c)的控制流圖矩陣轉化爲連接矩陣。字母替換爲1,表示存在邊(爲表述清晰,0沒有畫在圖中)。
 
 
圖5.4  程序流程圖轉化爲控制流圖示意圖
 
 
圖5.5  控制流圖矩陣轉化爲連接矩陣
 
 

路徑分析與測試

 

1.基礎路徑:

        基本路徑是指所有程序路徑作爲一個集合,在這些路徑當中必然存在一個最小路徑的集合。基本路徑測試通過確定測試用例是否完全覆蓋基本路徑而進行測試。
   基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造環路複雜性,導出基本可執行路徑集合,設計測試用例。
 

2.基本路徑的測試方法:

基本路徑測試法主要步驟如下所示。
        步驟一:以詳細設計或源代碼作爲基礎,導出程序的控制流圖。
        步驟二:計算控制流圖G的圈複雜度V(G)。  圈複雜度爲程序邏輯複雜性提供定量的測度,該度量用於計算程序的基本獨立路徑數目,確保所有語句至少執行一次的測試數量的上界。
        步驟三:確定獨立路徑的集合,即確定線性無關的路徑的基本集。獨立路徑是指至少引入程序的一個新處理語句集合或一個新條件的路徑,即獨立路徑必須包含一條在定義之前不曾使用的邊。
        步驟四:測試用例生成,確保基本路徑集中每條路徑的執行。
 
圖5.6  控制流圖G

3.計算圈複雜度的方法:

 
方法一:控制流圖G的圈複雜度V(G)的定義爲V(G)=E-N+2,E是圖中邊的數量,N是圖中結點的數量。
方法二:將圈複雜度定義爲控制流圖中的區域數。
方法三:V(G)=P+1,P是控制流圖G中判定(謂詞)結點的數量。
方法四:將控制流圖轉化爲連接矩陣,根據圖5.5原理,可得圖5.6中的判定結點爲4,故圈複雜度同樣爲5。
 

4.獨立路徑表示

獨立路徑:所謂獨立路徑,是指至少包含一條新邊的路徑,也就是包含一些前面的路徑未包含的語句。
 
路徑1 : 1-11
路徑2 : 1-2-3-4-5-10-1-11
路徑3 : 1-2-3-6-8-9-10-1-11
路徑4 : 1-2-3-6-7-9-10-1-11
 
 
 

5.Z路徑覆蓋

        爲解決實際操作中路徑覆蓋難以實現問題,必須捨棄一些次要因素,簡化循環結構,從而極大地減少路徑的數量,使得覆蓋這些有限的路徑成爲可能。採用簡化循環方法的路徑覆蓋就是Z路徑覆蓋。
 
        所謂簡化循環就是減少循環的次數,不考慮循環體的形式和複雜度如何,也不考慮循環體實際上需要執行多少次,只考慮通過循環體零次和一次這兩種情況。零次循環是指跳過循環體,從循環體的入口直接到循環體的出口。通過一次循環體是指檢查循環初始值。根據簡化循環的思路,循環要麼執行,要麼跳過,這和判定分支的效果是一樣的可見,簡化循環就是將循還結構編程選擇結構。
 

 

6.獨立路徑測試及測試用例生成

 
獨立路徑測試法主要步驟如下所示。
第一步:以詳細設計或源代碼作爲基礎,導出程序的控制流圖。
程序控制流圖  
控制流圖
 
 
 
第二步:計算環路複雜度V(G)
  圈複雜度爲程序邏輯複雜性提供定量的測度,該度量用於計算程序的基本獨立路徑數目,確保所有語句至少執行一次的測試數量的上界。
計算如下:
流圖中有四個區城;
V(G)=10條邊-8結點+2=4;
V(G)=3個判定結點+1=4.
 
第三步:導出測試用例,確定獨立路徑的集合,即確定線性無關的路徑的基本集。
        根據上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。V(G)值 正好等於該程序的獨立路徑的條數。)
  獨立路徑是指至少引入程序的一個新處理語句集合或一個新條件的路徑,即獨立路徑必須包含一條在定義之前不曾使用的邊。
路徑1: 4-14
路徑2: 4-6-7-14
路徑3: 4-6-8-10-13-4-14
路徑4: 4-6-8-11-13-4-14
根據上面的獨立路徑,去設計輸入數據使程序分別執行到上面四條路徑
 
第四步:準備測試用例,確保基本路徑集中每條路徑的執行。
爲了確保基本路徑集中的每一條路徑的執行,根據判斷結點給出的條件,選擇適當的數據以保證某一條路徑可以被測試到,滿足上面例子基本路徑集的測試用例是:
 
void Sort(int iRecordNum,int iType){
    int x=0;
    int y=0;
    while(iRecordNum-- >0)
{
    if( 0 == iType){
        x=y+2;
        break;
        }else{
            if(1 == iType)
                x=y+10;
            else
                x=y+20;
        }
}

 

 
路徑1:4-14
        輸入數據:iRecordNum=0,或者取iRecordNum<0的某個取值
        預期結果:x=0,y=0;
 
路徑2: 4-6-7-14
        輸入數據: iRecordNum= 1, iType= 0
        預期結果: x=2
 
路徑3: 4-6-8-10-13-4-14
        輸入數據: iRecordNum= I, iType= 1
        預期結果: x= 10
 
路徑4: 4-6-8-11-13-4-14
        輸入數據: iRecordNum= 1, iType = 2
        預期結果: x= 20
 
 

 

7.獨立獨立路徑測試及測試用例生成步驟總結:

流程圖一控制流圖
計算圈複雜度
找到四條基本路徑
根據基本路徑找到輸入輸出
 
 
 

數據流測試分析

控制流一邏輯
數據流一定義和使用
 
定義使用異常缺陷
變量被定義,但從來沒有使用(引用)
所使用的變量沒有被定義
變量在使用之前被定義兩次
 
數據流測試指關注變量接收值(點)和使用(或引用)這些值(點)的路徑,是結構性測試方法的一種。
 

1.定義節點def:

會發現,當且僅當變量v的值是用對應節點,用對應的語句片段所定義時,節點N是變量V的定義節點,執行時與變量相關的存儲單元內內容會改變,其實這就是我們所說的賦值。輸入語句,賦值語句,循環控制語句和過程調用

 

2.使用節點use:

輸出語句,賦值語句,條件語句,循環控制語句和過程調用。

 

3.謂詞使用P-use/計算使用C-use

當且僅當語句原因是謂詞語句時,使用節點use是一個謂詞使用,否側use就是一個所謂的計算使用。
謂詞使用對應謂詞使用的節點的出度>=2
計算使用對應計算使用的節點的出度<=1
 

3.使用路徑use-path

使用路徑是指PATH中使得對某個節點屬於V的節點中,存在和定義使用節點DEF和USE之間使得M和N是該路徑的所謂最終節點或者最初節點。(定義節點可出現多次
 

4.清除路徑dc-path

是具有最初和最終節點,DEF和USE節點、PATH路徑使得路徑中其他的節點都是定義節點(定義節點出現 一次
 
使用路徑和清除路徑描述了從值被定義的點到值被使用的點的源數據的數據流。
 
例如:
變量的定義和使用
1    a=5; //定義a
2     While(C1) {
3    if (C2){
4    b=a*a;//使用a
5    a=a-1;//定義且使用a
6    }
7    print(a); } //使用a  
  

 
Du-path      dc-path
1234                y
1237                y
12345              y
1234567          n
567                  y
 

5.測試用例的產生的步驟:

●選擇定義/使用路徑測試覆蓋指標
●由測試覆蓋指標構造定義/使用路徑
●選擇一條路徑,使得其至少包含一條“定義/使用路徑”
●由路徑產生測試用例
 

6.定義-使用路徑測試覆蓋指標

數據流指標假設所有程序變量都標識了定義節點和使用節 點,且關於各變量都標識了定義-使用路徑
T:擁有變量集合V的程序P的程序圖G(P)中的一個路徑集合
 

7.全定義準則

集合T滿足程序b的全定義準則,當且僅當所有變量v∈V,T包含從v的每個定義節點到v的一個使用的定義清除路徑。
 

8.全使用準則

集合T滿足程序P的全使用準則,當且僅當所有變量v∈V,T包含從v的每個定義節點到v的所有使用以及到所有USE(v,n)後續節點的定義清除路徑。
 

9.全謂詞使用/部分計算使用準則

集合T滿足一樣的規則,如果這些謂詞使用沒有一個謂詞使用的時候,我們就認爲需要有一個計算使用作爲定義點
 

10.全計算使用/部分謂詞使用準則

假設如果沒有計算使用,那麼我們會發現所有的定義清除節點就會導致一個謂詞使用。
 

11.全定義-使用路徑準則

它包含從v到V的一個所有使用以及到所有USE VIN的後續節點所有路徑
 

 
定義/使用測試提供一種檢查缺陷可能發生點的嚴格和系統化的方法。
 
 

變異測試

 
儘可能縮小錯誤押索的範圍
  • 便於集中目標於對軟件危害較大的錯誤
  • 暫時忽略危害較小的錯誤以此取得較高的測試效率,降低測試成本
 

1.變異測試(Mutation Testing):

(有時也叫做“變異分析”)是一種在細節方面改進程序源代碼的軟件測試方法。這些所謂的變異,是基於良好定義的變異操作,這些操作或者是模擬典型應用錯誤(例如:使用錯誤的操作符或者變量名字),或者是強制產生有效地測試(例如使得每個表達式都等於0)。目的是幫助測試者發現有效地測試,或者定位測試數據的弱點,或者是在執行中很少(或從不)使用的代碼的弱點。
 
 

2.分類

(1)程序強變異測試(程序變異)
(2)程序弱變異測試
 

3.基本思想

P        e1,e2 ,···, en
P'       P1,P2 ,···, Pn
 
P i稱爲P的變異因子測試數據Ci
 
C={C1,C2,····,Cn}
如果對每一個Ci,P都是正確的,而Pi都是錯誤的,這說明P的正確性較高。
如果對某個Ci, P是錯誤的,而Pi是正確的,這說明P存在錯誤,而錯誤就是ei。
 

4.缺點

  • 需要大量的計算機資源來完成測試充分性分析
  • 對於一箇中等規模的軟件,所需的存儲空間巨大
  • 運行大量變異因子導致時間上巨大的開銷
  • 實際使用中,對故障類型難以把握
  • 變異測試侷限性很大
 
 

5.強變異

    給定一個程序P和一個測試數據集T,通過變異算子爲P產生一組變異體Mi ( 合乎語法的變更),對P和M都使用T進行測試運行,如果某Mi在某個測試輸入t.上與P產生不同的結果,則該Mi 被殺死;若某Mi在所有的測試數據集上都與P產生相同的結果,則稱其爲活的變異體。接下來對活的變異體進行分析,檢查其是否等價於P;對不等價於P的變異體M進行進一步的測試, 直到充分性度量達到滿意的程度。
 
假設程序P已使用測試T中的測試用例測試通過,而且沒有錯誤。變異是一種輕微改變程序的操作。
C(n)=C(n)+1
n=1,2,3,·····,n;

 
 
 
練習

一、選擇題
  1. 以下不屬於白盒測試技術的是(   D   )。
  A. 邏輯覆蓋          B. 基本路徑測試           C. 循環覆蓋測試         D. 等價類劃分
 
  2. 以下不屬於邏輯覆蓋的是(    D    )。
  A. 語句覆蓋            B. 判定覆蓋             C. 條件覆蓋               D. 基本路徑
 
  3.  (   A   )方法根據輸出對輸入的依賴關係設計測試用例。
  A. 路徑測試           B. 等價類                C. 因果圖               D. 歸納測試
 
    4.  McCabe建議模塊規模應滿足V(G)≤(    A    )。
  A.  20            B.  10                  C.  30            D.  40
 
      5.下列關於覆蓋邏輯,說法錯誤的是(   B   )
        A.滿足條件覆 蓋並不一-定 滿足判斷覆蓋
        B.滿足條件組合覆蓋的測試一定滿足判斷覆蓋、條件覆蓋和判定/條件覆蓋
        C.滿足路徑覆蓋也- -定滿足條件組合覆蓋
        D.滿足判斷1條件覆蓋同時滿足判定覆蓋和條件覆蓋
 
    6.使用白盒測試方法時,確定測試數據應根據(   A   )和指定的覆蓋標準
        A.程序的內部邏輯
        B. 程序的複雜程度
        C.使用說明書
        D.程序的功能
 
     7.白盒測試方法的優點是(   C   )
        A.可測試軟件的特定功能
        B. 能站在用戶立場上測試
        C.可按軟件內部結構測試
        D.可發現實現功能需求中的錯誤
 
 
  二、簡答題
  1. 白盒測試是什麼?白盒測試和黑盒測試的區別體現在哪些方面?
答:
        白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構 測試程序,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進 行,檢驗程序中的每條通路是否都能按預定要求正確工作。 這一方法是把測試 對象看作一個打開的盒子, 測試人員依據程序內部邏輯結構相關信息, 設計或選 擇測試用例, 對程序所有邏輯路徑進行測試, 通過在不同點檢查程序的狀態, 確 定實際的狀態是否與預期的狀態一致。
        黑盒測試也稱功能測試或數據驅動測試, 它是在已知產品所應具有的 功能, 通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盒子, 在完全不考慮程序內部結構和內部特性的情況下, 測試者在 程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使 用,程序是否能適當地接收輸入數鋸而產生正確的輸出信息, 並且保持外部信息 (如數據庫或文件)的完整性。黑盒測試方法主要有等價類劃分、邊值分析、因 —果圖、錯誤推測等,主要用於軟件確認測試。 “黑盒”法着眼於程序外部結 構、不考慮內部邏輯結構、針對軟件界面和軟件功能進行測試。 “黑盒”法是窮 舉輸入測試, 只有把所有可能的輸入都作爲測試情況使用, 才能以這種方法查出 程序中所有的錯誤。 實際上測試情況有無窮多個, 人們不僅要測試所有合法的輸 入,而且還要對那些不合法但是可能的輸入進行測試。
        白盒測試也稱結構測試或邏輯驅動測試, 它是知道產品內部工作過程, 可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行, 按照程序 內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作, 而不顧它的功能, 白盒測試的主要方法有邏輯驅動、 基路測試等, 主要用於軟件 驗證。
白盒測試技術 (White Box Testing) : 深入到代碼一級的測試, 使用這種技術 發現問題最早,效果也是最好的。 該技術主要的特徵是測試對象進入了代碼內部, 根據開發人員對代碼和對程序的熟悉程度,對有需要的部分進行在軟件編碼階 段,開發人員根據自己對代碼的理解和接觸所進行的軟件測試叫做白盒測試。 這 一階段測試以軟件開發人員爲主,在 JAVA 平臺使用 Xunit 系列工具進行測 試, Xunit 測試工具是類一級的測試工具對每一個類和該類的方法進行測試
 
 
  2. 爲什麼說語句覆蓋是最弱的邏輯覆蓋?
答:
        語句覆蓋對一些控制結構不敏感,不能發現判斷中邏輯運算符的錯 誤,覆蓋率低。
 
  3. 條件覆蓋爲什麼不一定包含判定覆蓋?
答:
        條件覆蓋比判定覆蓋增加了對符合條件情況的測試,增加了測試路 徑,但條件覆蓋只能保證每個條件至少有一次爲真,爲不考慮所有的判定結果。
 
  4.採用白盒法進行測試時,測試用例覆蓋路徑的種類有哪幾種? 它們相互之間是什麼關係?
答:
覆蓋路徑:
1、 語句覆蓋
 
2 、 判定覆蓋
 
3 、 條件覆蓋
 
4 、 判定、條件覆蓋
 
5 、 條件組合覆蓋
他們之間的關係:
1. 語句覆蓋是很不充分的一種標準。
 
2. 判斷覆蓋比語句覆蓋更嚴格, 因爲如果每個根治執行過了, 則每個 語句也就執行過了。
 
3. 條件覆蓋比判斷覆蓋強因爲他使一個判定中的每一個條件都去到兩個不同的結果,而判定覆蓋則不保證這一點。
 
4. 滿足條件組合覆蓋的測試用例、 是一定滿足判定覆蓋, 條件覆蓋和 判定、條件覆蓋的。
 
 
  5. 請把下面的程序流程圖轉換成控制流圖。
 

答:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章