白盒測試

白盒測試方法:工具

1 程序結構分析:測試

        程序的結構形式是白盒測試的主要依據。程序結構分析包括:       優化

        一、控制流分析:            設計

            •經過控制流圖矩陣來表示程序的控制流程圖。
 
            •分析程序的控制流是爲了使編寫出的程序有好的結構。

        對於程序結構提出如下4點基本要求,這些要求是寫出的程序不該包含:blog

      ①  轉向並不存在的標號;    開發

      ②  沒有用的語句標號;編譯器

      ③  從程序入口進入後沒法達到的語句;it

      ④不能達到停機語句的語句。 

       目前主要是經過編譯器和程序分析工具來實現程序控制流分析。編譯

 

        二、數據流分析:              容器

    •數據流分析是分析程序中未定義變量的使用和不曾使用的變量定義。
 
    •目前經過編譯器或程序分析工具經過數據流分析
 
    •利用數據流分析的結果能夠進行代碼編譯優化。 

 

        三、信息流分析 :

    •目前信息流分析主要用在驗證程序變量間信息的傳輸遵循保密要求。
 
    •信息流分析主要分析輸出值跟輸入值之間的影響關係。
 
    •程序的信息流關係,爲軟件開發和確認提供了十分有益的工具

2 邏輯覆蓋:  

    一、語句覆蓋:

      •結構測試是依據被測程序的邏輯結構設計測試用例,驅動被測程序運行完成的測試。
 
      •結構測試中的一個重要問題是,測試進行到什麼地步就達到要求,能夠結束測試了。這就是說須要給出結構測試的覆蓋準則。
                

         爲方便討論,咱們將結合一程序段加以說明各類邏輯覆蓋則:

      IF (( A > 1) AND ( B = 0 ))THEN

             X = X / A

      IF (( A = 2) OR ( X > 1 ) THEN                  

             X = X + 1

  

       其中「AND」和「OR」是兩個邏輯運算符。右圖給出了它的流程圖。a、b、c、d和e是控制流上的若干程序點。 

       該程序共有4條語句,其中2條條件判斷語句,2條賦值語句。

         語句覆蓋的含意是,在測試時,首先設計若干個測試用例,而後運行被測程序,使程序中的每一個可執行語句至少執行一次。

             對於上述程序段,選用的測試用例是:A=2,B=0,X=3  case1 

        則程序按路徑a c e執行。這樣該程序段的4個語句均獲得執行,從而做到了語句覆蓋。

    二、斷定覆蓋:

           按斷定覆蓋準則進行測試是指,設計若干測試用例,運行被側程序,使得程序中每一個判斷的取真分支和取假分支至少經歷一次,即判斷的真假值均曾被知足。

                斷定覆蓋又稱爲分支覆蓋。

            仍以上述程序段爲例,若選用的兩組測試用例是:   A=2,B=0,X=3;          A=1,B=0,X=1 

           則可分別執行路徑ace和abd,從而使兩個判斷的4個分支c、e和b、d分別獲得覆蓋。

    三、條件覆蓋:

       條件覆蓋是指,設計若干測試用例,執行被測程序之後,要使每一個判斷中每一個條件的可能取值至少知足一次。              

    四、斷定-條件覆蓋:

      斷定-條件覆蓋要求設計足夠的測試用例,使得判斷中每一個條件的全部可能至少出現一次,而且每一個判斷自己的斷定結果也至少出現一次。

    五、路徑覆蓋:

      按路徑覆蓋要求進行測試是指,設計足夠多測試用例,要求覆蓋程序中全部可能的路徑

    六、測試覆蓋準則:

 一、FOSTER的ESTCA覆蓋準則

          Foster 經過大量的實驗肯定了程序中謂詞最容易出錯的部分,得出了一套錯誤敏感測試用例分析ESTCA (Error Sensitive Test Cases Analysis)規則。事實上,規則十分簡單:

    [規則1]  對於A rel B(rel能夠是<, =和>)型的分支謂詞,應適當地選擇A與B的值,使得測試執行到該分支語句時,A<B, A=B和A>B的狀況分別出現一次。

    [規則2]  對於A rel1 C(rel1能夠是>或是<,A是變量,C是常量)型的分支謂詞,當rel1爲<時,應適當地選擇A的值,使:

          A = C - M

        (M是距C最小的容器允許正數,若A和C均爲整型時,M = 1)。一樣,當rel1爲>時,應適當地選擇A,使:

          A = C + M

    [規則3]  對外部輸入變量賦值,使其在每一測試用例中均有不一樣的值與符號,並與同一組測試用例中其它變量的值與符合不一致。

3 程序插裝: 

    •程序插裝方法簡單地說是藉助往被測程序中插入操做來實現測試目的的方法。
 
    •程序插裝技術可以按用戶的要求,獲取程序的各類執行過程當中的信息,成爲測試工做的有效手段。

4 其餘白盒測試方法簡介:

    一、域測試:

      •域測試的「域」是指程序的輸入空間。
      •輸入空間又可分爲不一樣的子空間,每一子空間對應一種不一樣的計算。
      •子空間的劃分是由程序中分支語句中的謂詞決定的。
      •域測試正是在分析輸入域的基礎上,選擇適當的測試點之後進行測試的。
      •域測試有兩個致命的弱點,一是爲進行域測試對程序提出的限制過多,二是當程序存在不少路徑時,所需的測試點也就不少。
 
    二、符號測試:
      •符號測試的基本思想是容許程序的輸入不只僅是具體的數值數據,並且包括符號值,這一方法也是所以而得名。
 
      •普通測試執行的是算術運算,符號測試則是執行代數運算。所以符號測試能夠認爲是普通測試的一個天然的擴充。
 
      •從符號測試方法使用來看,問題的關鍵在於開發出比傳統的編譯器功能更強,可以處理符號運算的編譯器和解釋器。
 
      •目前符號測試存在一些未獲得圓滿解決的問題,分別是

        一、分支問題

        二、二義性問題

        三、大程序問題

        三、Z路徑覆蓋

        四、程序變異

     3.Z路徑覆蓋:

      •完成路徑測試的理想狀況是作到路徑覆蓋,但路徑太多。所以對循環機制進行簡化,從而極大地減小路徑的數量,使得覆蓋這些有限的路徑成爲可能。咱們稱簡化循環意義下的路徑覆蓋爲Z路徑覆蓋。
 
      •對於程序中的全部路徑能夠用路徑樹來表示
 
      •設法遍歷了全部的葉結點,那就獲得了全部的路徑,生成每一個路徑的測試用例,就能夠作到Z路徑覆蓋測試。

    4.程序變異:

      •程序變異方法與前面提到的結構測試和功能測試都不同,它是一種錯誤驅動測試。
 
      •錯誤驅動測試方法,是指該方法是針對某類特定程序錯誤的。
 
      •錯誤驅動測試主要有兩種,即程序強變異和程序弱變異。
相關文章
相關標籤/搜索