《因果圖法》-有這篇就夠了


目錄:

  1. 定義(What
  2. 為什么使用因果圖法?(Why
  3. 因果圖中的圖形符號
  4. 因果圖法設計測試用例的步驟How
  5. 優缺點
  6. 難點
  7. 應用場合
  8. 實戰演練

 

1.定義

因果圖(Cuase-effect Graph)是一種描述輸入條件的組合以及每種組合對應的輸出的圖形化工具。在因果圖的基礎上可以設計測試用例。

 

2.為什么使用因果圖法?(Why

等價類划分法和邊界值分析方法都是着重考慮輸入條件,如果程序輸入之間沒有什么聯系,采用等價類划分和邊界值分析是一種比較有效的方法。如果輸入之間有關系,例如,約束關系、組合關系,這種關系用等價類划分和邊界值分析是很難描述的,測試效果難以保障,因此必須考慮使用一種適合於描述多種條件的組合,產生多個相應動作的測試方法,因果圖正是在此背景下提出的。因果圖法着重測試規格說明中的輸入與輸出間的依賴關系。

 

3.因果圖中的圖形符號

1)基本圖形符號

  • 恆等。若原因出現,則結果出現;若原因不出現,則結果不出現。
  • 非。若原因出現,則結果不出現;若原因不出現,則結果出現。
  • 或。若幾個原因中有一個出現,則結果出現;若幾個原因均不出現,則結果不出現。
  • 與。若幾個原因都出現,結果才出現;若幾個原因中有一個不出現,則結果不出現。

為了表示因果圖中的約束條件,可用一些符號在因果圖中加以標識。

 

(2)限制關系圖形符號

限制關系圖形要么在因(輸入條件)之間,要么在果(輸出結果)之間。

 

從原因方面考慮主要有4種約束條件:

  • E(互斥、排他)。a、b兩個原因不會同時出現,最多只有一個出現。
  • I(包含、或)。a、b、c三個原因至少有一個出現。
  • O(唯一)。a、b兩個原因必須有一個出現,且僅有一個出現。
  • R(需求)。a出現時b必定出現。

從結果方面考慮主要有1種約束條件:

  • M(屏蔽)。a出現時,b必定不出現;a不出現時,b則不確定。

 

4.因果圖法設計測試用例的步驟How

  • 分析程序的規格說明書中哪些原因,哪些是結果。所謂原因,是指輸入條件或輸入條件的等價類,而結果是指輸出條件。給每一個原因和結果賦一個標識符。
  • 分析程序規格說明書中的語義,確定原因與原因,原因與結果之間的關系,畫出因果圖。
  • 由於語法環境的限制,一些原因與原因之間,原因與結果之間的組合不能出現。對於這些特殊情況,在因果圖中用一些記號標明約束或限制條件。
  • 將因果圖轉化為判定表。
  • 根據判定表的一列設計測試用例。

當然,若能直接得到判定表,可以直接根據判定表設計測試用例。

 

5.優缺點

優點:

  • 有助於用一個系統的方法選擇出高效的測試用例集;
  • 還有一個額外的好處,通過將規格說明轉換為布爾邏輯網絡,就可以指出規格說明的不完整和不明確之處。

缺點:

盡管因果圖方法確實能產生一組有效的測試用例,但通常它不能生成全部應該被確定的有效測試用例。最好是單獨考慮邊界值分析等方法。

 

6.難點

因果圖法最具難度的部分是將因果圖轉換為判定表。但這個過程是有算法的,即意味着我們可以編寫程序來自動完成這個過程。

 

7.應用場合
在界面中有多個控件,控件之間有組合或限制關系,不同的輸入組合會對應不同的輸出結果,如果想弄清楚不同的輸入組合到底對應哪些輸出結果,可以使用因果圖/判定表法。(因果圖/判定表法比較適合測試組合數量較少的情況,一般少於20)

 

8.實戰演練

有一個單價為五角錢的飲料自動售貨機軟件,對其采用因果圖方法設計測試用例。需求如下:

  • 若售貨機沒有零錢找,則一個顯示 “零錢找完”的紅燈亮,以提示顧客在此情況下不要投入1元錢,否則此紅燈不亮。
  • 顧客投入5角硬幣,然后按下“橙汁”或“啤酒”按鈕,則相應的飲料被送出。
  • 顧客投入1元硬幣並按下“橙汁”或“啤酒”按鈕后,若售貨機沒有零錢找,則顯示“零錢找完”的紅燈亮,1元硬幣被退出,且無飲料送出;若有零錢找,則五角硬幣被退出且飲料被送出。

 

Step1.列出原因

 

 

Step2.列出結果

 

 

Step3.根據需求說明設置中間節點

 

 

Step4.根據列出的原因、結果、中間節點畫出因果圖

23號原因不能同時出現,45號原因不能同時出現。

 

Step5.將因果圖轉換成判定表

在構成的判定表中,原因、中間節點、結果的取值為0表示其代表的狀態不出現;為1表示狀態出現。

中間節點與結果沒有值,代表因違反約束而不會出現的情況,1632列沒有做任何操作,8122428列不符合常理(投幣卻沒有選擇飲料)為無效列,14153031列不符合常理(只選擇飲料卻沒投幣)為無效列。

 

Step6.根據剩下的列設計測試用例

 

這個例子中,事實上在分析問題時進行了一些簡化,主要有以下幾點:

  • 判定表中8,12,24,28列不符合常理(投幣卻沒選飲料),但卻是可能發生的。可以考慮對需求做一下完善:若投幣N秒后仍沒有選擇飲料,售貨機上“請選擇飲料”燈亮。進而根據需求規格說明改進因果圖和判定表。
  • 判定表中14,15,30,31列表示只選擇飲料卻沒投幣。可以對需求做以下完善:只選擇飲料卻沒有投幣時,自動售貨機上“請投幣”的燈亮。進而根據需求規格說明改進因果圖和判定表。
  • 2627表示在自動售貨機沒零錢找的情況下投入五角錢,此時自動售貨機進入有零錢找狀態,由於需求說明沒有考慮這一特殊狀態,故判定表中第2627列的21號結果沒有從1變成0實際上是不正確的。在需求規格說明書中應對此種情況加以考慮,進而改進因果圖和判定表。
  • 67列對應的是自動售貨機在有零錢的情況下找了5角錢,此刻自動售貨機有可能進入無零錢找的狀態,由於需求說明沒有考慮這一特殊狀態,故判定表中第67列的21號結果沒有從1變成0實際上是不一定正確的。在需求規格說明書中應對此種情況加以考慮,進而改進因果圖和判定表。

 

 ---------------------全文完----------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM