目錄:
- 定義(What)
- 為什么使用因果圖法?(Why)
- 因果圖中的圖形符號
- 因果圖法設計測試用例的步驟(How)
- 優缺點
- 難點
- 應用場合
- 實戰演練
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.根據列出的原因、結果、中間節點畫出因果圖
2、3號原因不能同時出現,4、5號原因不能同時出現。
Step5.將因果圖轉換成判定表
在構成的判定表中,原因、中間節點、結果的取值為0表示其代表的狀態不出現;為1表示狀態出現。
中間節點與結果沒有值,代表因違反約束而不會出現的情況,16、32列沒有做任何操作,8、12、24、28列不符合常理(投幣卻沒有選擇飲料)為無效列,14、15、30、31列不符合常理(只選擇飲料卻沒投幣)為無效列。
Step6.根據剩下的列設計測試用例
這個例子中,事實上在分析問題時進行了一些簡化,主要有以下幾點:
- 判定表中8,12,24,28列不符合常理(投幣卻沒選飲料),但卻是可能發生的。可以考慮對需求做一下完善:若投幣N秒后仍沒有選擇飲料,售貨機上“請選擇飲料”燈亮。進而根據需求規格說明改進因果圖和判定表。
- 判定表中14,15,30,31列表示只選擇飲料卻沒投幣。可以對需求做以下完善:只選擇飲料卻沒有投幣時,自動售貨機上“請投幣”的燈亮。進而根據需求規格說明改進因果圖和判定表。
- 26、27表示在自動售貨機沒零錢找的情況下投入五角錢,此時自動售貨機進入有零錢找狀態,由於需求說明沒有考慮這一特殊狀態,故判定表中第26、27列的21號結果沒有從1變成0實際上是不正確的。在需求規格說明書中應對此種情況加以考慮,進而改進因果圖和判定表。
- 6、7列對應的是自動售貨機在有零錢的情況下找了5角錢,此刻自動售貨機有可能進入無零錢找的狀態,由於需求說明沒有考慮這一特殊狀態,故判定表中第6、7列的21號結果沒有從1變成0實際上是不一定正確的。在需求規格說明書中應對此種情況加以考慮,進而改進因果圖和判定表。
---------------------全文完----------------------