一、什么是自动化测试
何为自动化测试?广义的来看,凡是能够使用工具代替人工操作的测试方法,都可以称为自动化测试。例如,我们常见的LoadRunner、Jmeter就是自动化测试工具的一种,用来进行性能测试,Burp Suite可用于攻击web 应用程序的集成平台,是安全测试的一种自动化工具。但我们通常所认为的自动化测试,更普遍的是指界面自动化测试,也可以认为是功能测试的一种自动化测试方式。而UI前端界面,又可以通过Web、PC端、移动端等多种方式实现,例如,UFT(QTP)可以进行PC端自动化测试,Appium可以进行移动端自动化测试,而Selenium则是最常见的Web UI自动化测试工具。
在这里,跟大家说说我经历的Selenium。
二、Selenium为何大受欢迎
Selenium无疑是当下主流的自动化测试工具之一,尤其在Web UI功能测试领域,有及其出色的表现。那么最主要的原因之一,当然是开源!它主要是用于Web 应用程序的自动化测试,但不只局限于此,同时支持所有基于web 的管理任务自动化。
那么除了开源,它还具有哪些让人爱不释手的原因呢?下图总结了几点Selenium的核心竞争力, 这些优势,使Selenium在自动化测试领域占据一席之地。
-
基于浏览器
较新版本的Selenium对各大常用浏览器的支持很好,且使用官方的浏览器驱动作为操作的入口,自然在稳定性方面有出色的表现,且基于浏览器的测试过程贴近人工操作的功能测试,测试效果直观。
-
兼容性好
对于主流操作系统包括Windows、Mac、Linux,Selenium都没有障碍;对于脚本的编写,Java、Python等主流的编程语言均可,兼容性非常好;对于浏览器包括Chrome、Firefox、IE、Opera、PhantomJS、Safari等都支持,且原厂有相应的浏览器驱动。这些条件使得自动化脚本的开发及运行部署更加稳定高效。
-
API丰富
它包含对浏览器及Web页面多种操作的方法封装,代码编写便捷且执行效率高。Web中常见的鼠标操作、键盘操作及浏览器操作都能实现,还包括浏览器窗口截屏、浏览器弹窗处理,都不在话下。
三、Selenium实现原理
结合下图,简单介绍Selenium的实现原理。当客户端(Client)测试脚本启动浏览器驱动(driver)时,Selenium WebDriver会启动相应的浏览器,启动完成后,WebDriver会将浏览器绑定到特定端口形成一个浏览器实例,测试脚本创建session通过HTTP请求向远程控制服务器(Remote Server,简称RS)发送请求,由RS进行解析并完成相应操作并返回结果。
Selenium发展至今已发展到第3代,初始的Selenium1现在已经基本淘汰, Selenium2和Selenium3差别并不大,Seleneium3针对2进行了浏览器兼容性的升级和API升级,例如支持驱动Win10中的Edge浏览器。它们三大组件相同,包括:Selenium IDE、WebDriver 、Selenium Grid。WebDriver是Selenium的核心组件,它直依赖浏览器内部的原生组件,将WebDriver API的调用转化为浏览器内部接口的调用,显而易见,其执行效率高,稳定性好,例如:chromedriver。
四、自动化测试使用场景
Selenium用于 Web UI自动化测试,常用的使用场景有:回归测试、状态监控、验证系统处理能力。那这些场景,都是用来实现什么需求的呢?
首先,回归测试,是最常见的Selenium自动化测试场景,自动化测试代替人工操作,执行重复的测试任务,准确率好、不疲劳,因而测试效率较高,能在高强度反复测试的状况下依旧保持准确性,可谓任劳任怨。
第二,状态监控,产品部署到生产环境后,为了保证快速、及时地发现不确定性的问题,可以采用拨测的方式来监控产品运行的状态,配合告警可以迅速地得知系统故障,并在第一时间处理,保障产品运行,当然也能够减少用户投诉。
第三,验证系统处理能力,当系统中有一个功能需要连续插入大量数据来验证其处理能力时,自动化测试无疑派上了用场,可以将测试数据存储数据库,也可以在测试脚本中插入测试数据,来进行繁复的数据测试。这些使用场景,主要是高速大家,不是所有的测试都可以用自动化来实现,而要想用自动化实现,就必须先分析需求,否则适得其反,反而降低测试效率。
五、Selenium基础API
这里对常用API(基于Java)做了一个整理,大家可以对Selenium基础功能有一个大概的了解。当然还有很多更复杂的功能,Selenium是非常强大的。
六、Selenium使用方法及注意事项
在使用Selenium进行自动化测试时,脚本的生成方式有两种,第一种,可以采用录制脚本的方式,目前使用较多的是Selenium IDE、Katalon Recorder这两款录制工具;第二种,可采用编写脚本的方式,Java、Python、Php、Ruby、Javascript等主流编程语言,这里就需要用到Selenium中丰富的API。这两种方式显而易见,录制不需要编程基础,而脚本编写需要脚本基础,开发成本较高,但可扩展性好,可对大型系统、复杂用例进行脚本设计和用例编写。
下面总结几条初学者,使用Selenium编写用例脚本时常遇到的问题,这些问题其实都是小问题,但初学者一旦看到报错,往往会觉得,Selenium怎么执行都报错,好像很难进行下去,下面就给大家规避几条我初学Selenium时遇到的困扰多时却又瞬间解决的问题。
-
Selenium较低版本自带Firefox的驱动,只需要将Firefox安装在默认路径即可驱动driver,较高版本需要配合浏览器drivre使用;
-
使用IE进行测试时,一定要注意将浏览器页面缩放比例设置为100%,否则会出现报错,安全保护模式最好也取消;
-
使用driver时,要确定driver版本,包括:对应的浏览器版本,64/32位等;
-