聲明:
這個例子的設計并不是我首先想出的,我參考了原文,然后經過整理,融匯了我的Excel技巧,把它整理了出來,分析了表的生成過程,比原來的設計有一定的易學易用性?,F在讓大家來進行分析與學習。
需求規格:
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:如果落點在棋盤上,構成日字,不是自己方棋子,落點方向的鄰近交叉點上有棋子,則不移動棋子。
原文轉自:http://www.uml.org.cn/Test/200811149.asp