国际象棋游戏的基于属性的测试

问题描述 投票:2回答:1

我试图围绕基于财产的测试和国际象棋。目前我代表我的国际象棋游戏是一个二维阵列,我实施的唯一作品是典当和骑士。

典当和骑士代表他们的行动作为allMoves(x,y) \ invalidMoves(board,x,y)的集合。所以我能想到的一个属性是测试allMoves(x,y) ∪ invalidMoves(board,x,y) === allMoves。但除此之外,我不确定还有什么可以测试。我假设我需要为国际象棋棋盘设置一个简化的oracle模型,但我不确定这样的模型是什么。

haskell testing chess
1个回答
7
投票

首先只是说一些关于真实棋盘的明显事情,无论它们听起来多么愚蠢。其中许多将是合理的测试属性。以下是一些想法:

  • 当你移动一块时,它会从它所在的位置移动到移动所放置的位置。
  • 没有合法的骑士行动是合法的典当行动。
  • 一个棋子不会一次移动超过两个方格。
  • 骑士从未在其起始位置附近移动。
  • 此举只应涉及董事会实际上的职位。
  • 移动到另一块上减少了板上的件数。

存在更多这样的想法。它们看似简单,但我保证您的早期实现会遗漏其中一些。弄清楚如何将这些不变量写为属性,并从那里扩展您的测试套件。

© www.soinside.com 2019 - 2024. All rights reserved.