2017-06-18 117 views
1

我知道场景场景大纲here之间的区别。“情景”在黄瓜“场景大纲”中的优势是什么?

Scenario states一般测试点以更抽象的方式。同时, scenario outline便于用几个例子来执行场景。

所以,我们通常会写下如下的feature file。它从scenario开始,然后通过scenario outline完成。

特点:您的功能 的标题我想用这个模板我的特征文件

Scenario: Eating 
    Given I have "N" cucumbers 
    When I eat "K" ones of them 
    Then I will have "N-K" ones 

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

    Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 

但是,并不意味着多大意义了我。我相信情景大纲更容易理解,因此不需要表达场景测试的一般观点。

你同意我吗?

我的意思是,这个场景做什么,哪个场景大纲不能做?

我建议去用简单的一个

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

    Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 

我知道它会导致一个错误,但我认为它会更好,如果黄瓜队完全删除场景的概念,而是支持方案大纲更多。

回答

0

这不是关于对方能做什么,而是让情景尽可能简单易懂。

如果仅仅是一个例子,它简化和不使用的示例表,它可以更容易阅读和理解

0

考虑,那么,什么时候都可以在场景和情景大纲使用步骤以及。 DataTable的情况也是如此(这又是一个步骤约束)

一方面,Scenario被引入以事务方式执行这些步骤并将被执行一次。但是,如果提供了DataTable,则可以使用Java代码来相应地处理数据。

另一方面,场景轮廓为您提供了灵活性,只能从基于小黄瓜的特征文件执行循环。

其他差异: - 在一次执行中,场景只执行一次,而场景大纲(对于类似数据跟踪)可以根据示例中提供的数据执行多次。 - 场景大纲提供了一种更简洁的方法来保持特性文件的小巧和可读性,而不是反复编写类似的场景。

此外,使用场景大纲作为场景的替代,因为它只是提供了一个额外的循环功能。

注意:我们应该保留更少的步骤数,因为更多的步骤将需要更多的时间来执行测试用例。

0

场景优于场景。

  1. 无需有示例部分。如果您使用轮廓,即使您没有使用 任何参数,也必须使用 来使用带有表格的示例部分。
  2. 我需要传递整个表格作为输入的一些场景。使用轮廓时不容易将整个表作为输入。
  3. 无需定义参数名称并在表格中保留相同的参数及其值。
  4. 为一个故事和输出表定义输入表有点困难,耗时且令人困惑。
1

你不会错的。

你正在做的是遵循反模式,使你的步骤定义更简洁。在这一过程中,你是

1)显着降低,你的步骤定义沟通

2)提高运行时(例如表鼓励运行的例子很多的信息量。在你的表,你有两行做完全同样的事情)

3)为该场景的所有未来执行创建维护问题。

在Cucumber中使用示例表的唯一原因是使您更容易与利益相关者进行协作。在这里,我们使用概述和示例对您想要在特定领域实现的内容进行粗略总结。一旦你有了这些,你应该提取个别场景来探索和记录每个例子所代表的特定规则和策略。因此,作为实施过程的一部分,您正在改善轮廓场景到质量更好的个人情景

如果我们采取一个更好的例子表

user   | password | result 
not_registered | goodpass | user not found 
registered  | badpass | bad password 
registered  | goodpass | logged in 

那么我们是不是让事情变得更好打破这一成单独的场景在一个表中有很多原因。

首先,我们可以更详细地记录每项政策。如果我们把注册badpass错误的密码例子,我们可以有

Scenario: Login with bad password 
    Given I am registered 
    When I login with a bad password 
    Then I should see a bad password error 

现在我们可能会决定,显示了错误的密码错误是不是一个好主意,因为它可以帮助人们通过确认注册帐户存在破解的帐户。所以我们也会改善这种情况

Scenario: Login with bad password (show login error only to prevent account identification) 
    Given I am registered 
    When I login with a bad password 
    Then I should see a bad login error 

个别场景提供了添加文档和使用不同步骤的机会。更新示例表通信少得多(你必须猜测为什么密码错误坏了登录)

registered  | badpass | bad login 

其他原因不使用例如表是

  1. 步骤定义是非常非常难写。
  2. 的步骤定义更难重用
  3. 示例值在表是容易出错,如果我改变24至23被予固定一个错字或改变基本的业务规则
  4. 示例值几乎总是重复次数值在代码库
  5. 示例值需要更新时的代码库的变化

让我们简单了解一下,在5

说我们有一个弱口令“12345”和trong密码re432uee8l。

如果我们使用示例表,我们最终会在表中使用硬编码密码,例如,

registered | re432uee8l | logged in 

现在,如果我们改变我们的业务规则地说,我们强大的密码必须在它的象征,我们必须改变我们的功能集每个强密码的例子。

已经用黄瓜从一开始我强烈建议

实现的情况下(即那些你应该每一个“推后运行|构建| deploy`应该没有例子,也没有轮廓)。如果您正在运行大纲和示例,那么您正在运行的方案尚未完成。

相关问题