技術(shù)分享 | 黑盒測(cè)試方法論—因果圖

因果圖法是一種利用圖解法分析輸入與輸出的各種組合情況,從而設(shè)計(jì)測(cè)試用例的方法,它適合于檢查程序輸入條件的各種組合情況。
因果圖法比較適合輸入條件比較多的情況,可以測(cè)試所有的輸入條件的排列組合。因果圖的 “ 因 ” 就是輸入條件,因果圖的 “ 果 ” 就是輸出結(jié)果。
因果圖適用場(chǎng)景
等價(jià)類劃分法和邊界值分析法都是著重考慮輸入條件,但沒(méi)有考慮輸入條件的組合以及制約關(guān)系。如果在測(cè)試時(shí)必須考慮輸入條件的各種組合,那組合的數(shù)目可能是天文數(shù)字,所以必須考慮采用一種合適的方法對(duì)條件組合進(jìn)行分析,簡(jiǎn)化。最終目的是用最少的測(cè)試用例覆蓋最全面的場(chǎng)景。
因果圖中的基本符號(hào)
因果圖中的基本符號(hào)有四種,分別是恒等 (—) 、非 (~) 、與 (V) 、或(^)。
恒等:原因和結(jié)果都只能取 2 個(gè)值,1 代表?xiàng)l件成立,0 代表?xiàng)l件不成立。恒等相當(dāng)于原因成立,則結(jié)果出現(xiàn);若原因不成立,則結(jié)果也不出現(xiàn)。恒等關(guān)系“—”來(lái)表示。
非:原因和結(jié)果相反。若原因成立,則結(jié)果不出現(xiàn);若原因不成立,則結(jié)果出現(xiàn)。非的關(guān)系用 “ ~ ” 表示。
或:有多個(gè)原因。若幾個(gè)原因中有一個(gè)成立,則結(jié)果出現(xiàn);若幾個(gè)原因都不成立,則結(jié)果不出現(xiàn)?;虻年P(guān)系用 “ ^ ” 來(lái)表示。
與:有多個(gè)原因。只有幾個(gè)原因都成立,結(jié)果才或出現(xiàn);若其中一個(gè)原因不成立,則結(jié)果不出現(xiàn)。與的關(guān)系用 “ V ” 來(lái)表示。
因果圖中的約束條件
因果圖中除了 4 種基本關(guān)系之外還會(huì)有一些約束條件。從原因考慮有 4 種約束:互斥、包含、唯一、要求。從結(jié)果考慮有 1 種約束:屏蔽。
互斥 E:a、b、c 只能有一個(gè)成立,但是可以都不成立。
包含 I:a、b、c 中至少有一個(gè)成立。可以多選但不能不選。
唯一 O:a、b、c 有且僅有一個(gè)為 1。也就是說(shuō)多個(gè)原因中有且只有一個(gè)成立。
要求 R:如果 a 成立,則要求 b 必須也成立,其他的不做約束。一個(gè)出現(xiàn),另一個(gè)也一定出現(xiàn)
強(qiáng)制屏蔽 M:對(duì)于結(jié)果的約束。當(dāng) a = 1 時(shí),要求 b 必須為0,其他的不約束。a 不成立時(shí),b 的值不一定。
唯一和互斥的區(qū)別是:唯一必須選一個(gè);互斥可以不選,如果選只能選一個(gè),幾個(gè)原因中有且只有一個(gè)成立。
因果圖法基本步驟
1.找出所有的原因,原因即輸入條件或輸入條件的等價(jià)類。
2.找出所有的結(jié)果,結(jié)果即輸出條件。
3.明確所有輸入條件之間的制約關(guān)系以及組合關(guān)系,判斷條件是否可以組合。
4.明確所有輸出條件之間的制約關(guān)系以及組合關(guān)系,判斷結(jié)果是否可以同時(shí)輸出。
5.找出不同輸入條件組合會(huì)產(chǎn)生哪些輸出結(jié)果。
6.將因果圖轉(zhuǎn)換成判定表或決策樹(shù)。
7.判定表或決策表中每一列表示的情況設(shè)計(jì)測(cè)試用例。
實(shí)例
需求解釋
交通一卡通自動(dòng)充值軟件系統(tǒng)。系統(tǒng)只接收 50 或 100 元紙幣,一次只能使用一張紙幣,一次的充值金額只能為 50 或 100 元。
明確輸入的條件為:
1.選擇投幣 50 元
2.選擇投幣 100 元
3.選擇充值 50 元
4.選擇充值 100 元
明確輸出的結(jié)果為:
a. 完成充值、退卡
b. 提示充值成功
c. 找零
d. 提示錯(cuò)誤
分析輸入條件

1、不能組合的條件 * 條件 1 和 2 不能同時(shí)成立;* 條件 3 和 4 不能同時(shí)成立。
2、可以組合的條件 * 條件 1 和 3 可以同時(shí)成立;* 條件 1 和 4 可以同時(shí)成立;* 條件 2 和 3 可以同時(shí)成立;* 條件 2 和 4 可以同時(shí)成立;* 條件 1 2 3 4 可以單獨(dú)出現(xiàn)。
分析輸出條件

1、不能組合的輸出結(jié)果(互斥關(guān)系) * 輸入 a 和 d 不能同時(shí)出現(xiàn);* 輸出 b 和 d 不能同時(shí)出現(xiàn)。
2、可以組合的輸出結(jié)果(要求) * 輸出 a 和 b 一定會(huì)同時(shí)出現(xiàn)(要求);* 輸出 a、b、c可以同時(shí)出現(xiàn);* 輸出 c、d可以同時(shí)出現(xiàn);* 輸出 d 單獨(dú)存在。
分析輸入和輸出的對(duì)應(yīng)關(guān)系
條件 1、3 組合 – 輸出 a、b 組合
投入 50 ,充值 50 – 完成充值、退卡
用圖表示:

由圖轉(zhuǎn)化為表格:

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

由圖轉(zhuǎn)化為表格:

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

由圖轉(zhuǎn)化為表格:

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

由圖轉(zhuǎn)化為表格:

條件 1 單獨(dú)出現(xiàn) – 輸出 c、d 組合
只投入 50 – 充值失敗提示錯(cuò)誤、退款
由圖表示:

由圖轉(zhuǎn)化為表格:

條件 2 單獨(dú)出現(xiàn) – 輸出 c、d 組合
只投入 50 – 充值失敗提示錯(cuò)誤、退款
由圖表示:

由圖轉(zhuǎn)化為表格:

條件 3 單獨(dú)出現(xiàn) – 輸出 d
只投入 50 – 充值失敗提示錯(cuò)誤
由圖表示:

由圖轉(zhuǎn)化為表格:

條件 4 單獨(dú)出現(xiàn) – 輸出 d
只投入 50 – 充值失敗提示錯(cuò)誤
由圖表示:

由圖轉(zhuǎn)化為表格:

最后的表格就是一個(gè)判定表,再把判定表轉(zhuǎn)化為測(cè)試用例。
轉(zhuǎn)化為測(cè)試用例
按照判定表,最終轉(zhuǎn)化出的測(cè)試用例如下表所示:

嚴(yán)格的按照判定表,轉(zhuǎn)化出的測(cè)試用例,很大程度上避免了在寫(xiě)測(cè)試用例的時(shí)候遺漏某些測(cè)試點(diǎn)的情況。所以大家不僅要學(xué)會(huì),也要會(huì)用因果圖法,讓我們的測(cè)試工作質(zhì)量有保障。