- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Specification By Example book说明可以使用示例指定非功能性需求(通常称为 NFR)。
一位同事还告诉我,非功能性需求可以使用以下格式使用 SBE 故事来指定:
Scenario: ...
Given ...
When ...
Then ...
这是从 wikipedia 中获取的功能性和非功能性需求示例:
A system may be required to present the user with a display of the number of records in a database. This is a functional requirement. How up-to-date this number needs to be is a non-functional requirement. If the number needs to be updated in real time, the system architects must ensure that the system is capable of updating the displayed record count within an acceptably short interval of the number of records changing.
问题 1:非功能性需求是否可以指定为故事?
问题 2:是否应将非功能性需求指定为故事?
问题 3:故事会是什么样子?
最佳答案
我将通过示例给出答案。
假设您的团队已经实现了以下故事:
Scenario: User can log in to the website
Given I have entered my login credentials
When I submit these credentials
Then I get navigated to my home screen
回答问题 1) - 能否将非功能性需求指定为故事?
项目利益相关者给了你一个 NFR,上面写着:
For all website actions, a user should wait no longer that five seconds for a response.
您可以为此创建一个故事,如下所示:
Scenario: User can log in to the website in a timely fashion
Given I have entered my login credentials
When I submit these credentials
Then I get navigated to my home screen
And I should have to wait no longer than the maximum acceptable wait time
请注意,我没有强制指定“5”秒,而是保持场景声明性,而是指定“等待不超过可接受的最长等待时间”。
回答问题 2) - 是否应将非功能性需求指定为故事?
NFR 应该绝对被指定为一个故事。
创建一个故事可以估计这个任务的复杂性(这样团队就可以确定它相对于过去故事的难度),而且团队可以将故事分解成任务(可以按小时来估计,所以如果团队可以在当前的 sprint 中实现这个故事,你可以算出)。
因此,在我设计的示例中,团队可能已经实现了登录代码,但他们随后会确定如何实现登录时间不得超过 5 秒的要求。您还将允许能够探索这个问题的逆过程,即如果登录时间超过五秒会发生什么?例如
Scenario: User encounters a delay when logging in to the website
Given I have entered my login credentials
When I submit these credentials
And I wait for over the the maximum acceptable wait time
Then the Production team is informed
And the problem is logged
And I get navigated to my home screen
最后,关于问题 3) - 这个故事会是什么样子?
我已经在答案 1) 和 2) 中详细说明了故事的样子
关于bdd - 如何记录故事/功能中的非功能性需求 (NFR)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19312515/
这纯粹是一个练习,但给出以下代码: var someCondition = (....); var res = []; if (someCondition) { res.push("A"); }
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 6年前关闭。
Heinrich Apfelmus慷慨地插话this问题。我曾考虑过使用 accumB作为解决方案,但认为会出现类型错误。无论如何,在尝试了他的建议之后,我确实收到了类型错误。 let bGameSt
我需要访问 React 组件中的 window 对象以从查询字符串中获取某些内容。这就是我的组件的样子: export function MyComponent() { return (
我如何声明接受数字和数字列表的函数,如果列表中没有这样的数字则返回 NONE,否则返回列表选项(Haskell 中的“Maybe”)没有这个数字?如果有多个这样的数字,函数必须只删除其中的第一个。 a
类型的值如何: type Tree = | Node of int * Tree list 有一个以函数方式生成的引用自身的值? 对于合适的 Tree 定义,结果值应等于以下 Python 代
我一直在脚本(数据科学工作)中使用 F# 并开发与 C# 一起使用的类库。在后一种情况下,我一直在使用纯功能代码创建模块。 如果我想开始完全在 F# 中开发大型应用程序,我不确定我会如何构建它。我发现
对于用函数式语言创建 GUI 的方法已经有很多研究。有用于推/拉 FRP、基于箭头的 FRP 以及可能还有其他高级研究的库。 Many people似乎同意这是更原生的方式,但几乎每个人似乎都在使用命
我现在正在 Traveler 中尝试处理独立于玩家的游戏状态更新。作为引用,该项目是 here (开发分支是与此问题相关的分支)。 Libraries/Universe/GameState.hs 有一
这里有 2 个对象: object1: { email: somevalue url: somevalue description: somevalue } object2:
我正在使用 Keras 函数式 API 创建一个神经网络,它将词嵌入层作为句子分类任务的输入。但是我的代码在连接输入层和嵌入层的开始就中断了。按照 https://medium.com/tensorf
为什么不能编译? #include #include class A { A() { typedef boost::function FunctionCall;
我很清楚为什么我们需要函数式 setState 以及它是如何工作的,例如 this.setState((prevState, props) => ...); 您可以像上面那样获取先前的状态作为参数。
我最近一直在研究使用 Javascript 进行的函数式编程,对此我是个菜鸟。 在编写一些“map”、“reduce”和“find”函数时,我发现从 JS 1.5 版开始,这些函数已经可用(参见 ht
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我正在寻找一种用于 HTML 表管理的一体化解决方案。我想要完成的是为用户提供简单的表管理,该管理将提供按列排序、过滤数据(每列或每表全局)、移动列(更改其顺序)和切换列可见性。 基本上是 ExtJS
我不明白其中的错误。我正在尝试使用 std::function 将成员函数作为参数传递。除了第 4 种也是最后一种情况外,它工作正常。 void window::newGame() { } //sho
我是 Scala 和函数式编程的初学者,我有一些算法代码可能有一些味道,因为它使用了可变性,但也有一个错误,部分原因是它是可变的。我有两组二维点。第 1 组中的每个点都与第 2 组中最近的点相关联(给
我正在尝试使用 Keras 实现带有负采样的 Word2Vec CBOW,遵循发现的代码 here : EMBEDDING_DIM = 100 sentences = SentencesIterato
我绝对为此失去了理智。我不明白为什么会这样。每次我运行此测试时,该对象都会保存到正常的非测试数据库中。然而,测试结束时的两个断言无论如何都失败了,说他们无法在数据库中找到任何用户,即使每次测试运行时我
我是一名优秀的程序员,十分优秀!