首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个BDD规范有什么问题吗?

这个BDD规范有什么问题吗?
EN

Stack Overflow用户
提问于 2014-12-11 11:26:44
回答 2查看 121关注 0票数 1

我对行为驱动设计(,BDD)很陌生,所以我想要反馈我是否正确地应用了它。

我即将开发的特性从数据存储库导出Twitter句柄("authors")列表,并将其作为CSV电子邮件附件发送给请求者。数据存储库是Google的数据存储库。

回顾Dan对行为驱动测试的主要描述:http://dannorth.net/introducing-bdd/,下面是我如何指定测试的方法:

标题:分析师出口作者

作为分析师

我想出口作者

所以我可以分析他们在另一个系统里谈论的内容。

场景1:段包含作者,导出可以发送

给定段包含作者

并且用户已经在他们的用户配置文件中提供了他们的电子邮件地址。

当用户单击该段的导出时

然后确保用户将作者作为电子邮件的CSV附件接收。

场景2:段包含作者,但导出不能发送

给定段包含作者

并且用户没有在其用户配置文件中提供他们的电子邮件地址。

当用户单击该段的导出时

然后提醒用户首先在用户配置文件中设置他们的电子邮件地址。

场景3:段不包含作者

由于段中不包含作者

当用户单击该段的导出时

然后阻止用户单击导出按钮。

并显示一条消息,即段没有要导出的作者。

几个问题:

  1. 我还应该考虑哪些其他情况,或者我对这个故事的范围太窄了?
  2. 场景3应该是另一个故事的一部分吗?丹·诺斯说,场景应该是相同的事件。但是,用户体验可能会导致用户无法单击导出按钮,因为它是禁用的。如果我以不同的方式编写事件,使其适合所有场景,例如,“当用户去导出段时”。
  3. 还有什么能使这成为一个更好的BDD测试吗?
  4. 对于如何实现这样的测试,有什么建议取决于其他系统,如、数据存储和电子邮件系统?我应该给数据存储器留个存根吗?如何测试是否收到了电子邮件附件?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-13 23:35:38

每个故事一个事件?

我们现在可能会说,这些场景应该具有相同的功能;在这种情况下,可以通过电子邮件导出作者。它们中的大多数都会有一个执行导出的事件,但与该功能相关的任何其他内容也属于它。

我通常会使默认情况成功,即:

当用户导出该段时

并在失败时使用“尝试”:

当用户试图导出段时

但是,在禁用导出按钮的情况下,可能还会发生其他事情。用户看到没有作者的消息的触发因素是什么?很可能是这样的:

考虑到没有一个片段的作者 当用户查看该段时 然后,他们应该被告知,没有作者为该部分。

如何改进这些场景?

避免将UI域与Twitter应用程序域混为一谈。谈论“当用户导出该段时”,而不是单击按钮。也许有一天,这将是一个拖落在触摸屏上,而不是一个按钮点击。如果您决定这样做更好,而今天是您可以改变它,您的方案将仍然有效。除了按钮-点击你的场景真的很好,当然比平均水平要好。

在BDD中,我们尽量避免使用“测试”这个词,除非我们真的在谈论测试,而这些只是一些场景或例子,它们恰好提供了测试作为一个很好的副产品。将它们称为示例或场景,您会发现与业务人员讨论这个问题更容易,并且自己也能想到更多的例子。我还编写了用于发现缺失场景的关于我使用的几种模式的博客文章,这可能会对您有所帮助。测试人员非常擅长于发现这些信息,因此,如果可以的话,请将其中一个引入到对话中。如果你不能,试着找另一个分析师或商业专家戴上这顶帽子。

一个故事中有多少个场景?

一个故事只是一个更快反馈功能的片段,你可能在其中包含的场景的数量很大程度上是任意的,并且取决于团队找到这些东西代码的容易程度。专注于在sprint结束时从涉众那里获得反馈,并使故事小到可以在内部快速获得反馈,并且足够大,以便您可以向涉众展示一些有趣的东西。我知道一些团队会对整个特性进行编码(并且乐于在部分过程中展示),也知道团队会把每个场景作为一个单独的故事,以及在两者之间做一些事情的团队(例如,所有成功的导出,然后是所有的边缘案例)。所有这些方法都是有效的。

如何包含依赖系统?

您可以模拟这些(编写自己的存根系统,或者使用一个模拟框架,或者那些不幸的人使用SOAP、SOAP等)。或者你可以使用真正的系统。在您的情况下,我会尝试部署到真实系统的测试版本,并设置一个测试电子邮件域,我可以发送电子邮件(或存根,如上面)。有很多方法可以通过API访问电子邮件收件箱,或者您可以自动将它们导出到文件或数据库,等等。

尽你所能获得代码的快速反馈,记住任何你不自动测试的系统都需要手动验证,像电子邮件网关这样的东西不太可能改变(因此不可能有错误),而且BDD至少不能代替手动测试一次。

票数 1
EN

Stack Overflow用户

发布于 2014-12-24 01:39:51

你给出的场景做了两件事

  1. 探索快乐之路:作者可以被导出
  2. 开始探索悲伤的道路:作者们由于各种原因不能被导出

一般来说,我会集中精力使快乐的道路尽可能干净和简单,在处理悲伤的道路之前,否则你会立刻做很多事情。

目前,您正在一次做很多事情,并且在您的场景中有许多异常。让我们来看看其中的几个:

  1. 您已经在您的场景中讨论过“段”,但我不知道段是什么,也不知道为什么应该有作者。这听起来像是一个实现细节,不属于它。
  2. 你已经明确地说,报告应该是一个csv发送到一个电子邮件地址。你为什么选择这个机制?让分析师下载CSV不是更容易吗?

我的建议是,你检查快乐的道路,用一个细齿的梳子试着消除所有这些异常,这样你就可以了解问题的本质了。这最终可能会变得很简单

代码语言:javascript
复制
Given there are some authors
When I ask for an export of authors
Then I should get a list of authors

然后,您可以添加特定于上下文的内容。让我们说,只有分析师才能做到这一点。那我们就可以

代码语言:javascript
复制
Given I am an analyst
And their are some authors
When ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27421753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档