Software Testing - UI自动化测试常用设计模式之模板(Java)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程

模板模式在UI自动化中比较常用的原因是在产品中有很多的操作路径是复用的,所以我们可以使用模板模式,把固定的路径抽象出来,由子类去实现那些独立的逻辑。模板模式的思想是使用父类来规定执行操作的步骤,为了代码复用也会实现一些通用的步骤,然后留下一些abstract的方法交给子类实现。这种父类规定骨架,子类实现细节的方式就是模板方法了。当然模板方法也是可以有较深的结构的。

模板模式的优点:

  • 代码复用。UI上很多操作路径都是重复的,甚至说不同的业务流程操作中的部分页面使用的是相同的页面。使用模板模式可以很好的整理我们的代码结构,将业务逻辑分类并组织起来,可以复用的代码交给上层的父类来实现。

模板模式的缺点:

  • 如果类层级结构较多的时候,维护起来有点麻烦。

比如:

上面是我们的产品引入一份数据的逻辑。 我们的数据引入有很多种类型。 比如从本地引入, 从数据库引入,从 hdfs 引入,从 ftp 上引入等等等等。但是他们的基本步骤都是一样的 (看截图中的注释), 所以模板模式的思想是使用父类来规定到执行操作的步骤, 为了代码复用所以也会实现一些通用的步骤比如所有的引入都得点击某些 button,填写一些都行。 然后留下一些 abstract 的方法给子类实现。 这种父类规定骨架,子类实现细节的方式就是模板方法了。 在这里我们的父类定义好了所有的步骤,但是部分的具体实现细节由子类完成。 这里我们发现子类需要实现两个方法

  • 每个数据引入的关于生成 table 的操作的 setTableConfig
  • 每种数据引入的文件配置方式操作的 setFileConfig

当然模板方法也是可以有较深的结构的。 比如上面说的一些引入方式虽然都属于数据引入,但是也分为两大类, 一个是结构化数据,一个是图片数据。 而且凡是属于结构化数据的引入方式有很多步骤都是相同的。 凡是属于图片数据引入的方式的大部分步骤也是相同的。 所以我们继续有抽象类如下:

上面是结构化数据的抽象类。 他实现了父类 IDataload 的 setTableConfig 方法。 因为所有结构化数据引入的这个页面操作都是一样的。然后才是我们具体的本地文件的数据引入的类。如下。

这个具体的本地文件引入的类实现了方法 setFileConfig。 这样我们就看到了这个模板模式的全貌。

  • 基类 IDataload 负责定义执行步骤,以及个别 UI 操作的实现。 规定子类必须实现 setTableConfig 和 setFileConfig 这两个方法
  • 类 StructureDataLoad 继承基类 IDataload,并实现了 setTableConfig 方法。 因为所有的结构化数据引入在这里使用的是同样的页面
  • 具体的实现类 LocalFileDataLoad 继承 StructureDataLoad,代表着本地数据引入并实现了针对于本地文件引入所独有的页面操作 setFileConfig

所以实际上调用方要做的事情就是这样的

Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于经过了公司内部多个项目的实践,也取得了不错的成效,因此,希望开源以后可以对大家有所帮助及参考。 设计理念 Dagger首先是一个WebUI自动化框架,提供了赖以操纵浏览器的一些API。API数量不多,少于20个,但从实践上,已经基本涵盖95%的应用场景了(其余5%比较 个性 的自动化操作一般是封装在业务逻辑层面,有时候甚至会须要hack) Dagger其次是一个测试框架,使用TestNg管理和运行用例,TestNg相关断言内嵌于上述API中。因此,在我们的测试用例里面不应该看到单独的TestNg断言的 Dagger还是一种设计风格:简约。无论是Dagger框架本身还是基于Dagger编写的测试用例,都是十分light及straightforward的,以至于会让人感觉有点土。但实践中,这两者确保了低成本、易用性、可维护性 WebUI自动化从业界看,难推进,易烂尾,原因基本在于:维护成本高、运行速度慢、稳定性差 Dagger专注于WebUI自动化,从技术上克服了速度与稳定问题(见下文)。只封装够用的浏览器操作为API,并充分简化/强化这些API,以简约的风格去降低自动化的学习及使用成本。同时,在实践中,我们主要使用Dagger编写冒烟用例、其次是主干用例,少写逻辑复杂功能,不写边边角角功能,让用例也保持清爽(在整个自动化实施过程中,会定期进行用例Review),同样易于后期维护 主要特性 API极少,易于上手,详见这里. 提供比较完备的文档,便于快速入门,详见这里. 支持单机多浏览器并发执行,大大缩短用例执行时间,详见这里 通过修改TestNg源码实现失败用例自动重运行(详见这里)由此几乎消除WebUI自动化中常见的虚假失败 默认使用Chrome浏览器,原因详见这里 失败用例自动截屏 后续工作 加入Flex/Flash自动化支持 如何使用 Dagger十分适合中小型团队从零开始WebUI自动化,这样的话,只须要直接下载整个Dagger代码就行了,Dagger本身都已经配置好了,下载后看一下使用文档就可以直接开始写用例了 也可以把Dagger打成Jar包,导入已有的自动化框架中,详见这里 标签:Dagger  自动化测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值