1 引言
上篇講了等價類劃分和邊界值分析法,而這兩種方法只考慮了單個的輸入條件,並未考慮輸入條件的各種組合、輸入條件之間的相互制約關係的場景。基於此短板,因果圖法和判定表法應運而生。
2 因果圖法
2.1 概念及原理
2.1.1 定義
一種描述輸入條件的組合以及每種組合對應的輸出的圖形化工具,它適合於檢查程式輸入條件的各種組合情況。
2.1.2 方法的原則
畫因果圖時,原因在左,結果在右,由上而下排列,並根據功能說明書中規定的原因和結果之間的關係,用下述基本符號連線起來,在因果圖中還可以引入一些中間節點。
1.因果圖的基本圖形符
2.因果圖中的約束條件
從原因方面考慮主要有4種約束條件:
- E(互斥、排他):a、b兩個原因不會同時出現,最多隻有一個出現
- I(包含、或):a、b、c三個原因至少有一個出現
- O(唯一):a、b兩個原因必須有一個出現,且僅有一個出現
- R(需求):a出現時b必定出現
從結果方面考慮主要有1種約束條件:
- M(遮蔽):a出現時,b必定不出現;a不出現時,b則不確定
2.2 方法步驟
- 找出所有的原因,原因即輸入條件或輸入條件的等價類;
- 找出所有的結果,結果即輸出條件;
- 明確所有輸入條件之間的制約關係以及組合關係;哪些條件不能組合到一起,哪些條件可以組合到一起
- 明確所有輸出條件之間的制約關係以及組合關係;哪些輸出結果不能同時輸出,哪些輸出結果可以同時輸出
- 找出什麼樣的輸入條件組合會產生哪種輸出結果;
- 畫出因果圖;
- 把因果圖轉換成判定表/決策表;
- 為判定表中的每一列表示的情況設計測試用例(每一列都是一條測試用例)。
2.3 舉個栗子
場景:基礎坐席認責or申訴
1.先列出輸入條件和輸出條件
輸入條件:
- 1——認責or
- 2——申訴
- 3——個人責任
- 4——組織責任
- 5——三方責任
- 6——責任人erp
- 7-申訴原因
- 8-描述
輸出條件:
- a——認責個人責任
- b——認責組織責任
- c——認責三方責任
- d——申訴
2.畫出因果圖
3.將因果圖轉換為判定表,並將判定表的每一列拿出來就可作為一個測試用例
- 選擇「認責」、選擇「個人責任」,填寫:責任人erp、描述-》認責個人責任
- 選擇「認責」、選擇「組織責任」,填寫:描述-》認責組織責任
- 選擇「認責」、選擇「三方責任」,填寫:責任人erp、三方名稱、描述-》認責三方責任
- 選擇「申訴」,填寫:申訴原因、描述-》申訴
3 判定表法
3.1 概念及原理
3.1.1 定義
判定表是分析和表達多邏輯條件下執行不同操作的情況的工具,是指一個表格,用於顯示條件和條件導致動作的集合。
3.1.2 方法的原則
主要包含五部分:
- 條件樁:問題的所有條件
- 條件項:所有條件的取值組合
- 動作樁:所有可能的操作
- 動作項:在每一種條件取值組合的情況下,執行動作樁中的哪些動作
- 規則:一種條件取值組合與其對應的動作組合一種條件取值組合與其對應的動作組合(即判定表中貫穿條件項和動作項的一列)構成判定表的一個規則
3.2 方法步驟
- 列出所有的條件樁和動作樁(輸入和輸出);
- 填入條件項(輸入項);
- 填入動作項,得到初始判定表;
- 簡化判定表(合併相似規則(相同動作))。
3.3 舉個栗子
場景:基礎坐席認責or申訴
1.列判定表
2.對判定表進行簡化
- 選擇「認責」、選擇「個人責任」,填寫:責任人erp、描述-》認責個人責任
- 選擇「認責」、選擇「組織責任」,填寫:描述-》認責組織責任
- 選擇「認責」、選擇「三方責任」,填寫:責任人erp、三方名稱、描述-》認責三方責任
- 選擇「申訴」,填寫:申訴原因、描述-》申訴
4 總結
但因果圖和判定表法在變數值很多、排列組合數量極大的場景下,會生成非常龐大且冗餘的測試用例,此時我們很難對所有組合場景進行全量測試用例覆蓋,這個時候就是正交試驗法大展神威的時候了,讓我們一起來學習吧~
作者:京東物流 王鵬
來源:京東雲開發者社群 自猿其說Tech 轉載請註明來源