我对行为驱动设计(,BDD)很陌生,所以我想要反馈我是否正确地应用了它。
我即将开发的特性从数据存储库导出Twitter句柄("authors")列表,并将其作为CSV电子邮件附件发送给请求者。数据存储库是Google的数据存储库。
回顾Dan对行为驱动测试的主要描述:http://dannorth.net/introducing-bdd/,下面是我如何指定测试的方法:
标题:分析师出口作者
作为分析师
我想出口作者
所以我可以分析他们在另一个系统里谈论的内容。
场景1:段包含作者,导出可以发送
给定段包含作者
并且用户已经在他们的用户配置文件中提供了他们的电子邮件地址。
当用户单击该段的导出时
然后确保用户将作者作为电子邮件的CSV附件接收。
场景2:段包含作者,但导出不能发送
给定段包含作者
并且用户没有在其用户配置文件中提供他们的电子邮件地址。
当用户单击该段的导出时
然后提醒用户首先在用户配置文件中设置他们的电子邮件地址。
场景3:段不包含作者
由于段中不包含作者
当用户单击该段的导出时
然后阻止用户单击导出按钮。
并显示一条消息,即段没有要导出的作者。
几个问题:
发布于 2014-12-13 23:35:38
每个故事一个事件?
我们现在可能会说,这些场景应该具有相同的功能;在这种情况下,可以通过电子邮件导出作者。它们中的大多数都会有一个执行导出的事件,但与该功能相关的任何其他内容也属于它。
我通常会使默认情况成功,即:
当用户导出该段时
并在失败时使用“尝试”:
当用户试图导出段时
但是,在禁用导出按钮的情况下,可能还会发生其他事情。用户看到没有作者的消息的触发因素是什么?很可能是这样的:
考虑到没有一个片段的作者 当用户查看该段时 然后,他们应该被告知,没有作者为该部分。
如何改进这些场景?
避免将UI域与Twitter应用程序域混为一谈。谈论“当用户导出该段时”,而不是单击按钮。也许有一天,这将是一个拖落在触摸屏上,而不是一个按钮点击。如果您决定这样做更好,而今天是您可以改变它,您的方案将仍然有效。除了按钮-点击你的场景真的很好,当然比平均水平要好。
在BDD中,我们尽量避免使用“测试”这个词,除非我们真的在谈论测试,而这些只是一些场景或例子,它们恰好提供了测试作为一个很好的副产品。将它们称为示例或场景,您会发现与业务人员讨论这个问题更容易,并且自己也能想到更多的例子。我还编写了用于发现缺失场景的关于我使用的几种模式的博客文章,这可能会对您有所帮助。测试人员非常擅长于发现这些信息,因此,如果可以的话,请将其中一个引入到对话中。如果你不能,试着找另一个分析师或商业专家戴上这顶帽子。
一个故事中有多少个场景?
一个故事只是一个更快反馈功能的片段,你可能在其中包含的场景的数量很大程度上是任意的,并且取决于团队找到这些东西代码的容易程度。专注于在sprint结束时从涉众那里获得反馈,并使故事小到可以在内部快速获得反馈,并且足够大,以便您可以向涉众展示一些有趣的东西。我知道一些团队会对整个特性进行编码(并且乐于在部分过程中展示),也知道团队会把每个场景作为一个单独的故事,以及在两者之间做一些事情的团队(例如,所有成功的导出,然后是所有的边缘案例)。所有这些方法都是有效的。
如何包含依赖系统?
您可以模拟这些(编写自己的存根系统,或者使用一个模拟框架,或者那些不幸的人使用SOAP、SOAP等)。或者你可以使用真正的系统。在您的情况下,我会尝试部署到真实系统的测试版本,并设置一个测试电子邮件域,我可以发送电子邮件(或存根,如上面)。有很多方法可以通过API访问电子邮件收件箱,或者您可以自动将它们导出到文件或数据库,等等。
尽你所能获得代码的快速反馈,记住任何你不自动测试的系统都需要手动验证,像电子邮件网关这样的东西不太可能改变(因此不可能有错误),而且BDD至少不能代替手动测试一次。
发布于 2014-12-24 01:39:51
你给出的场景做了两件事
一般来说,我会集中精力使快乐的道路尽可能干净和简单,在处理悲伤的道路之前,否则你会立刻做很多事情。
目前,您正在一次做很多事情,并且在您的场景中有许多异常。让我们来看看其中的几个:
我的建议是,你检查快乐的道路,用一个细齿的梳子试着消除所有这些异常,这样你就可以了解问题的本质了。这最终可能会变得很简单
Given there are some authors
When I ask for an export of authors
Then I should get a list of authors然后,您可以添加特定于上下文的内容。让我们说,只有分析师才能做到这一点。那我们就可以
Given I am an analyst
And their are some authors
When ...https://stackoverflow.com/questions/27421753
复制相似问题