我们正在使用BDD并使用SpecFlow来推动我们的开发(ATDD)。
我们的质量保证团队希望定义他们自己的'端到端回归测试(在Gherkin / SpecFlow中)并重新使用我们已经定义的步骤。
(请注意 - 我知道这不是一个很好的例子,但它应该提供足够的细节)
测试可能包括..
这会暗示像......这样的场景。
鉴于我已登录
当我搜索产品时
我选择要购买的产品
我创建了一个订单
我选择交货选项
我提交订单
我取消订单
那么?? !!
这显然是错误的,因为我们没有在每一步检查输出。
因此可以解析为一系列场景:
情景1:
鉴于我已登录
当我搜索产品时
然后我看到了产品清单
情景2:
当我选择购买产品时
然后我可以创建一个订单
情景3:
当我创建订单时
我选择交货选项
然后我可以提交订单
等等
这个问题的主要问题是似乎无法指定运行场景的顺序/顺序(nUnit的特征?)。因为场景之间存在依赖关系(它们未设置为已知起点),所以它们必须按顺序运行。
我的问题是:
a)我们是否试图将方形钉固定在圆孔中?!
b)有没有人知道是否有办法以这种方式使用SpecFlow / Gherkin?
c)或者有人知道有哪些替代方案吗?
非常感谢!
答案 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自动化测试的优秀文章中阅读:
我希望这会有所帮助