2012-01-27 130 views
14

我正在为我们的网站实施一些烟雾测试。鉴于什么时候测试 - 我需要一个“什么时候”?

我为现有的自动验收测试/用户故事使用了Given/When/Then格式。但现在我想做的初始烟雾测试:

Given I'm on the homepage

Then I should see "Welcome To The Site"

我缺少的东西?是没有时间的“好”吗?

使用的工具:MVC3,SpecFlow,NUnit的,华廷

回答

18

这是完全有效的语法省略任何的考虑,当或然后 -

(甚至给他们以任何顺序混合specflow并不关心。)

然而,为便于阅读的目的,而不是省略当我常常改写给定的,即

When I view the homepage 
Then I should see "Welcome To The Site" 

我喜欢省略定部分,因为被认为当以表明测试的作用是什么。

如果步骤绑定的代码是相同的,并且您想要重新使用它,则始终可以将给定的和我的时间绑定到相同的方法。

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

实际上Specflow似乎并不关心你是否给出了一个步骤Given,When或Then,只要它绑定到正确的Given/when/then属性即可。单词的选择很有趣,而且它似乎只是按顺序执行这些步骤。 – perfectionist 2012-01-27 13:31:03

+0

这就像完美主义者说的那样; specflow只需按照功能文件中所述的顺序执行这些步骤即可。它并不关心你使用的属性。 – 2012-01-27 15:40:26

+1

Doh - 评论中没有新行!我会建议使用When-steps来清楚标记你正在测试的动作。如安排行为声明。 – 2012-01-27 15:41:23

-3

你不需要时。我喜欢考虑如下的Given/When/Then关键字

鉴于 - 这是一个准备步骤,做任何你需要能够执行测试的东西 何时 - 这应该是你的测试将要验证的一个动作。 然后 - 这应该是您根据When步骤中执行的操作验证您的测试的地方。

以前的建议他们只影响执行顺序。

+0

你真的想说”你不需要什么时候“吗?你能解释你为什么这么想吗?你的答案的其余部分似乎暗示了什么时候很重要。 – 2017-08-17 19:45:10

-1

道歉线程复活...

我可能已经走了有:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

我喜欢让每个Scenario至少一个GivenWhenThen - 不忘记你也可以使用AndBut(不是说它们与这种情况特别相关)。你甚至可以用*制作一个项目符号样式列表。

11

我认为你真的错过了这里的观点。你总是需要一个When。这是你应该测试的东西!你可以省略的是Givens

你应该说的是,

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then真的是代表国家机器的一个更好的方式。

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

我喜欢做的事就是思考所有的事情必须存在,以允许When发生。在你的情况下,似乎没有任何初始状态。但考虑你是否有一些网络应用程序。您需要在访问首页之前拥有初始状态(您需要确保用户已登录);

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

另一种情况是:

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

正如有人正确地指出,大多数BDD工具实际上并不Given When Then区分,但你应该! 'When When Then'的详细性质被选择为让我们的人更容易理解和帮助我们的思维过程。一台机器可能不在乎你所说的步骤。在这种情况下,您应该尽一切努力在任何时候正确使用关键字。

0

我会说:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

我倾向于认为由于作为传统的前置条件等同。当作相当于测试行动时。然后等同于预期的结果。

因此,如果没有先决条件,我就离开了考虑,只是专注于什么时候,然后:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflow将允许您使用给定或当,但Visual Studio还允许你写一个长度为1000年的单一类。仅仅因为两者都是可能的,并不意味着两者都是“正确的”。

相关问题