我们即将决定为UI自动化框架选择最佳方法。
我们有两个选择:
我们处于危急的境地,决定哪种技术对我们的项目更有利。
我们的项目是一个巨大的应用程序,有8个模块,并且与第三方工具集成很多。
提前感谢所有的想法。
答案 0 :(得分:8)
BDD讲述的是一段代码,一个应用程序或一个系统应该如何表现,然后通常使用BDD工具和/或自动化框架捕获这些示例。很多人只是通过在维基上捕获示例来获得价值。在人们转移到工具之前有four things I like to see in place,特别是如果您要在应用程序级别执行此操作:
如果您没有这些,请非常谨慎地对待自动化。如果您没有捕捉到真正的对话,我建议您不要使用像Cucumber和JBehave这样的英语框架。连接英语G / W / T的额外开销,以及缺少英语重构工具,意味着如果您的企业参与阅读或编写方案,它只值得使用这些。
我喜欢使用一点DSL like this one,您可以在TestNG中创建,就像我在NUnit中完成它一样。只需将您的顾虑分组到Given / When / Then步骤中,并且不要害怕重构。它比英语工具更容易维护。缺点是业务难以阅读,并且倾向于更多地关注测试方面而不是会话方。
所以,回答你的问题:
是的,BDD适合大型项目。有些项目比你的项目大得多。
是。正如您所猜测的那样,大量情景确实会变得迅速无法维持。如果您没有遇到测试金字塔,我建议您获取Agile Testing的副本,这将比我在这里解释得更好,并给您一些提示。从基本的角度来说,您需要很少的自动UI场景,更多的集成/ API测试以及底部的大量小型单元测试。如果您可以了解代码对用户的价值,并提供一些示例,那么在UI级别通常就足够了。例如,如果您正在编写验证,只需参考几个示例,其中引导用户填写表单,然后在类级别编写其余验证的测试。
减少所需场景数量的另一种方法是确定代码区域何时稳定,然后将它们绘制到自己的库和/或微服务中。这将让您从主构建中获取场景。尽量不要为任何非常无聊的事情编写场景,以至于它只是去工作而且再也不会被触摸(例如:登录,电子邮件网关等)
如果你&#39感觉很慷慨,你可以写一个小玩具应用程序,展示如何使用服务,并使这些服务的场景在玩具应用程序上运行;这也将有助于未来的开发人员了解如何使用您的服务。 JBehave本身是使用这种技术编写的。
然后,您可以使用API测试或集成测试来检查您的应用程序是否正确连接到服务,而不必担心面向用户的功能。
有时。有关减少测试用例数量的技术,请参见第2项。此外,将有趣的场景放在顶部而不是底部,并且在您阅读了更多有趣的场景后,不要害怕删除任何明显的场景。
例如:"弗雷德以折扣购买微波炉并获得退款的那个"更有意思,涵盖了#34的所有功能;弗雷德在没有折扣的情况下购买微波炉并获得退款"
如果您不确定哪条路线会停机,我强烈建议您在短时间内重复工作。尝试使用TestNG方法和您自己的工具。如果使用Page Object模式,则可以重复使用这两种模式,因此开销很小。由此,您将能够找出哪一个最适合您的项目。
我可以确认,从基于代码的DSL迁移到英语语言框架比使用其他方式更容易,所以如果有疑问,请转到代码。
答案 1 :(得分:3)
BDD
不是一种技术,它是一种软件开发方法,除了许多其他方面之外还可以促进协作。这意味着,您的选项1也可以使用BDD方法。
答案 2 :(得分:1)
其他有用信息:
应用BDD的最佳方式 - http://skipoleschris.blogspot.com/2010/11/best-way-to-apply-bdd.html