昨天我去参加了由Gojko Adzic主讲的关于BDD的精彩演讲。也许我错过了他所说的一两件事情,因此这里有一个问题,希望能为我澄清一些事情。
通常当你在网上看到BDD示例时,它们会在UI中包含步骤。在gherkin语言中,你经常会看到类似这样的东西:
Scenario: Successful booking
Given I am on the page ...
When I enter the following ...
或者类似于那样。
我的问题是,这真的与BDD有关吗?BDD不应该针对领域进行定位,然后您可以将这些类型的测试用作UI或回归测试。我想的是像这样使用Gherkin语法来描述某种预订系统:
BDD规范:
Scenario: Successful booking
Given I am an authenticated user
When I place an order with the following items
| item | price ($) |
| book1 | 5 |
Then I should expect to pay $5
And I should get a confirmation mail of my order
请注意,我完全没有提到用户界面,我只是描述了域的工作方式,并且这个测试应该在每次构建时运行。然后您可以进行UI测试(也可以使用Gherkin语言编写)。
Scenario: Successful booking
Given I am logged in on the site
And I go to the page for item book1
And I click add to basket
Then I should have a basket with 1 item and $5
When I click checkout
Then I should get to the checkout page
它继续进行,也许应该分成两个或三个场景,但这不是重点。这些类型的测试比较繁重,可能只应在夜间构建中运行。问题的核心仍然是:您是否应将BDD规范与UI / 回归测试分开。