web自动化测试终篇(28):总结我理解的ui自动化

到了这里,基本上所有关于自动化框架的内容已经完成了,其中我认为web自动化中有三个核心(目的与安排、框架结构、元素定位),在最后这里分享一下我所思考的ui自动化。

一、为什么要做自动化以及如何推进

又回到这个最开始我们做UI自动化的初衷,不管是为了自动化而自动化、还是提高自己的技术能力、亦或者是为了提高自己的工作效率,既然我们开始做web自动化后,就应该在做的时候去反思,为什么要去做自动化,自动化是否真的为我们提升了效率,以及怎么完善自动化的流程步骤。

自动化的目的:

毫无疑问自动化本身是为了代替频繁而且重复的人工操作,从而提升效率,实际应用中一般作为回归测试的一个实现工具。

做web自动化之前的考量:

这里依旧要重申一下,做UI自动化需要满足的条件,我个人觉得要做这个对于项目以及人员的要求都蛮高的,所以这也是ui自动化经常失败的原因,这里我觉得在做自动化之前要考虑好项目本身以及项目组测试成员能否满足自动化的需要。

1.项目要求:
需求相对稳定
重复任务较多
项目开发周期长
这里有几个大概的要求,自动化需要持续一段时间,所以需要在一段充足的时间内来进行,而繁琐重复的测试操作,也是自动化实现的意义。
至于需求相对稳定,指的是我们要进行自动化的功能模块,不会经常改动主要流程,例如我要把电商网站的购买流程自动化,那么如果今天增加流程分支,明天更改下单规则,自动化是做不起来的,而且这种情况下做自动化,脚本维护的工作量远超流程稳定后的脚本工作量。

2.人员要求以及工作量安排
代码能力
人员充足与否
工作量任务安排
这里代码能力其实要求并不太高,因为ui自动化说起来也是一个非常有规律的东西,没有学过代码的测试在经过培训熟悉后,也可以完成ui自动化的编写,这里的代码能力更多的是指项目组中至少有一个人,不仅负责框架搭建,也要针对不同情况的疑难杂症进行解答,属于自动化项目的核心。

对于人员和工作量,这里主要是考虑我们项目是否是测试工作饱和的状态,人员太少,工作量大的情况下,普通的点点点都很忙了,是没有时间进行开发初期的UI自动化的,因为初期的自动化工作量还是蛮大的,会占用比较长的工作时间;但是当自动化用例完成后,项目需求变动不大的情况下,自动化维护的工作量会比较少。
所以可以根据项目的节奏,在日常工作任务比较轻松的时候完成自动化,而在项目紧张的时候就可以分出精力用来维护脚本了。

3.测试项目组要求:

项目测试评估:
当前项目的测试覆盖率、测试质量以及测试工作投入
加入自动化后的测试覆盖率、测试质量以及测试工作投入
自动化的发起人、负责人以及目的

自动化测试的推进:

目前的测试用例、以及需要做自动化的用例,需要讨论分析,那些用例需要做自动化,做了自动化后的工作量和测试安排、对测试进度和项目进度的影响。

1.确定测试用例
在评估确定好要做自动化后,第一步是确定我们的自动化用例,需要测试的项目组一起把当前项目用例拿出来,评估哪些用例需要做自动化,自动化用例的选择标准是什么。第二步就是确定自动化的实现方式,使用哪儿种框架来实现自动化。

2.工作量安排以及项目协调
确定好用例以及实现方式后,需要安排测试小组进行自动化编写。一般来说需要一个核心测试开发,来主要负责框架的搭建以及相关功能的补充,其他人员主要负责case、page具体用例的实现。
在制定自动化计划时,也要考虑到项目当前的测试工作量和测试效果,在满足基础手工测试的基础上进行自动化的工作安排。

3.定期回归用例
在第一批用例编写完成后,接下来就是定期维护和检查用例,比如页面元素的调整、需求功能的更改,都会需要再次调整用例。这个时期如果要考虑增加用例,需要谨慎一些,因为如果自动化用例增加太多,也会导致维护成本的增加,可能大部分时间用来维护甚至重写用例,反而会本末倒置。

二、自动化框架

基础的自动化框架,实际上都是分为了两部分:第一部分是结构框架selenium+unittest,另一部分是设计框架driver+Page+case(或者叫POM).也不是一定是这些技术,但是肯定是同等功能的技术。

第一部分:结构框架

这里我认为是组成自动化的源码结构,必须要有selenium这样的驱动和unittest这样的单元测试框架,这两部分组成了我们自动化的结构框架。根据这个概念引申出来,例如使用selenium+robotframework,使用selenium+pytest等等,结构框架也是我们所要使用的技术框架。

关于selenium的部署以及webdriver的方法介绍:
web自动化测试第1步:UI自动化了解以及python环境配置
web自动化测试第2步:定位元素
web自动化测试第3步:元素的基础操作和浏览器基础操作
web自动化测试第4步:页面元素信息(属性)的获取
web自动化测试第5步:浏览器/页面信息的获取
web自动化测试第6步:模拟鼠标操作(ActionChains)
web自动化测试第7步:模拟键盘事件(Keys)
web自动化测试第8步:浏览器不同页签之间的切换(handle)
web自动化测试第9步:切换页面frame
web自动化测试第10步:获取浏览器弹窗alert、自定义弹窗以及其操作
web自动化测试第11步:switch_to包详解:切换handle、frame、alert
web自动化测试第12步:selenium中下拉框的解决方法(Select)
web自动化测试第13步:元素定位(2)(webdriver的所有定位方式详解)
web自动化测试第14步:对于cookie的操作
web自动化测试第15步:使用js语句
web自动化测试第16步:WebDriverWait元素等待和全局设置
web自动化测试第17步:元素定位终极法宝,最全面的xpath定位详解

关于unittest单元测试框架的介绍
web自动化测试第18步:单元测试框架unittest
web自动化测试第19步:使用unittest运行多个测试用例集

第二部分:设计框架

这里的设计框架,指的是我们根据选择的结构框架,来实现自动化用例运行的具体逻辑步骤。例如一个测试用例的实现,在selenium+unittest中,我使用的是driver+page+case的步骤来实现的,如果使用的是selenium+robotframework,那就是通过关键字封装驱动来实现的。
本质都是将功能分门别类,高内聚低耦合的设计思路。

关于具体的结构设计
web自动化测试第21步:UI自动化框架结构以及思路
web自动化测试第22步:POM设计模式的实现
web自动化测试第23步:数据分离

关于一些补充的方法
web自动化测试第24步:使用测试报告模板
web自动化测试第25步:加入log日志
web自动化测试第26步:邮件发送测试报告
web自动化测试第27步:连接数据库
web自动化测试第20步:测试用例断言

三、元素定位

元素定位我认为是UI自动化的核心所在,因为任何一个UI自动化框架,不论是什么结构驱动,都需要针对某一个元素来操作,定位准确简洁就是非常重要的。在经过总结后,我对于xpath的定位总结了很多方法和规范,包括路径、属性、位置、xpath轴、运算符等方面,详细了解这些xpath的知识后,对于元素定位来说应该是没问题的了。

关于xpath的定位方法
web自动化测试第17步:元素定位终极法宝,最全面的xpath定位详解

关于webdriver中的的定位方法
web自动化测试第2步:定位元素
web自动化测试第13步:元素定位(2)(webdriver的所有定位方式详解)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章