1. 程式人生 > >黑盒測試用例設計 二

黑盒測試用例設計 二

因果圖法

一. 方法簡介

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。“與”也可有任意個輸入。
(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) 根據題意,原因和結果如下:
原因:
1——第一列字元是A;
2——第一列字元是B;
3——第二列字元是一數字。
結果:
21——修改檔案;
22——給出資訊L;
23——給出資訊M。

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

11為中間節點;考慮到原因1和原因2不可能同時為1,因此在因果圖上施加E約束。

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

表中8種情況的左面兩列情況中,原因①和原因②同時為1,這是不可能出現的,故應排除這兩種情況。表的最下一欄給出了6種情況的測試用例,這是我們所需要的資料。

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

(1) 分析這一段說明,列出原因和結果
原因:
1.售貨機有零錢找
2.投入1元硬幣
3.投入5角硬幣
4.押下橙汁按鈕
5.押下啤酒按鈕
結果:
21.售貨機〖零錢找完〗燈亮
22.退還1元硬幣
23.退還5角硬幣
24.送出橙汁飲料
25.送出啤酒飲料

(2) 畫出因果圖,如圖下圖所示:

所有原因結點列在左邊,所有結果結點列在右邊。建立中間結點,表示處理的中間狀態。中間結點:11. 投入1元硬幣且押下飲料按鈕; 12. 押下〖橙汁〗或〖啤酒〗的按鈕;13. 應當找5角零錢並且售貨機有零錢找;14. 錢已付清

(3)轉換成判定表

(4) 在判定表中,陰影部分表示因違反約束條件的不可能出現的情況,刪去。第16列與第32列因什麼動作也沒做,也刪去。最後可根據剩下的16列作為確定測試用例的依據。

判定表分析方法

一. 方法簡介

1.定義

判定表是分析和表達多邏輯條件下執行不同操作的情況的工具。

2.判定表的優點

(1)能夠將複雜的問題按照各種可能的情況全部列舉出來,簡明並避免遺漏。因此,利用判定表能夠設計出完整的測試用例集合。

(2) 在一些資料處理問題當中,某些操作的實施依賴於多個邏輯條件的組合,即:針對不同邏輯條件的組合值,分別執行不同的操作。判定表很適合於處理這類問題。

3.判定表通常由四個部分組成如下圖所示

(1) 條件樁:列出了問題得所有條件。通常認為列出的條件的次序無關緊要。
(2) 動作樁:列出了問題規定可能採取的操作。這些操作的排列順序沒有約束。
(3) 條件項:列出針對它左列條件的取值。在所有可能情況下的真假值。
(4) 動作項:列出在條件項的各種取值情況下應該採取的動作。

4.規則及規則合併

(1)規則:任何一個條件組合的特定取值及其相應要執行的操作稱為規則。在判定表中貫穿條件項和動作項的一列就是一條規則。顯然,判定表中列出多少組條件取值,也就有多少條規則,既條件項和動作項有多少列。

(2)化簡:就是規則合併有兩條或多條規則具有相同的動作,並且其條件項之間存在著極為相似的關係。

5.規則及規則合併舉例

(1) 如下圖左端,兩規則動作項一樣,條件項類似,在1、2條件項分別取Y、N時,無論條件3取何值,都執行同一操作。即要執行的動作與條件3無關。於是可合併。“-”表示與取值無關。

(2) 與上類似,下圖中,無關條件項“-”可包含其他條件項取值,具有相同動作的規則可合併。

6.判定表的建立步驟

(1) 確定規則的個數。假如有n個條件。每個條件有兩個取值(0,1),故有2^n種規則。
(2) 列出所有的條件樁和動作樁。
(3) 填入條件項。
(4) 填入動作項,得到初始判定表。
(5) 簡化.合併相似規則(相同動作)。

二. 實戰演習

1.問題要求:”……對功率大於50馬力的機器、維修記錄不全或已執行10年以上的機器,應給予優先的維修處理……” 。這裡假定,“維修記錄不全”和“優先維修處理”均已在別處有更嚴格的定義 。請建立判定表。

解答:
①確定規則的個數:這裡有3個條件,每個條件有兩個取值,故應有222=8種規則。
②列出所有的條件茬和動作樁:

③填入條件項。可從最後1行條件項開始,逐行向上填滿。如第三行是: Y N Y N Y N Y N,第二行是: Y Y N N Y Y N N等等。
④填入動作樁和動作頂。這樣便得到下圖的初始判定表

⑤化簡。合併相似規則後得到下圖:

完…