本节⽬标:
- ⾃动化测试
- Web⾃动化测试
- selenium
1. ⾃动化
1.1 ⾃动化概念
⾃动化在⽣活中处处可⻅,⾃动的代替⼈的⾏为完成操作。
⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。
⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗⼿液
超市⾃动闸⻔,不需要⼿动的开⻔关⻔

⽣活中的⾃动化案例有效的减少了⼈⼒的消耗,同时也提⾼了⽣活的质量。
软件中的⾃动化测试也是如此,通过**⾃动化测试**有效减少⼈⼒的消耗的同时也提⾼了测试的质量和效率。
- 测试人员编写自动化测试脚本
- 增加新的功能:测试人员需要同步增加对应的自动化脚本
- 自动化测试报错:测试人员需要维护并解决自动化脚本问题
⾃动化的主要⽬的就是⽤来进⾏回归测试。回归测试是什么要讲到位
1.1.1 回归测试
软件有多个版本需要进⾏功能的整体回归。
为了避免新增功能影响到历史的功能需要进⾏功能的回归。

常⻅⾯试题
1.⾃动化测试能够取代⼈⼯测试吗?
⾃动化测试不⼀定⽐⼈⼯测试更能保障系统的可靠性,⾃动化测试是测试⼈员⼿⼯编写,后续如果有功能的变更⾃动化也需要进⾏不定期的维护和更新。
2.⾃动化测试可以⼤幅度降低⼯作量?
错误
坑!!"⼀定程度上"和"⼤幅度"的表达⽅式也需要注意
tips:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项
1.2 ⾃动化分类
• 很多同学经常听到⾃动化这个词,但是很容易误以为⾃动化就是⼀个东西,⾃动化是个统称,同
学们可以理解为我们常说的吃⽠这样的表达⽅式和⾃动化是⼀样的,吃⽠可以是吃西⽠,吃哈密
⽠,吃⾹⽠,⾃动化也包含多种,如接⼝⾃动化,web⾃动化,移动端⾃动化等等...
• 主要介绍各测试分类为什么需要实施⾃动化,⽬的和意义
1.2.1 接⼝⾃动化
什么是接⼝⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
1.2.2 UI⾃动化
UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、客户端⾃动化测试等等。
客户端:pc端 移动端
1.2.2.1 移动端⾃动化测试
什么是移动端⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
移动端,顾名思义,就是部署在⼿机上的应⽤程序。移动端⾃动化测试主要测试程序部署在⼿机上能否按照预期的结果的进⾏操作。
移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测试脚本代码对模拟器上的软件进⾏操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多,诸如什么呢????
1.2.2.2 web⾃动化测试
什么是web⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
如何进⾏百度搜索?
通常来说我们⼿动进⾏百度搜索的步骤如下,web⾃动化能够代替我们⾃动的执⾏。
模拟⼈在浏览器上的操作⾏为,⾃动的打开浏览器,访问百度⾸⻚,并进⾏⼀系列的搜索和验证等⾏为。
1.3 ⾃动化测试⾦字塔
⾃动化的类型⾮常多,那么到底哪⼀种是最好的?哪⼀种测试的收益会更佳?
这⾥我们介绍测试圈内⾮常著名的⾃动化测试⾦字塔

理想的⾃动化测试⾦字塔表达了⾃动化测试的理想情况,利⽤较少的时间和精⼒在单元测试上就能够发现更多有效的问题。
然后实际上在企业中,⾃动化往往是"冰淇淋蛋筒反模式"

⾃动化需要⼤量的初始投资,找到"突破点",与⼿动测试相⽐,我们开始看到它对⻓期成本产⽣的 积极影响,也能够清楚,这两种测试活动都是完全兼容,产⽣短期和⻓期利益。
2. web⾃动化测试
学到这⾥,希望同学们对⾃动化测试能够有⼀定的了解。然后实际在企业中,我们需要对某⼀个特定的软件进⾏⾃动化的实施,包含但不限于软件所有界⾯的UI⾃动化测试、所有接⼝的接⼝⾃动化测试。
接下来我们将正式步⼊web⾃动化测试的学习,了解企业中是如何使⽤⼯具来统⼀编写和管理⾃动化⽤例。
2.1 驱动
上⾯给⼤家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界⾯进⾏⼀系列的操作。对于⼿⼯测试来说,这⼀系列的操作都需要测试⼈员⼿动的,⼀步⼀步的来执⾏测试。那么对于⾃动化程序来说,程序如何才能打开浏览器并执⾏我们预期的操作流程呢?
驱动⼀词应⽤⼴泛,同学们都不会陌⽣。
⻋有了驱动才能够让⻋跑起来。
计算机有了驱动程序就可以与设备(⽿机,摄像头,⻨克⻛,键盘,显⽰器等等设备)进⾏通信。

程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化⽅式驱动浏览
器。
2.1.1 安装驱动管理
驱动管理:
WebDriverManager是⼀个开源Java库,以完全⾃动化的⽅式对Selenium WebDriver所需的驱动程 序(如chromedriver、geckodriver、msedgedriver等)进⾏管理(即下载、设置和维护),⾃版本5起,WebDriverManager还提供了其他相关功能,如发现本地系统中安装的浏览器的能⼒,构建 WebDriver对象(如ChromeDriver、FirefoxDriver、EdgeDriver等)
java
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
<scope>test</scope>
</dependency>
3. Selenium
万事俱备,只⽋东⻛。
接下来就是使⽤selenium来编写web⾃动化测试脚本。
selenium是⼀个web⾃动化测试⼯具,selenium中提供了丰富的⽅法供给使⽤者进⾏web⾃动化测
试。
3.1 ⼀个简单的web⾃动化⽰例
1)安装selenium库
java
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
2)使⽤selenium编写代码
java
package com.example.seleniumaototest;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class FirstTest {
//测试百度搜索关键词迪丽热巴
public void test01() throws InterruptedException {
//1.打开浏览器
WebDriverManager.chromedriver().setup();
//增加浏览器配置,创建对象时允许访问所有链接
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver driver = new ChromeDriver(options);
Thread.sleep(1000);
//2.输入完整网址:https://www.baidu.com
driver.get("https://www.baidu.com");
Thread.sleep(1000);
//3.找到输入框,输入"迪丽热巴"
driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");
Thread.sleep(1000);
///4.找到百度一下
driver.findElement(By.cssSelector("#su")).click();
Thread.sleep(1000);
//5.关闭浏览器
driver.quit();
}
}
3.2 selenium+驱动+浏览器的⼯作原理
实现web⾃动化测试需要浏览器、浏览器驱动、selenium⾃动化脚本。这三者是如何交互最终实现web的⾃动化测试?
-
通过selenium编写的⾃动化脚本代码中在ChromeDriverService中创建⼀个服务
-
通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,PORT为ChromeDriverService中创建的端⼝号,该服务地址为selenium向webdriver发送请求的服务地 址。
-
向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
-
打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过创建好的服务链接到 webdriver,然后使⽤execute发送请求
-
驱动收到请求并对请求进⾏解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执⾏对应动作
-
浏览器再把执⾏的动作结果通过浏览器驱动程序返回给测试脚本
驱动需要接收、解析请求,发送请求给浏览器,那么驱动到底是什么样的⻆⾊呢?
验证⽅式:
1)执⾏selenium编写的⾃动化脚本代码中,可以在终端看到创建的驱动服务地址。