因果圖法


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

 

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

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

1.     因果圖介紹

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

 

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

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

2.     因果圖涉及的概念

1)    關系

  • 恆等:若c1是1,則e1也是1;否則e1為0。
  • 非:若c1是1,則e1是0;否則e1是1。
  • 或:若c1或c2或c3是1,則e1是1;否則e1為0。“或”可有任意個輸入。
  • 與:若c1和c2都是1,則e1為1;否則e1為0。“與”也可有任意個輸入。

2)    約束

輸入狀態相互之間還可能存在某些依賴關系,稱為約束。例如, 某些輸入條件本身不可能同時出現。輸出狀態之間也往往存在約束。在因果圖中,用特定的符號標明這些約束。

 

  • 輸入條件的約束有以下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。
  • 輸出條件約束類型

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

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM