一、 自动化测试简介
1. 自动化测试本质
通过自动化的形式来模拟人工一系列操作(面试可能会问,结合一个场景来回答)
打开项目->定位元素->操作元素->模拟页面动作->断言结果(判断预期结果与实际结果是否一致)->生成报告
举例:云商项目
1) 打开云商项目地址
2) 定位输入框
3) 操作控件(给输入框输入内容),如输入“男装”、点击搜索
4) 跳转到对应页面后,模拟页面动作,如下拉、上滑、页面滑动
5) 断言结果,通过自动化的形式判断预期结果与实际结果是否一致,一致则pass,不一致则fail
6) 生成报告
对于自动化,不能跨步走(即不能在页面1(首页)去操作页面2(购物车)的控件)
2. 适合自动化测试场景
(1) 需求不频繁变动。如果项目还处于探索阶段,不知道项目会发展成什么样子,此时需求会频繁变动,页面的功能也会变化。UI自动化是基于用户界面和功能的,不适合需求频繁变动的项目。最好是在1.0版本已经上线,基本功能已经稳定,之后是不断地迭代更新功能,整个产品需求走势已经确定时开始进行UI自动化工作。
(2) 项目周期较长(3个月及其以上,且基于项目稳定的情况下)
(3) UI比较稳定(页面的布局、控件和功能的显示),和需求不频繁变动是相关联的。
(4) 大量回归测试任务(重复的老功能)
- 适用测试阶段
(1) 冒烟测试(核心主干功能,对新功能的冒烟)
(2) 回归测试(对老功能的回归,迭代的功能对老功能是否有影响)
- 不适合UI测试的场景
(1) 音视频播放器(音视频交互性太强,无法拿到视频源、黑屏、蓝屏等无法判断)
(2) 打电话
(3) 游戏类
3. Selenium特点
Selenium主要用于web应用程序的自动化测试,但并不局限于此,它还支持所有基于web的管理任务自动化,其特点如下:
- 开源、免费
- 多浏览器支持:Firefox、Chrome、IE、opera、edge
- 多平台支持:Linux、Windows、MAC
- 多语言支持:Java、Python、Ruby、C#、JavaScript、C++
- 对web页面有良好的支持
- 简单(API简单,API:在类里面封装好的方法,即暴露给别人的一个可用的接口)、灵活(用开发语言驱动)、足够稳定
Selenium历经3个大版本,selenium1.0、selenium2.0、selenium3.0。selenium不是由单独一个工具构成的,而是由一些插件、类库组成,每个部分都有其特点和应用场景。
- 扩展知识
- Robot framework只是一个关键字驱动框架,它只是封装了selenium、封装了request。使用RF可以做web端自动化、APP端自动化、接口自动化,但是底层还是用的selenium。
- RF是一个非常局限于测试工程师思想的工具,比如打开浏览器使用关键字open browser,然后写个URL地址,就可以打开,不需要写任何代码。我们做自动化核心在于我们要知道背后的原理,怎样通过代码实现,其过程是非常灵活的,而不应局限于已经封装好的工具。
4. Selenium3.x版本介绍
- 去掉selenium RC。selenium1.0和selenium2.0的底层都使用了selenium RC。
- 去掉selenium RC的原因
① 对于selenium RC的核心实现的是通过JS去控制操作浏览器的,安全性差(每个人都可以调JS)、效率低(中间加了一层)
②selenium2.0以webdriver为主,selenium RC并存,selenium
RC在selenium3.0直接被去掉,selenium3.0的核心就是webdriver - 扩展知识
Web页面有3个核心的东西:html(页面布局)/js(页面实际操作的动作,比如按钮点击)/css(样式,比如颜色、字体大小、段落格式)
- Selenium3.0中的Firefox驱动独立了。在selenium3.0之前,只要在不同编程语言下安装好selenium就可以驱动Firefox浏览器运行自动化测试脚本。这是因为不同语言下的selenium库中移动包含了Firefox浏览驱动。然而,现在Firefox浏览器驱动与selenium库分离,单独提供下载。
- Edge和Safari原生驱动的支持
5. Ui自动化测试设计原则
- 一个case完成一个功能点测试(1个自动化case对应1条手工测试用例,整个行业都是这样做)
- 一个脚本是一个完整的场景(使用较少)
- 脚本之间独立,不能有依赖(如果有依赖关系,则前面的case失败后会影响后面的执行结果。所以每一条自动化用例都是从打开浏览器、登录开始的,都是相互独立的,不会有任何依赖)
- 设置合适的检查点(即断言结果)
- 设计良好的框架
二、 Python3+selenium3.x自动化测试环境搭建
1. 安装Python
1) 进入Python官网下载Python,下载地址:https://www.python.org/downloads/
2) 双击已下载的Python安装包,安装时选择安装界面的“Add Python 3.7 to PATH”进行勾选,避免再次配置环境变量;
3) 验证Python是否安装成功:windows+R打开cmd命令行,输入命令“python”,如果有提示Python版本,则表示配置成功
2. 配置Python环境变量
如果在步骤1中没有勾选添加环境变量,则需要手动配置
配置环境变量方法:
1) 找到python.exe所在路径,我所在路径为:C:\Users\Administrator\AppData\Local\Programs\Python\Python37
2) 选择计算机,鼠标右键->属性->高级系统设置->高级->环境变量,选择系统变量中的Path,将python.exe所在路添加到Path中去,然后点击确定。
注意:win7中的环境变量需要以英文状态下的分号;分隔。
添加环境变量的方法:将exe可执行程序所在的路径添加到path中去,因为cmd执行python命令时,找的就是Python.exe这个文件,配置其他环境变量的方法与这个类似。(将exe可执行文件所在路径添加到环境变量中。)
3. 配置pip环境变量
与步骤2类似,将pip.exe所在路径添加到path中去,pip.exe通常在python文件夹下的Scripts文件夹下,即路径为:C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts
4. 安装配置selenium
在cmd下直接执行pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
5. 下载并安装pycharm编译器
可以通过pycharm编写python代码,目前用的比较多的IDE就是Pycharm,下载地址:https://download.jetbrains.com/python/pycharm-community-2017.3.2.exe,也是下一步下一步默认安装即可。
之前已经安装过,这一步省略。
6. 配置pycharm
打开pycharm,选择左上角file->settings->project->project interpreter
在project interpreter选择Python安装路径,确认下面存在selenium的库
7. 下载浏览器及对应的驱动
不管是firefox浏览器还是chrome浏览器我们通过selenium自动化操作浏览器都需要用到一个driver,需要进行下载
1) Firefox浏览器及驱动下载
- Firefox浏览器下载地址:https://www.firefox.com.cn/download/
- 对应驱动下载地址:https://github.com/mozilla/geckodriver/releases
- firefox的版本和geckodriver的版本有对应关系,可以自行在网上查找
- 火狐浏览器版本查看:打开火狐浏览器,点击右上角菜单-帮助-关于Firefox
2) Chrome及驱动下载
-
Chrome驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
-
chrome浏览器也和chromedriver有对应关系,需要下载与浏览器对应版本的驱动,如我的谷歌浏览器版本为:87.0.4280.88
-
选择对应版本的驱动(如果没有对应版本的驱动,可使用接近的版本,如果电脑是64位的,也可以选择win32的驱动,都可以正常使用)
3) 驱动安装
将下载好的驱动放到与python.exe平行的路径下
8. 第一个自动化程序
在pycharm中运行以下代码,查看环境是否都已配置成功,如果可以自动打开浏览器并进入百度首页,即说明环境配置完毕
#火狐浏览器
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('https://www.baidu.com')
time.sleep(5)
#谷歌浏览器
from selenium import webdriver
import time
driver = webdriver. Chrome()
driver.get('https://www.baidu.com')
time.sleep(5)