使用因果圖的好處
1 考慮了多個輸入之間的相互組合、相互制約關系
2 能夠幫助我們按一定步驟,高效率地選擇測試用例,同時還能為我們指出,程序規格說明描述中存在著什么問題
利用因果圖導出測試用例需要經過的一般步驟
1.分析程序規格說明的描述中,哪些是原因,哪些是結果。
2.分析程序規格說明的描述中語義的內容,并將其表示成連接各個原因與各個結果的因果圖
3.在因果圖上使用若干個特殊的符號標明特定的約束條件
4.把因果圖轉換成判定表
5.把判定表中每一列表示的情況寫成測試用例
因果圖基本符號
因果圖實例講解
某軟件規格說明中包含這樣的要求:
第一列字符必須是A或B,第二列字符必須是一個數字,在此情況下進行文件的修改。但如果第一列字符不正確,則給出信息L;如果第二列字符不是數字,則給出信息M。
分開原因和結果
原因:1----第一列字符是A;
2----第一列字符是B;
3----第二列字符是一數字。
結果:21----修改文件;
22----給出信息L;
23----給出信息M。
此例子是講解利用因果圖設計測試用例的一個小例子。以中國象棋中走馬的測試用例設計為例學習因果圖的使用方法。
一、 分析中國象棋中走馬的實際情況(下面未注明的均指的是對馬的說明)
1、如果落點在棋盤外,則不移動棋子;2、如果落點與起點不構成日字型,則不移動棋子;3、如果落點處有自己方棋子,則不移動棋子;4、如果在落點方向的鄰近交叉點有棋子(絆馬腿),則不移動棋子;5、如果不屬于1-4條,且落點處無棋子,則移動棋子;6、如果不屬于1-4條,且落點處為對方棋子(非老將),則移動棋子并除去對方棋子;7如果不屬于1-4條,且落點處為對方老將,則移動棋子,并提示戰勝對方,游戲結束。
二、 根據分析明確原因和結果
原因:
1、 落點在棋盤上;
2、 落點與起點構成日字;
3、 落點處為自己方棋子;
4、 落點方向的鄰近交叉點無棋子;
5、 落點處無棋子;
6、 落點處為對方棋子(非老將);
7、 落點處為對方老將。
結果:
21、不移動棋子;
22、移動棋子;
23、移動棋子,并除去對方棋子;
24、移動棋子,并提示戰勝對方,結束游戲。
添加中間節點11,目的是作為導出結果的進一步原因,簡化因果圖導出的判定表
考慮結果不能同時發生,所以對其施加唯一約束O。原因5、6、7不能同時發生,所以對其施加異約束E.
根據因果圖建立判定表:(分為兩表)
注:1、以上判定表中由于表格大小限制沒有列出最后所選的測試用例;2、第2表中部分列被合并表示不可能發生的現象;3、通過中間節點將用例的判定表簡化為兩個小表。減少工作量。
四、根據判定表寫測試用例表(略)
原文轉自:http://www.uml.org.cn/Test/2004120601.htm