使用SpecFlow进行端到端回归测试

时间:2011-12-13 12:36:08

标签: automated-tests bdd specflow acceptance-testing gherkin

我们正在使用BDD并使用SpecFlow来推动我们的开发(ATDD)。

我们的质量保证团队希望定义他们自己的'端到端回归测试(在Gherkin / SpecFlow中)并重新使用我们已经定义的步骤。

(请注意 - 我知道这不是一个很好的例子,但它应该提供足够的细节)

测试可能包括..

  1. 登录
  2. 搜索产品
  3. 选择要购买的产品
  4. 创建订单
  5. 选择送货方式。
  6. 提交订单。
  7. 取消订单。
  8. 这会暗示像......这样的场景。

    鉴于我已登录
    当我搜索产品时 我选择要购买的产品
    我创建了一个订单 我选择交货选项
    我提交订单
    我取消订单
    那么?? !!

    这显然是错误的,因为我们没有在每一步检查输出。

    因此可以解析为一系列场景:

    情景1:
    鉴于我已登录
    当我搜索产品时 然后我看到了产品清单

    情景2:
    当我选择购买产品时 然后我可以创建一个订单

    情景3:
    当我创建订单时 我选择交货选项
    然后我可以提交订单

    等等

    这个问题的主要问题是似乎无法指定运行场景的顺序/顺序(nUnit的特征?)。因为场景之间存在依赖关系(它们未设置为已知起点),所以它们必须按顺序运行。

    我的问题是:

    a)我们是否试图将方形钉固定在圆孔中?!

    b)有没有人知道是否有办法以这种方式使用SpecFlow / Gherkin?

    c)或者有人知道有哪些替代方案吗?

    非常感谢!

1 个答案:

答案 0 :(得分:11)

我会说你在错误的抽象层面上编写你的场景。但这取决于你想用它们做什么;

如果你想编写测试脚本,那么你就是在正确的轨道上......但是在第一种情况下(长脚本)将非常脆弱而且第二种情况(几种情况下)维护它将是一场噩梦场景)需要确保一定的执行顺序。他们沮丧并被认为是反模式。

我建议您合并您正在编写的ATDD测试并与测试部门交谈,以了解他们对此事的看法,并包括他们确保系统经过全面测试所需的测试用例。谁知道?你甚至可以从彼此那里学到一些东西:P

当你写下那些“规格”(我宁愿称之为)时,你会把它们写在更高的层次上。所以不要写:

Given I am logged in
When I Search for a product
  And I Select a product to buy
  And I Create an order
  And I Select delivery option
  And I Submit the order
你写了像

这样的东西
When I submit an order for product 'Canned beans'

在该步骤后面的步骤定义中,您执行所有自动化(登录,浏览到产品页面,选择交付选项,提交订单)。

所有这些都可以在这些关于如何编写可维护的UI自动化测试的优秀文章中阅读:

我希望这会有所帮助