因果圖方法

一. 方法簡介

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;如果第二列字符不是數字,則給出信息。

  解答:

  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列作爲確定測試用例的依據。

 
 
 
QQ的登錄界面因果圖怎麼設計其測試用例呢?我們看到有3個可以組合的項: QQ的帳號、QQ的密碼、登錄按鈕。在測試的時候,要簡化QQ的輸入條件,這樣纔能有重點的去測試,也是主要關注用戶的基本需求。

       第一步:畫出因果圖:

      第二步:從因果圖導出判定表:

        第三步:從判定表導出測試用例:

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章