1. 程式人生 > 其它 >技術分享 | 黑盒測試方法論—因果圖

技術分享 | 黑盒測試方法論—因果圖

因果圖法是一種利用圖解法分析輸入與輸出的各種組合情況,從而設計測試用例的方法,它適合於檢查程式輸入條件的各種組合情況。

因果圖法比較適合輸入條件比較多的情況,可以測試所有的輸入條件的排列組合。因果圖的 “ 因 ” 就是輸入條件,因果圖的 “ 果 ” 就是輸出結果。

因果圖適用場景

等價類劃分法和邊界值分析法都是著重考慮輸入條件,但沒有考慮輸入條件的組合以及制約關係。如果在測試時必須考慮輸入條件的各種組合,那組合的數目可能是天文數字,所以必須考慮採用一種合適的方法對條件組合進行分析,簡化。最終目的是用最少的測試用例覆蓋最全面的場景。

因果圖中的基本符號

因果圖中的基本符號有四種,分別是恆等 (—) 、或 (~) 、與 (V) 、非(^)。

  • 恆等:原因和結果都只能取 2 個值,1 代表條件成立,0 代表條件不成立。恆等相當於原因成立,則結果出現;若原因不成立,則結果也不出現。恆等關係“—”來表示。
  • 非:原因和結果相反。若原因成立,則結果不出現;若原因不成立,則結果出現。非的關係用 “ ~ ” 表示。
  • 或:有多個原因。若幾個原因中有一個成立,則結果出現;若幾個原因都不成立,則結果不出現。或的關係用 “ V ” 來表示。
  • 與:有多個原因。只有幾個原因都成立,結果才或出現;若其中一個原因不成立,則結果不出現。與的關係用 “ ^ ” 來表示。

因果圖中的約束條件

因果圖中除了 4 種基本關係之外還會有一些約束條件。從原因考慮有 4 種約束:互斥、包含、唯一、要求。從結果考慮有 1 種約束:遮蔽。

  • 互斥 E:a、b、c 只能有一個成立,但是可以都不成立。
  • 包含 I:a、b、c 中至少有一個成立。可以多選但不能不選。
  • 唯一 O:a、b、c 有且僅有一個為 1。也就是說多個原因中有且只有一個成立。
  • 要求 R:如果 a 成立,則要求 b 必須也成立,其他的不做約束。一個出現,另一個也一定出現
  • 強制遮蔽 M:對於結果的約束。當 a = 1 時,要求 b 必須為0,其他的不約束。a 不成立時,b 的值不一定。
    唯一和互斥的區別是:唯一必須選一個;互斥可以不選,如果選只能選一個,幾個原因中有且只有一個成立。

因果圖法基本步驟

1.找出所有的原因,原因即輸入條件或輸入條件的等價類。
2.找出所有的結果,結果即輸出條件。
3.明確所有輸入條件之間的制約關係以及組合關係,判斷條件是否可以組合。
4.明確所有輸出條件之間的制約關係以及組合關係,判斷結果是否可以同時輸出。
5.找出不同輸入條件組合會產生哪些輸出結果。
6.將因果圖轉換成判定表或決策樹。
7.判定表或決策表中每一列表示的情況設計測試用例。

例項

需求解釋

交通一卡通自動充值軟體系統。系統只接收 50 或 100 元紙幣,一次只能使用一張紙幣,一次的充值金額只能為 50 或 100 元。
明確輸入的條件為:
1.選擇投幣 50 元
2.選擇投幣 100 元
3.選擇充值 50 元
4.選擇充值 100 元
明確輸出的結果為:

  • a. 完成充值、退卡
  • b. 提示充值成功
  • c. 找零
  • d. 提示錯誤

分析輸入條件


1、不能組合的條件 * 條件 1 和 2 不能同時成立;* 條件 3 和 4 不能同時成立。
2、可以組合的條件 * 條件 1 和 3 可以同時成立;* 條件 1 和 4 可以同時成立;* 條件 2 和 3 可以同時成立;* 條件 2 和 4 可以同時成立;* 條件 1 2 3 4 可以單獨出現。

分析輸出條件


1、不能組合的輸出結果(互斥關係) * 輸入 a 和 d 不能同時出現;* 輸出 b 和 d 不能同時出現。
2、可以組合的輸出結果(要求) * 輸出 a 和 b 一定會同時出現(要求);* 輸出 a、b、c可以同時出現;* 輸出 c、d可以同時出現;* 輸出 d 單獨存在。

分析輸入和輸出的對應關係

條件 1、3 組合 -- 輸出 a、b 組合
投入 50 ,充值 50 -- 完成充值、退卡
用圖表示:

由圖轉化為表格:


條件 1、4 組合 -- 輸出 c、d 組合
投 50,充值 100 -- 退錢、提示錯誤
用圖表示:

由圖轉化為表格:

條件 2、3 組合 -- 輸出 a、b、c 組合
投 100 ,充值 50 -- 充值成功、退卡、找零
用圖表示:

由圖轉化為表格:

條件 2、4 組合 -- 輸出 a、b 組合
投 100、充值100 -- 完成充值、退卡
由圖表示:

由圖轉化為表格:

條件 1 單獨出現 -- 輸出 c、d 組合
只投入 50 -- 充值失敗提示錯誤、退款
由圖表示:

由圖轉化為表格:

條件 2 單獨出現 -- 輸出 c、d 組合
只投入 50 -- 充值失敗提示錯誤、退款
由圖表示:

由圖轉化為表格:

條件 3 單獨出現 -- 輸出 d
只投入 50 -- 充值失敗提示錯誤
由圖表示:

由圖轉化為表格:

條件 4 單獨出現 -- 輸出 d
只投入 50 -- 充值失敗提示錯誤
由圖表示:

由圖轉化為表格:

最後的表格就是一個判定表,再把判定錶轉化為測試用例。

轉化為測試用例

按照判定表,最終轉化出的測試用例如下表所示:


嚴格的按照判定表,轉化出的測試用例,很大程度上避免了在寫測試用例的時候遺漏某些測試點的情況。所以大家不僅要學會,也要會用因果圖法,讓我們的測試工作質量有保障。

⬇️ 點選“下方連結”,提升測試核心競爭力!

>>原文連結
>>點選 領取免費資料~