我在使用硒时遇到一些困难(用户管理)。这让我开始思考应该关注多少场景/步骤。例如,我正在测试以用户身份添加帖子。
用户是否应该步骤(给定现有用户)应该点击页面进行注册,然后添加帖子?或者我应该通过模型创建用户并单击帖子添加?
不要羞耻只是将链接粘贴到简短的解释文章;)
答案 0 :(得分:1)
我倾向于遵循黄瓜书中推荐的方法(我不必亲自动手)。通常,它建议使用直接模型访问来执行不是测试焦点的设置
e.g。对于“添加项目到我的购物篮”测试,我会直接操作模型来创建登录用户和要添加的产品,然后使用浏览器集成来执行正在测试的操作,在这种情况下,点击“添加到购物篮”按钮并检查购物篮内容。
如果我实际测试登录功能,我只会开始点击Capybara / Webrat等登录页面。
答案 1 :(得分:0)
找到对发布文章的用户感兴趣的人,并与他们交谈有关这些方案。他们所关注的焦点可能是您应该关注的焦点。
例如,他们可能会说,
Given there's a user who likes horses
And they're already logged in
When they add a post
Then it should be visible to other people who like horses
等
语言非常非正式。我鼓励你尽可能地保持他们的言论。商务人士肯定不会在点击帖子,创建用户模型等方面进行讨论。您可以使下面的代码执行任何必要的操作,以使您的业务方案正常工作。
如果某事是“给定的”,那么做任何容易使其发挥作用的事情。也许这是黑客数据或敲定用户模型;也许那就是点击一个页面。如果你弄错了,你将能够在不改变方案的情况下进行更改,所以尝试任何简单的方法都应该没问题。自动化UI很慢,因此您最终可能决定使用数据或模型,但如果您稍后再这样做,您将更好地了解数据/模型的外观。
“When”是导致您感兴趣的行为的事件 - 在本例中,“当他们添加帖子时”。您应该始终从最高级别执行此操作 - 有些人喜欢自动化UI,其他人喜欢控制器,但这基本上是您的方案的核心,所以您不应该在这里黑客攻击数据。
Here's an article I wrote关于使用BDD进行我认为对您有用的对话。您可能也喜欢这个,"Step Away from the Tools"或this rant I wrote on StackOverflow一段时间。
关于BDD最重要的事情是与人交谈。请尝试这样做,不要让工具阻止你这样做!