鉴于何时测试 - 我需要“何时”?

问题描述 投票:17回答:6

我正在对我们的网站实施一些烟雾测试。

我正在使用Given / When / Then格式进行现有的自动验收测试/用户故事。但现在我想做一个初步的烟雾测试:

Given I'm on the homepage

Then I should see "Welcome To The Site"

我错过了什么吗?没有什么时候“好”吗?

使用的工具:MVC3,SpecFlow,Nunit,Watin

bdd specflow user-stories smoke-testing
6个回答
21
投票

省略Given,When或Then中的任何一个是完全有效的语法(甚至以任何顺序混合它们 - specflow不关心。)

但是,为了便于阅读,而不是省略当我经常改写给定,即

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

我更喜欢省略Given部分,因为When应该指示测试的操作是什么。

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

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

14
投票

我想你真的错过了这一点。你总是需要一个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发生所必须存在的所有事情。在你的情况下,似乎没有任何初始状态。但请考虑一下您是否有一些Web应用程序。在访问主页之前,您需要具有初始状态(您需要确保用户已登录);

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,但你应该这样做!选择'给予当时'的冗长性质使我们人类更容易理解并帮助我们的思维过程。一台机器不在乎你所谓的步骤。在这种情况下,您应该尽一切努力正确使用关键字。


-1
投票

道歉复活的道歉......

我可能已经和:

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

我想在每个Given中保留至少一个WhenThenScenario - 不要忘记你也可以使用AndBut(并不是说它们与这种情况特别相关)。你甚至可以用*制作一个子弹点样式列表。


-1
投票

我会说:

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

-1
投票

我倾向于将Given视为传统先决条件的等价物。当作为测试动作的等价物时。然后作为预期结果的等价物。

因此,如果没有前置条件,我会忽略给定,只关注When和Then:

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

Specflow将允许您使用Given或When,但Visual Studio还允许您编写1000个行长的单个类。仅仅因为两者都是可能的,并不意味着两者都是“正确的”。


-2
投票

你不需要什么时候。我喜欢想像Given / When / Then这样的关键词

给定 - 这是一个准备步骤,做任何你需要能够执行测试的事情 - 这应该是你的测试将验证的动作。然后 - 这应该是您根据在When步骤中执行的操作验证测试的位置。

如前所述,它们只会影响执行顺序。

© www.soinside.com 2019 - 2024. All rights reserved.