我试图围绕基于财产的测试和国际象棋。目前我代表我的国际象棋游戏是一个二维阵列,我实施的唯一作品是典当和骑士。
典当和骑士代表他们的行动作为allMoves(x,y) \ invalidMoves(board,x,y)
的集合。所以我能想到的一个属性是测试allMoves(x,y) ∪ invalidMoves(board,x,y) === allMoves
。但除此之外,我不确定还有什么可以测试。我假设我需要为国际象棋棋盘设置一个简化的oracle模型,但我不确定这样的模型是什么。
首先只是说一些关于真实棋盘的明显事情,无论它们听起来多么愚蠢。其中许多将是合理的测试属性。以下是一些想法:
存在更多这样的想法。它们看似简单,但我保证您的早期实现会遗漏其中一些。弄清楚如何将这些不变量写为属性,并从那里扩展您的测试套件。