- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
英语可能含糊不清,在我看来,在使用 Gherkin 的方法论中有一个假设,即任何会说一定程度英语的人都可以编写和理解测试用例,甚至在编写任何代码之前也是如此。
鉴于以下需要自动化的简单测试场景,该方法如何指导您工作:
在图书馆应用程序中,要将一本书添加到图书馆,用户单击“添加”,弹出“图书信息”对话框,用户需要填写书名等,然后单击“确定”。
假设 QA 人员写下以下内容:
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
Then the Book Info dialog is displayed
够简单吗?这是一个好的测试吗?我想我会说英语,但我听不懂。
对话框中的字段应该是空的,也许某些字段应该有一些默认值或初始值。也许测试人员期望“然后显示图书信息对话框”的实现来确保所有这些,但是实现者知道吗?这是如何传达的?
也许测试应该写成
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
Then the Book Info dialog is displayed and all the fields are empty
在单击“添加”和显示对话框之间可能需要几秒钟。因此测试可能会失败,因为如果对话框启动时实现检查得太早,或者没有等待足够长的时间让对话框显示,并且测试失败。
进行手动测试的人不需要亲自参与该问题,除非对话框出现的时间太长。所以上面就是这个人会如何编写测试(所以这里的重点是测试人员需要足够聪明以考虑到这一点,或者一些开发人员需要解释这一点,或者他们只是在测试失败后修复它) .
不知何故,这个简单的 Action 需要更多的信息……编写测试的人和执行测试 Action 的人之间什么时候进行沟通?
也许测试应该写成
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
Then the Book Info dialog is displayed within a couple of seconds and all the fields are empty
或者应该写成:
Scenario: clicking the Add button
Given a user who is already logged in to the application
When the user clicks the Add button
And the user waits a couple of seconds
Then the Book Info dialog is displayed and all the fields are empty
用英语写测试的人是否期望
最佳答案
在一般情况下,我赞成(更接近于)第二种。
如果您通过添加假设来用重复的“噪音”污染您的场景,那么您就失去了 BDD 旨在实现的简洁、有针对性的理想。也很难知道在哪里停下来。
也就是说,如果你的故事/场景围绕这些有特定的要求,或者即使你期望它对这些有影响,也没有什么可以阻止添加附加子句,例如 并且所有输入字段都是空的
。
请记住,如果您使用的是 Agile methodology喜欢Scrum ,您将有一个单独的完成定义,尽管它更像业务或流程,但可以包含接受故事的“全局”要求。这些可能包括测试覆盖率级别或性能要求……可以说与您在此处讨论的内容足够接近。
关于java - Gherkin - 你如何用英语编写明确的测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298641/
我正在尝试运行注册示例,但卡住了 Scenario: New user registration; poor password Given I am on "/register" When I
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
嗨,我正在尝试用小 cucumber 语法编写表达一组要求,但它需要大量重复。我看到here我可以使用占位符,这对于我的任务来说是完美的,但是我的 Give 和 then 中的一些数据是集合。我将如何
尽管我已经编写单元测试 20 多年了,但我对 Gherkin 还很陌生,并且接到的任务是为 .feature 文件实现一个故事,该文件可简化为如下内容: Scenario: a Given t
我正在使用 Behat 等工具定义要在 BDD 工作流程中使用的功能。或 Cucumber , 使用 Gherkin语。这是迄今为止的特征定义: Feature: Save Resource
我管理着一个测试团队,开发人员希望我们记录的测试场景能够创建自动化回归测试(基于网络的工具)。我们的场景是用小 cucumber 格式(Given/When/Then)编写的,但我想知道需要多少细节来
我想以 Robot Framework 中可能最“优雅”的方式将多个参数传递给我的测试用例。许多框架中使用的场景大纲允许用表中的值替换变量/关键字。表中的每一行都被认为是一个场景。 Robot Fra
英语可能含糊不清,在我看来,在使用 Gherkin 的方法论中有一个假设,即任何会说一定程度英语的人都可以编写和理解测试用例,甚至在编写任何代码之前也是如此。 鉴于以下需要自动化的简单测试场景,该方法
在编写验证输入表单上的信息的 BDD 场景时,您将如何列出规则。 选项是: 1) 每个规则一个场景 2)场景大纲,每个领域和规则的例子 我们如何说某些不在特定字符集中的无效内容,例如: 鉴于我输入了一
我一直在使用 SpecFlow 进行验收测试。这使用 Gherkin(DSL Cucumber 使用)。它包括一个有趣的功能,称为“标签”。我可以看到其使用的实用性,但我不确定在 BDD 中使用标签的
在 Gherkin 语法中(Cucumber 和 SpecFlow 使用的,我可以通过在行前面加上“#”前缀来注释掉该行 有什么办法可以阻止多行注释吗? 最佳答案 Gherkin 不支持它,因此您必须
我有一些 SpecFlow 功能(使用 Gherkin 语法),我想暂时禁用该功能以防止其测试运行? 是否有一个属性可以用来标记该功能来执行此操作?我猜测适用于 Cucumber 的东西也可能适用于
如果我的功能定义中有这样的子句: Then I can see the "/relative-url-path" page Cucumber会强加这个方法: @When("^I can see the
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它. 关闭 4 年前。 Improve
我正在用 Cucumber Java 做一个简单的 rest api 测试。响应采用 Json 格式。 我写的小 cucumber 特征文件看起来像: Scenario: Given I
我使用 IntelliJ 在 IDE 中用 Java 编写了 Cucumber 功能文件,即 *.feature 文件和相应的步骤定义文件。用户体验非常好,IDE 打开其 IntelliSense,显
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答它。 关闭 4 年前
有谁知道实现这一目标的方法,或者他们认为这是一个好主意。在 Gherkin 中使用 OR 样式语法以减少重复但保持人类可读性(希望如此)。我正在考虑使用多个 OR 语句的每个组合扩展子句组合的情况。例
我正在尝试创建一个场景,其中两个用户将访问该应用程序,因此当一个用户(或多或少)将其放在购物车上时,我可以模拟售罄的产品。 例如。Given user1 access websiteThen user
我对小 cucumber 还很陌生,正在为我的第一个项目而苦苦挣扎。基本上,我们有很多输入参数,这些参数是一个精美的计算器所需要的,可以帮助人们确定他们是否能够负担抵押贷款。 我最好是专注于输出的一部
我是一名优秀的程序员,十分优秀!