您如何处理具有这样的长链的用户故事/验收测试,当时/当时混合在一起时?是否最好将其分为单独的接受测试,其中一个测试对话框出现,然后第二个测试对话框显示后的行为?

Feature: Confirmation before removing products from cart
  In order to avoid accidentally removing an item from my cart
  As a Customer
  I want a confirmation dialog to ask me if I'm sure I want to remove an item

  Scenario: I want to remove an item from my cart
    Given I have added item "xyz" to my cart
    When I click "Remove"
    Then a confirmation dialog pops up
    And it asks "Are you sure you want to remove this from your cart"
    When I click "Yes"
    Then item "xyz" should be removed from my cart
有帮助吗?

解决方案

您的情况似乎很长,并且与GUI息息相关。如果将其绑定到系统的功能,会发生什么?

Scenario: I want to remove an item from my cart
  Given I have a cart containing "xyz"
  When I remove "xyz" from my cart
  Then my cart should be empty.

现在,该方案描述了对用户有用的内容,并且更容易重构。

我和我一样爱BDD,因为我有这样的情况。我们进行了120次接受测试,它们大多是失败的。有人像您描述的那样,将确认对话框放在了很多情况下,并立即打破了80次接受测试。通过将它们转变为具有高级,可重复使用的步骤的方案,即使我们用来实现系统更改功能的机制,我们也可以轻松地进行重构并保持测试工作。在这些可重复使用的步骤中发生了实际的点击按钮,并且可以每个步骤进行多个UI操作。

我在这里写了一个场景,如果有用的话,它可以做到这一点(这是DSL而不是英语,但您应该得到这个想法):

http://code.google.com/p/wipflash/source/browse/example.petshop.scenarios/petregistrationandpurchase.cs

其他提示

这个问题实际上是“分支机构”是什么。

如果有多个步骤,则每个步骤都必须有用户选择。应该有多个“ when”。这应该在每个分支上形成一棵丰富的树,并具有许多用户选择的替代品。每个可能的结果都应该有自己的测试,以做出各种选择并得出该结果。

具有两个用户选择的三个步骤序列是8个可能的路径。不同的路径可能会达到相同的结果(或可能不会)。但是您应该有多个途径。

如果只是顺序(因为有人感觉像编写顺序步骤)并且用户没有选择,那么它并不是真正考虑用户行为的驱动,是吗?

我看不到选择。没有选择==气味不良。但是易于测试,因为只有一个结果,一系列圈养步骤,用户几乎没有选择或没有选择。

如果您正确地确定了选择,则每个步骤都有多个结果,每个步骤都应独立测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top