自动化测试一词也算是整个测试行业里面比较热门的一个词儿,工资高,前景好,有实力,有态度等等,很多企业的管理者也在不断的扩大自己的队伍和职能,这也是导致自动化测试比较流行的原因之一。但是很多企业做自动化测试并不能真正解决企业面临的问题或者说对自动化测试的理解并不够。虽然我从事自动化测试工作的年限也不是很久,但是仔细想想做的好的自动化测试的企业还真有一些,比如BAT,但是很多小型互联网公司做自动化测试就不一定有意义了,在我看来,他们是为了自动化测试而自动化测试。因为UI层的自动化测试不是单一做战,而是和server层,unit层协同作战!

  自动化测试在做之前需要进行严格的考虑,不管是系统的稳定性还是人力配备都是参考点。不能把所有的责任都放到UI层测试,每一个阶段(单元层/接口层)都要做好自动化测试,这样做自动化测试的结果才有意义。而恰恰相反的是现在是很多公司不做单元测试和接口测试,直接做UI层的自动化测试,我坚信这样产生的结果一定是是劳民伤财而且意义很少的。

  根据自己对自动化测试的多年实战经验和做过的测试项目获取的经验总结,在此,对自动化测试进行了一些阐述,不喜勿喷。

写的比较简洁,而且这些点确实是任何一个管理者在招聘时应该考量的点(本篇文章面向有测试经验的同学了解)

今天我们从以下几个方面来聊一聊自动化测试。

一、自动化测试定义
二、什么样的项目适合做自动化测试  
三、自动化测试对比手工测试的优缺点
四、市场上主流的自动化测试工具介绍
五、Selenium家谱及工具介绍
六、Selenium自动化测试环境搭建

一、自动化测试定义

自动化测试是通工具录制或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证.

二、什么样的项目适合做自动化测试

  .需求明确,不会频繁变更
  .系统界面稳定
  .项目周期长
  .自动化测试脚本可重复利用
  .人员规模
  .频繁的回归测试
  .可自动化率30%-%

三、自动化测试对比手工测试的优缺点

自动化测试特点:

  .提高软件质量
  .提高测试效率
  .测试具有一致性和重复性
  .准确可靠、避免人的主观性
  .24h* 任何时间 任何地点 无疲劳
  .增加软件信任度
  .增进测试人员和开发之间的合作关系

手工测试特点:

  .较好的异常处理能力、比较灵活
  .测试具有一定的跳跃性
  .人工测试步步追踪,细致定位
  .主要用于发现软件缺陷

四、市场上主流的自动化测试工具介绍

.QTP(UTF) :提供录制、回放、支持C/S ,B/S两种架构系统,收费,需要破解,只支持ie浏览器(ie9以下)
.Robot Framework : 支持关键字驱动,Python语言编写的一款自动化测试框架,支持数据库测试,移动端测试,接口测试
.RFT :(和Qtpl类似),支持录制和回放,支持C/S B/S两种架构的系统,收费,需要破解,支持Java .net vbscript语言
.Watri : 也是一款Web应用程序的自动化测试工具,使用Ruby语言开发的一款自动化测试工具(Ruby是日本编程语言)
.Selenium(目前最火) :
  a.支持多语言:Java Python C C++ C# php Javascript Ruby (后端开发语言)
  b.支持多浏览器:Chrome Firefox Ie Safari Edge(windows10自带) Opera(原名欧朋 现被360收购)
  c.支持多平台:Linux Windows Mac OS
  d.简单API : 很多操作浏览器的方法(webdriver api ) 比如最大化浏览器 等待 操作下拉框等等 ......
  e.支持并行执行测试用例:可以在windows下面谷歌浏览器做自动化测试同时也可以在Liunx火狐浏览器做自动化测试
  f.开源、免费、支持二次开发(可以对selenium的源码进行改造)

五、Selenium家谱及工具介绍

Selenium是什么?
Selenium是一个自动化测试工具集。包含Selenium1. Selenium2. selenium3.,其中Selenium1.0包含Selenium ide
Selenium grid selenium rc Selenium2.0包含Selenim1. + Webdriver Selenium1.0的构成 : selenium ide + selenium grid + selenium rc
    ide :提供录制和回放的一个工具(火狐浏览器自带的一个插件)
    grid:支持并行执行测试用例
    rc:可以简单理解为控制浏览器行为的一个远程服务器 Selenium2.0的构成:Selenium1. + Webdriver Webdriver:它是一套操作浏览器的api(接口规范) 包含了控制浏览器行为的一些操作方法(比如最大化浏览器 等待 操作下拉框等等 ......) 补充一点:firefox46版本以下的驱动是自动集成在浏览器本身的。
Selenium3.0的构成(2016年7月末出现第一个beat版本):
Selenium3.=Selenium ide + Selenium grid + Sebdriver
    .去掉了RC,全面支持webdriver
    .支持Java8以上的开发环境
    .Firefox的驱动和selenium分离。只支持firefox47版本以上的浏览器,另外需要单独配置驱动。

Selenium家谱-LMLPHP

浏览器驱动是什么?
  每一种浏览器都有自己的原生浏览器驱动,驱动是一个.exe文件 比如谷歌的驱动 chromedriver.exe 需要单独下载驱动(网上下载)做自动化测试需要调用浏览器的驱动来完成!

RC和webdriver区别是什么?
    RC:是通过外部一大堆JS函数来调用浏览器做自动化测试
    Webdriver:是通过原生浏览器驱动来调用浏览器做自动化测试
    Webdriver和浏览器的紧密结合度比RC更好,所以在selenium中主推webdriver,在selenium2.0当中主推的是webdriver
    因为RC最开始有一部分用户为了保持向下兼容,所以RC没有完全去掉。

Selenium2.0 和Selenium3.0区别不是很大,具体看Selenium3.0的构成! 目前市场上说selenium或者是招聘网上说的selenium无特殊指明,均为selenium2.0或者3.0 来。我们看一张图。

Selenium家谱-LMLPHP

六、Selenium2.0 自动化测试环境搭建

.cmd ---> pip install selenium==2.53. (如果selenium后面不跟==表示默认安装最新版本)

. pip show selenium 查看selenium安装的版本号(该操作在cmd->windows下面查看)
(注意:.pip 是什么? pip是python2..9版本以后自动集成到python中的一个包管理工具,方便下载和python有关的包或者模块) .验证环境是否安装成功python交互模式下--->输入from selenium import webdriver -->运行无报错(安装成功) .配置浏览器驱动,这里我们教学使用的chrome浏览器,目前最新的版本是63.0.3239.(正式版本) .直接将chromedriver.exe (chromedriver.exe原封不动复制到C:\Python27目录下面) .在idle编辑器里面敲一段代码:
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com') 运行无报错,说明安装成功!
05-22 04:54