什么时候有多个可能的Thens?

时间:2014-11-19 15:41:32

标签: bdd

我刚刚发现了BDD的概念,我试图理解如何以正确的方式编写用户故事。假设我需要针对某些可能无法通过Given完全规定的外部状态来测试我的应用程序,这样我可能会有多个Then而不是:{/ p>

Given [State]
When [Some Action]
  And [Some Other Action]
Then [Outcome A]
  And [Outcome A']
  Or [Outcome B]
  And [Outcome B']

在BDD中这是一个合理的故事吗?就我而言,AB在给定状态和行动的情况下都是合理的预期结果,并且它们是唯一可接受的结果。

2 个答案:

答案 0 :(得分:1)

如果您的系统具有非确定性行为,那么这非常合适。

然而,计算机系统具有确定性行为,因此如果您正在开发软件(而不是使用BDD,例如人类交互系统),那么您可能希望更精确地指定它。

您总是可以为Givens中的上下文模拟或编写自己的存根。例如,在我们最初用于开发JBehave的俄罗斯方块游戏中,为了场景的目的,我用已知种子替换了真实游戏中使用的随机种子。然后我可以添加如下行:

  

鉴于我们目前的形状是“T”   而下一个形状是“S”< - 我可以知道,因为它是一个固定的种子

您可以执行与日期,第三方系统,现有生产系统等类似的操作。

因此,我希望您有两种情况:

  

鉴于[州]   和[导致A的国家]
  当[某些行动]
    和[其他一些行动]
  然后[结果A]
    并[结果A']

和B类似:

  

鉴于[州]   和[通往B的州]
  当[某些行动]
    和[其他一些行动]
  然后[结果B]
    和[结果B']

围绕系统运行的不同环境以及它们如何导致不同结果的对话是BDD的核心。这有助于说明系统的行为

但是,如果您的系统实际上远远超出您的控制范围,您无法确定地使用它,并且如果您选择的工具支持使用“或”,那么自动化您的方式就可以了。不过,我仍然会在你的谈话中尽可能具体。 一个上下文,这意味着您为该上下文而不是结果A编写了结果B;否则你可以让结果A成为你唯一的结果,然后说“完成工作”。

答案 1 :(得分:0)

如果可读,易懂且不会被误解,那就做你想做的事。