当前位置: 首页 > 知识库问答 >
问题:

BDD GUI自动化

郎伟兆
2023-03-14

我开始了我生活中的一个新角色。我曾是一名前端web开发人员,但现在我被转移到测试web软件,或者更重要的是,自动化软件测试。我相信我将追求一种BDD(行为驱动开发)方法。我完全不知道该用什么,怎么把它拼凑起来。

正在使用/编写的代码用Java编写一个web接口,供应用程序测试。我有要运行的测试文档,但我一直很好奇如何进行自动化。

我被指示将cucumber作为一种“语言”来帮助实现自动化。我做了一些研究,遇到了一个关于BDD工具/框架工作的概要的web站点,8个最佳行为驱动开发(BDD)工具和测试框架。这对我有一点帮助,但后来我对如何实现它有点困惑。Selenium似乎是许多用于测试GUI的BDD框架中的一个共同点,但它似乎仍然无法帮助描述要做什么。

提前道谢。

共有1个答案

呼延衡
2023-03-14

BDD体系结构

BDD自动化通常由几个层组成:

  1. 自然语言步骤
  2. 将步骤与其定义联系起来的布线
  3. 步骤定义,通常访问页面对象
  4. 页面对象,提供页面或小部件的所有功能
  5. 通常通过GUI实现对实际代码的自动化。

要使步骤易于维护和更改,请将步骤保持在相当高的级别。这通常被称为“声明性”,而不是“命令性”。例如,这太详细了:

When Fred provides his receipt
And his receipt is scanned
And the cashier clicks "Refund to original card"
And the card is inserted...

想想用户想要实现什么:

When Fred gets a refund to his original card

通常情况下,一个场景会有几个Givens或Thens,但通常情况下只有一个Givens或Thens(除非您有一些类似用户交互或时间推移的事件,在这些事件中需要两个事件来说明行为)。

如果您是第一次对此进行攻击,请从获得一个空场景开始,该场景只是运行并通过,而不执行任何操作(使步骤为空)。当你做了这件事,你就成功地把cucumber连上了线。

编写使场景运行的生产代码。(这与您通常的操作方式相反;通常您会先编写场景代码。但我发现这是一个很好的入门方式。)

当您可以手动运行场景时,直接将自动化添加到步骤中(此时您只有一个场景)。使用您最喜欢的断言包(JUnit)来获得您想要的结果。您可能需要更改代码,以便您可以轻松地自动化它,例如:为您的网页中的元素提供相关的测试ID。

在添加更多场景时继续重构。如果台阶太大,就把它们分开。如果页面对象太大,则将其划分为小部件。我喜欢通过用户/涉众能力(通常与“何时”相关,但有时与“然后”相关)和不同的上下文来组织我的场景。

所以总结一下:

  1. 编写空方案
  2. 编写代码使其手动传递
  3. 使用您的自动化工具连接场景;它现在应该运行!
  4. 编写另一个场景,这次是在生产代码之前编写自动化
  5. 重构自动化,将其从步骤移到页面对象
  6. 在添加更多方案时继续重构。
 类似资料:
  • 安装Windows服务时,有两个选项可以在Windows启动时自动启动Windows服务。一个是自动,另一个是自动(延迟启动)。详细来说,这两者有什么区别? 例如,如果您使用wixtoolset创建安装程序,ServiceConfig元素具有DelayedAutoStart属性。当服务在启动时启动时,这会对发生的事情产生什么影响? WiX留档:ServiceConfig元素

  • 一、自动活动简介 自动活动可以帮助营销或运营人员实现自动化的消息触达。并且这种消息发送是由特定的用户行为或行为序列触发的,非常适合做各种场景化的个性化营销或运营。 二、功能及使用 1. 自动活动列表 创建的活动会展示在列表中,一目了然的展示活动状态、目标用户群、活动描述以及详细的数据信息。 2. 创建自动活动 在智能触达页面右上方点击「+新自动活动」按钮创建自动活动 2.1 创建触发类型活动 触发

  • 本文向大家介绍Python自动化xpath实现自动抢票抢货,包括了Python自动化xpath实现自动抢票抢货的使用技巧和注意事项,需要的朋友参考一下 小伙伴们,这次推文讲的是‘xpath‘,掌握起来不难的哦。而且,熟悉了这套路,别说pubmed,任何你能在浏览器实现的操作,都基本能通过selenium自动化进行。 总代码: 代码1 for i in range(1,50+1): printg('

  • 问题内容: 您对将尝试获取代码并将其自动拆分为线程的项目有何看法(可能是编译时,可能是在运行时)。 看下面的代码: 这种代码可以自动拆分为两个并行运行的线程。您是否认为有可能?从理论上讲,我感觉这是不可能的(这使我想起了停顿的问题),但是我不能证明这种想法是正确的。 您认为这是一个有用的项目吗?有没有类似的东西? 问题答案: 在一般情况下是否可以知道一段代码是否可以并行化并不重要,因为即使您的算法

  • 问题内容: 我的公司是一家直邮公司,随着我们通过SSIS,SQL和Excel的自动化不断发展,我们正在寻找改善工作流程的方法。 基本上,我们要做的就是能够使不在办公室的流程自动运行。即,一个文件进来了,并且根据文件放置的位置,过程将开始,而我们需要完成的任务将开始。 我们知道我们想要它做些什么,我们只是在努力从哪里开始,或者更具体地说,什么是使我们的服务自动化的最佳方法是什么? 问题答案: 您有两

  • 自动版本化 因为Subversion客户端不是完整的DeltaV客户端,Subversion服务器也不是完整的DeltaV服务器,但仍有值得高兴的交互特性:叫做自动版本化。 自动版本化是DeltaV标准中的可选特性,一个典型的DeltaV服务器会拒绝一个对版本控制之下文件的PUT操作,为了修改一个版本控制下的文件,服务器只会接受一系列正确的版本请求:例如MKACTIVITY、CHECKOUT、PU