【问题标题】:HTML5 canvas and BDD - CucumberHTML5 画布和 BDD - Cucumber
【发布时间】:2012-10-02 11:27:05
【问题描述】:

我最近在学习行为驱动开发 (BDD),我发现它对 CRUD Web 应用程序有好处。

Cucumber 等 BDD 工具是否适合游戏,特别是它们是否适合 HTML5 Canvas 游戏?

还有其他适用于 HTML5 画布游戏的 BDD 工具吗?还是 BDD 仅适用于 CRUD 应用程序?

【问题讨论】:

标签: cucumber html5-canvas bdd


【解决方案1】:

我最近一直在尝试 BDD 和游戏开发。但我正在使用 C# 构建 .NET 和 XNA 框架。我使用 Visual Studio 作为我的 IDE,并使用 SpecFlow 和 NUnit 进行测试。

SpecFlow 是 BDD/Gherkin 工具 - 作为一个团队,我们一直在讨论游戏并充实一些需求并在 Gherkin 中记录它们......然后从那里开始。关键是设计可测试的游戏。

我们已将游戏引擎从 XNA 所需的主要“游戏循环”实现中抽象出来,因此我们能够加载它并注入它所需的所有依赖项。然后我们在引擎上运行测试,然后对代码进行断言,以确保它的行为正确。

我们很早就决定图形/绘图/声音/等不在测试范围内……如果它们在最终产品中被破坏,那将是非常明显的。我们设法建立的测试套件让我们确信游戏本身的机制正在按预期工作(即游戏对象 A 是否在正确的位置?游戏对象 B 在被射弹 C 击中时会死亡吗?等等。等等)。

到目前为止,这是一次相当不错的体验。

【讨论】:

  • 这很有趣,这也是我们应用于重型 JS 网络应用程序的策略。这是一种折衷方案,可以使验收测试在其他难以自动化的项目(如游戏或异步 UI 应用程序)上可行。当然,这是一个个案决定。
  • 当然是逐个案例。我还认为,对于游戏而言,首先进行简短的原型迭代以快速查看游戏创意是否值得在更耗时的过程中投入大量时间是非常有价值的。事实上,我并不是 100% 赞同测试驱动游戏开发的概念……当然是针对没有计划升级/sequals/补丁等的“一次性”版本;特别是对于独立游戏开发者。但是这个概念是有效的 - 并且允许您测试游戏的“引擎”而不会陷入不可能的断言。
【解决方案2】:

问题是:你能想出在 JavaScript 中与基于画布的游戏交互的方法吗?

实际上,您可以打开 JS 控制台并从那里与游戏互动吗?你能在正确的坐标上点击,你能按键吗?最重要的是,你能对游戏输出的内容做出断言吗?

如果答案是肯定的,那么您可以在 JavaScript 中自动化游戏,Cucumber 或 Cucumber.js 绝对可以在此基础上使用。

如果答案是否定的,并且您想不出一种以与上述类似的方式自动化画布内容的方法,那么恐怕没有自动化工具可以完成这项工作。

回答您的第二个问题:BDD 与“CRUD”应用程序完全无关。它是关于描述行为并自动化说明这些行为的示例。因此,您几乎可以对任何类型的应用程序采用 BDD 方法。

如果您没有找到自动化应用程序的方法,您仍然可以考虑编写场景来记录应用程序的(预期)行为。自动化阶段不是强制性的,这与普遍的看法相反:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2013-05-10
    • 2016-09-24
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多