BDD适合UI自动化?

时间:2014-04-24 22:04:31

标签: cucumber testng bdd jbehave gherkin

我们即将决定为UI自动化框架选择最佳方法。

我们有两个选择:

  1. 使用webdriver进行UI自动化的TestNG
  2. 使用BDD构建的内部工具。
  3. 我们处于危急的境地,决定哪种技术对我们的项目更有利。

    我们的项目是一个巨大的应用程序,有8个模块,并且与第三方工具集成很多。

    1. BDD是否适合大型项目?
    2. 当测试用例数量增加时,是否会引入维护工作?
    3. 当测试用例的数量增加时,是否会出现重复的问题?
    4. 提前感谢所有的想法。

3 个答案:

答案 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步骤中,并且不要害怕重构。它比英语工具更容易维护。缺点是业务难以阅读,并且倾向于更多地关注测试方面而不是会话方。

所以,回答你的问题:

  1. 是的,BDD适合大型项目。有些项目比你的项目大得多。

  2. 是。正如您所猜测的那样,大量情景确实会变得迅速无法维持。如果您没有遇到测试金字塔,我建议您获取Agile Testing的副本,这将比我在这里解释得更好,并给您一些提示。从基本的角度来说,您需要很少的自动UI场景,更多的集成/ API测试以及底部的大量小型单元测试。如果您可以了解代码对用户的价值,并提供一些示例,那么在UI级别通常就足够了。例如,如果您正在编写验证,只需参考几个示例,其中引导用户填写表单,然后在类级别编写其余验证的测试。

    减少所需场景数量的另一种方法是确定代码区域何时稳定,然后将它们绘制到自己的库和/或微服务中。这将让您从主构建中获取场景。尽量不要为任何非常无聊的事情编写场景,以至于它只是去工作而且再也不会被触摸(例如:登录,电子邮件网关等)

    如果你&#39感觉很慷慨,你可以写一个小玩具应用程序,展示如何使用服务,并使这些服务的场景在玩具应用程序上运行;这也将有助于未来的开发人员了解如何使用您的服务。 JBehave本身是使用这种技术编写的。

    然后,您可以使用API​​测试或集成测试来检查您的应用程序是否正确连接到服务,而不必担心面向用户的功能。

  3. 有时。有关减少测试用例数量的技术,请参见第2项。此外,将有趣的场景放在顶部而不是底部,并且在您阅读了更多有趣的场景后,不要害怕删除任何明显的场景。

    例如:"弗雷德以折扣购买微波炉并获得退款的那个"更有意思,涵盖了#34的所有功能;弗雷德在没有折扣的情况下购买微波炉并获得退款"

  4. 如果您不确定哪条路线会停机,我强烈建议您在短时间内重复工作。尝试使用TestNG方法和您自己的工具。如果使用Page Object模式,则可以重复使用这两种模式,因此开销很小。由此,您将能够找出哪一个最适合您的项目。

    我可以确认,从基于代码的DSL迁移到英语语言框架比使用其他方式更容易,所以如果有疑问,请转到代码。

答案 1 :(得分:3)

BDD不是一种技术,它是一种软件开发方法,除了许多其他方面之外还可以促进协作。这意味着,您的选项1也可以使用BDD方法。

答案 2 :(得分:1)

其他有用信息:
应用BDD的最佳方式 - http://skipoleschris.blogspot.com/2010/11/best-way-to-apply-bdd.html