Automated tests 使用SpecFlow进行端到端回归测试
我们正在使用BDD和SpecFlow来推动我们的开发(ATDD) 我们的QA团队希望定义他们自己的“端到端回归测试”(在Gherkin/SpecFlow中),并重复使用我们已经定义的步骤 (请注意——我知道这不是一个很好的例子,但应该提供足够的细节) 测试可能包括Automated tests 使用SpecFlow进行端到端回归测试,automated-tests,bdd,specflow,acceptance-testing,gherkin,Automated Tests,Bdd,Specflow,Acceptance Testing,Gherkin,我们正在使用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进行回归测试。正如官方文件所说,它应该用于验收测试。