因果圖法設計用例
需求規格:
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,這樣能夠簡化設計。然后畫出因果圖:

通常的設計方法就是一個表的方法,我稱為一表法。但是七個因子,表格就會非常的長,讓人望而卻步!2^7=128,那么長的表是一般人不能做到的,在 Excel里面都感覺版面不夠,要是拿來考試怎么辦?所以這里提供兩表法。1、2、3、4只與 11及21有關,可以使用一個表先處理。然后11、5、6、7有可以作為一個表。
1、列出表一

合並表一:
黃色背景的項說明了他們可以合並,合並后得到:

2、列出表二

首先去掉由於約束而無效的項,然后再進行合並,得到下面的表:

3、把兩個表合並成一個表
由11因子的中介作用,合並的表二的每一個因子都對應一個表一的所有與之相同值的項,如表二中的列1就對應表一的1、9、13、16,如此對應,可生成下面的表格:

由於上表中有一些相似的項,可以考慮他們是否可以合並,所有先在Excel中把相似的項復制在一起,得到下面的表:

這樣就可以生成測試用例了。其實真正的用例就在表中,只是還是要寫成連菜鳥也要看得懂的文字而已。下面是用例:
用例1:如果在棋盤上,構成日字,並且不是自己方棋子,落點方向的鄰近交叉點沒有棋子,落點處為對方老將,則移動棋子,並提示戰勝對方,游戲結束。
用例2:如果在棋盤上,構成日字,並且不是自己方棋子,落點方向的鄰近交叉點沒有棋子,且落點處為對方棋子(非老將),則移動棋子並除去對方棋子。
用例3:如果在棋盤上,構成日字,並且不是自己方棋子,落點方向的鄰近交叉點沒有棋子,且落點處無棋子,則移動棋子。
用例4:如果落點不在棋盤上,直接不移動棋子。
用例5:如果落點在棋盤上,不構成日字,則不移動棋子。
用例6:如果落點在棋盤上,構成日字,是自己方棋子,不移動棋子。
用例7:如果落點在棋盤上,構成日字,不是自己方棋子,落點方向的鄰近交叉點上有棋子,則不移動棋子。