Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Automated tests 使用SpecFlow进行端到端回归测试_Automated Tests_Bdd_Specflow_Acceptance Testing_Gherkin - Fatal编程技术网

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

Automated tests 使用SpecFlow进行端到端回归测试,automated-tests,bdd,specflow,acceptance-testing,gherkin,Automated Tests,Bdd,Specflow,Acceptance Testing,Gherkin,我们正在使用BDD和SpecFlow来推动我们的开发(ATDD) 我们的QA团队希望定义他们自己的“端到端回归测试”(在Gherkin/SpecFlow中),并重复使用我们已经定义的步骤 (请注意——我知道这不是一个很好的例子,但应该提供足够的细节) 测试可能包括 登录 搜索产品 选择要购买的产品 创建订单 选择交付选项 提交订单 取消订单 这将暗示一种情况,如 假设我已登录 当我搜索产品时 我选择了要购买的产品 我创建了一个订单 我选择了送货选项 我提交订单 我取消了订单 那么 这显然是错误的

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

我们的QA团队希望定义他们自己的“端到端回归测试”(在Gherkin/SpecFlow中),并重复使用我们已经定义的步骤

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

测试可能包括

  • 登录
  • 搜索产品
  • 选择要购买的产品
  • 创建订单
  • 选择交付选项
  • 提交订单
  • 取消订单 这将暗示一种情况,如

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

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

    因此,这可以作为一系列场景来解决:

    情景1:
    假设我已登录
    当我搜索产品时
    然后我看到一个产品列表

    场景2:
    当我选择要购买的产品时
    然后我可以创建订单

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

    等等

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

    我的问题是:

    a) 我们是想把一个方形的钉子装进一个圆形的洞里吗

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

    c) 或者有人知道还有什么替代方案吗?


    非常感谢

    我想说,您在错误的抽象级别上编写场景。但这取决于你想用它们做什么

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

    我建议您合并您正在编写的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自动化测试的优秀文章中可以阅读到所有这些内容:


    我希望这有帮助

    非常感谢您的回答Marcus和您列出的文章-非常有用!关于考试的问题,我现在清楚了一点。也就是说,“我们是否有能力将已编写的场景链接在一起,以便按顺序运行,以执行端到端系统测试?”例如,登录,然后浏览产品,然后提交订单,然后注册帐户,然后编辑帐户,然后搜索订单,然后查看订单,然后取消订单,等等。因此,能够链接场景将非常有用当…当…当。。不幸的是,似乎没有办法按特定顺序运行场景。更新:如果场景名为“001做这个”、“002做那个”等,则它们按该顺序运行。感觉有点不对劲,但就我们的目的而言,在找到更好的解决方案之前,这将一直有效。我坚决建议不要编写依赖于顺序的场景。这将很难维护…我想知道为什么要使用BDD进行回归测试。正如官方文件所说,它应该用于验收测试。