szy123618 发表于 2012-6-10 21:42:06

象棋中马的走法的因果图求助

根据以下关于中国象棋软件中关于走马的规则的描述,分析其因果图,并设计用例:
1) 如果落点在棋盘外,则不移动棋子;
2) 如果落点与起点不构成日字型,则不移动棋子;
3) 如果落点处有自己方棋子,则不移动棋子;
4) 如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;
5) 如果不属于1-4条,且落点处无棋子,则移动棋子;
6) 如果不属于1-4条,且落点处为对方棋子(非老将),则移动棋子并除去对方棋子;
7) 如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。


上课得到的答案和晚上搜索的答案不一样
很是郁闷
是没有标砖答案还是两个答案都有问题?
各位高手..有谁可以给一个答案并说明看看
感激不尽

清风随雨 发表于 2012-6-11 02:29:39

LZ的公布的用例应该是凭空想象的用例,而不是基于软件开发设计的用例。原因如下:
1) 如果落点在棋盘外,则不移动棋子;
这点是不可能的,因为在软件的棋盘外,是没有可接收落点的事件响应的,即:软件中是不会有出界后的落点响应,最多就是出界提示而已,但该规则适用于所有棋子的约束;
2) 如果落点与起点不构成日字型,则不移动棋子;
这点也不符合软件设计的算法。这类软件的设计方法应该采取的是通过坐标标识棋盘各点,之后取当前选中棋子的坐标,传入该棋子(马)行动方法的函数,马可走的坐标为8个,在这8个中判断是否出界,出界的视为无效,凡是落点不等于有效坐标的,都不得移动棋子;
3) 如果落点处有自己方棋子,则不移动棋子;
道理同1,此处应为公共约束,凡是落点上为己方棋子,均不得移动且提示;
个人建议的测试用例:
1、“马”棋子,是否有公共约束:出界判断;(即:公共约束出界判断是否写入了“马”这个棋子的行动方法中);
2、落点是否为有效落点,不是则提示;
3、落点为有效落点,则此处是否有其他棋子,没有其他棋子则移动;
4、落点处有其他棋子,则判断是否为我方棋子,如果是,则是否调用公共约束,不得移动且提示;
5、如果落点处是对方棋子则判断对方棋子是否为“将”或“帅”(你懂得),如果不是,则移动棋子并除去对方棋子;
6、如果对方棋子是“将”或“帅”则移动棋子,并提示战胜对方,游戏结束。

davy_chen 发表于 2012-6-11 09:41:44

该例子在网上有两个版本,都存在一定的问题,所以课堂讲解和网上内容不一致很正常,但是至于你提到的标准答案,有,但是需要看因果分析与图的对应等全部内容,而不能只看因果分析,因为因果分析定义不同,则后续操作也会对应变化。

清风随雨 发表于 2012-6-11 11:34:20

不好意思,回答问题时漏掉一项,现在补充:
第2个用例需要修改为:落点是否为有效落点,不是有效落点则提示;如果是有效落点,则判断是否有(绊马腿)。其程序实现方法应为取出棋子(马)的当前坐标,之后检查(绊马腿)约束方法(马有四个绊马腿坐标),与落点同向的“绊马腿”坐标中有棋子则不移动,无棋子则移动。

ytcaicai 发表于 2012-6-11 17:26:46

用例的设计需要分析思考,对于设计的结果一次有时候很难定稿,需要修订,甚至多次的修订、整理精简。

liujintao00 发表于 2012-6-12 09:54:15

本帖最后由 liujintao00 于 2012-6-12 09:57 编辑

回复 4# 清风随雨

清风设计测试用例的思想是根据“程序设计”设计测试用例,非常赞同这种设计用例的方法。这种设计测试用例的方法非常有针对性。
我们测试的对象是程序不是需求。同样的需求,如果采用多种不同的程序设计,对应的测试用例也应该做相应的调整

那么怎么保证程序设计满足于需求呢? 这就要在设计评审来实现

limit1 发表于 2012-6-12 14:27:58

:)

limit1 发表于 2012-6-12 14:28:16

回复 7# limit1


    :)

limit1 发表于 2012-6-12 14:28:56

回复 7# limit1


    :)

freshzhy 发表于 2012-6-12 15:00:21

看不懂呢,听不懂说的什么。因果方法,怎么样也理解不了,是不是不适合作软件测试呀

szy123618 发表于 2012-6-14 12:15:38

谢谢各位,实在太好了
感激不尽
页: [1]
查看完整版本: 象棋中马的走法的因果图求助