问答题 以下是某“象棋中走马事件”应用程序的走马规则,请按要求回答问题。
以下是中国象棋中走马事件中的走马规则:
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是导出结果的讲一步原因。
问答题 对该软件进行基于因果图的方法设计测试用例。
【正确答案】
【答案解析】根据上面的因果图,建立对应的判定表。
在该应用程序中,原因有7个,一个完整的判定表应有2 7 =128种情况。由于篇幅的限制,且考虑到5、6、7原因只与中间结果11有关,所以这里将完整的判定表拆分为两个子表,如表1和表2所示。对于结果22、23、24,中间结果是原因,因此在表2中,将11作为原因。
表1 判定表1
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
原因 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
3 0 0 0 0 0 0 0 0 1 1 1 l 1 l 1 1
4 0 0 0 0 0 0 0 0 1 1 1 1 1 l 1 1
中间结果 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
结果 21 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
测试用例 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
表2 判定表2
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
原因 11 0 1 0 1 0 1 0 1 0 1 0 1 0 l 0 1
5 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
6 0 0 0 0 0 0 0 0 l 1 1 1 1 1 l 1
7 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 l
结果 22 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
23 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
24 0 0 0 0 0 0 0 0 0 1 0 l 0 1 0 1
测试用例 Y Y Y Y Y Y Y
由表1可知,当结点11为1时,结果21为0。由于结果21、22、23、24受到O约束的限制,不能同时为0,所以在表2中的2列是不能出现的情况;同样受到O约束的还有8、12、14和16列;由于E约束,第7、8、11到16列也是不可能出现的情况。在表中用灰框表示。
最后根据判定表设计测试用例。如表2所示,判定表中没有被划去的每一列就是一个测试用例。