天天看點

測試思想-測試設計 測試用例設計之因果圖方法

測試用例設計之因果圖方法

by:授客 QQ:1033553122

一.方法簡介

1.定義

是一種利用圖解法分析輸入的各種組合情況,進而設計測試用例的方法,它适合于檢查程式輸入條件的各種組合情況。

2.因果圖法産生的背景:

等價類劃分法和邊界值分析方法都是着重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的互相制約關系。這樣雖然各種輸入條件可能出錯的情況已經測試到了,但多個輸入條件組合起來可能出錯的情況卻被忽視了。

如果在測試時必須考慮輸入條件的各種組合,則可能的組合數目将是天文數字,是以必須考慮采用一種适合于描述多種條件的組合、相應産生多個動作的形式來進行測試用例的設計,這就需要利用因果圖(邏輯模型)。

3.因果圖介紹

1) 4種符号分别表示了規格說明中向4種因果關系。

測試思想-測試設計 測試用例設計之因果圖方法

2) 因果圖中使用了簡單的邏輯符号,以直線聯接左右結點。左結點表示輸入狀态(或稱原因),右結點表示輸出狀态(或稱結果)。

3) Ci表示原因,通常置于圖的左部;ei表示結果,通常在圖的右部。Ci和ei均可取值0或1,0表示某狀态不出現,1表示某狀态出現。

4. 因果圖概念

1) 關系

①恒等:若ci是1,則ei也是1;否則ei為0。

②非:若ci是1,則ei是0;否則ei是1。

③或:若c1或c2或c3是1,則ei是1;否則ei為0。“或”可有任意個輸入。

④與:若c1和c2都是1,則ei為1;否則ei為0。“與”也可有任意個輸入。

前面兩者①,②,考慮的是單個輸入(原因)和輸出(結果)之間的關系:也就是輸入為真(假)時,輸出的值為真還是假的對應關系,很自然的,我們很容易想到有兩種情況:一種和輸入同真同假,一種和輸入相反。

後面兩者③,④,考慮的是多個輸入之間的組合輸入和輸出之間的關系:我們也很容易想到:一種是組合關系為或(or),一種組合關系為組合(and),滿足這種組合關系得出的輸出才為真,否則為假

2) 限制

輸入狀态互相之間還可能存在某些依賴關系,稱為限制。例如,

某些輸入條件本身不可能同時出現。輸出狀态之間也往往存在限制。在因果圖中,用特定的符号标明這些限制。

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

A.輸入條件的限制有以下4類:

   ①

E限制(異):a和b中至多有一個可能為1,即a和b不能同時為1。

   ②

I限制(或):a、b和c中至少有一個必須是1,即 a、b

和c不能同時為0。

   ③

O限制(唯一):a和b必須有一個,且僅有1個為1。

   ④

R限制(要求):a是1時,b必須是1,即不可能a是1時b是0。

B.輸出條件限制類型

  輸出條件的限制隻有M限制(強制):若結果a是1,則結果b強制為0。

5. 采用因果圖法設計測試用例的步驟

1)分析軟體規格說明描述中, 哪些是原因(即輸入條件或輸入條件的等價類), 哪些是結果(即輸出條件),

并給每個原因和結果賦予一個辨別符。

2)分析軟體規格說明描述中的語義,找出原因與結果之間, 原因與原因之間對應的關系,根據這些關系,畫出因果圖。

3)由于文法或環境限制, 有些原因與原因之間,原因與結果之間的組合情況不可能出現,為表明這些特殊情況, 在因果圖上用一些記号表明限制或限制條件。

4)把因果圖轉換為判定表。

5)把判定表的每一列拿出來作為依據,設計測試用例。

二.實戰演習

1.某軟體規格說明書包含這樣的要求:第一列字元必須是A或B,第二列字元必須是一個數字,在此情況下進行檔案的修改,但如果第一列字元不正确,則給出資訊L;如果第二列字元不是數字,則給出資訊M。

解答:

1) 找出原因(輸入)和結果(輸出):

原因:

C1.第一列字元為A?;

C2.第一列字元為B?;

C3.第二列字元為數字?

技巧:如上,查找原因時将輸入有效等價類和輸入無效等價類看作是同一個原因的正反面取值,即查找有效等價類,然後加上問号

結果:

e1.修改檔案

e2.給出資訊L

e3.給出資訊M

2) 其對應的因果圖如下:

考慮到原因1和原因2不可能同時為1,是以在因果圖上施加E限制。

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

注意,學習添加中間結果節點

3) 根據因果圖建立判定表。

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

表中,C1和C2是不可能同時為1的,即不可能同時出現,是以應排除這兩種情況。

4)用例設計

針對每一條規則(C,D列除外)設計一條用例

2.有一個處理單價為5角錢的飲料的自動售貨機軟體測試用例的設計。其規格說明如下:若投入5角錢或1元錢的硬币,押下〖橙汁〗或〖啤酒〗的按鈕,則相應的飲料就送出來。若售貨機沒有零錢找,則一個顯示〖零錢找完〗的紅燈亮,這時在投入1元硬币并押下按鈕後,飲料不送出來而且1元硬币也退出來;若有零錢找,則顯示〖零錢找完〗的紅燈滅,在送出飲料的同時退還5角硬币。

1) 分析這一段說明,列出原因和結果

C1:投入1元錢?

C2:投入5角錢?

C3: 押下橙汁?

C4:押下啤酒?

C5:售貨機有零錢找?

C6:中間結果,按下按鈕?

C7:中間結果,找錢成功?

e1:送出橙汁

e2:送出啤酒

e3:高亮【零錢找完】的紅燈

e4:退出1元硬币

e5: 熄滅【零錢找完】的紅燈

e6:退出5角硬币

2)畫出因果圖

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

說明:因果圖需要對需求和邏輯了解很透徹,不同的了解畫出的因果圖不同,自然設計難易程度也就不一樣,個人建議少用因果圖,多用場景法,因為相比之下,場景法設計用例實施起來會比較容易

3)轉換為判定表

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

4)簡化判定表

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法

5)用例設計

pdf版下載下傳:

測試用例設計之因果圖方法.pdf

參考文章: 測試用例設計白皮書_張元禮

作者:授客

QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法
測試思想-測試設計 測試用例設計之因果圖方法