我正在尝试将注意力放在基于属性的测试和国际象棋上。目前,我将棋类游戏表示为2D阵列,而我实现的唯一部件是用来作怪的典当和骑士。
典当和骑士将其移动表示为allMoves(x,y) \ invalidMoves(board,x,y)
的集合。因此,我可以想到的一个属性是测试allMoves(x,y) ∪ invalidMoves(board,x,y) === allMoves
。但是除此之外,我不确定还需要测试什么。我认为我需要为国际象棋棋盘建立一个简化的Oracle模型,但是我不确定这样的模型是什么。
答案 0 :(得分:7)
首先,请说一些关于现实棋盘的真实事实,无论它们听起来多么愚蠢。其中许多将是要测试的合理属性。这里有一些想法:
还有更多类似的想法。它们看起来很简单,但是我保证您的早期实现会错过其中的一些。弄清楚如何将这些不变式写为属性,并从那里扩展测试套件。