一、自动化
(一)自动化概念
自动的代替人的行为完成操作。
- 比如自动洒水机、自动洗手液、超市自动闸门,生活中的自动化案例有效的减少了人力的消耗,同时也提高了生活的质量。
软件的版本迭代更新速度较快,如果每次更新都需要进行手工测试,测试消耗时间长,每个版本都有重复的测试过程。然而自动化测试不仅可以提高测试质量和效率,而且有效的减少人力的消耗。
自动化的主要目的就是用来回归测试。
1. 回归测试
为什么要进行回归测试? ---> 为了避免新增功能影响到历史的功能


> 自动化脚本出现报错可能的原因
- 测试人员编写的自动化测试脚本有误
- 本次更新了历史功能,导致自动化需要更新
- 开发人员编写的代码影响了历史功能 --- 自动化发现了bug
常见面试题
1.自动化测试能够取代人工测试吗?
自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手动编写 ,后续如果有功能的变更,自动化也需要进行不定时的维护和更新
2.自动化测试可以大幅度降低工作量?
错误(坑!!"一定程度上"和"大幅度"的表达方式也需要注意)
tips:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项
软件测试的生命周期:需求分析、测试计划、测试设计、测试开发、测试执行、测试评估

(二)自动化分类
-
自动化测试分为:接口自动化测试 和 UI / 界面自动化测试。
-
UI自动化测试:移动端自动化测试、web端自动化测试
注意:我们目前所针对的是web端自动化测试
二、web自动化测试
程序模拟人的操作来执行测试
比如:百度搜索关键词"王一博"并展示相关词条
>>> 手工测试
- 打开浏览器
- 请求网址:https://www.baidu.com
- 找到百度输入框,输入关键词"王一博"
- 找到 百度一下 按钮并点击
- 关闭浏览器
>>> 自动化测试和手工测试步骤是一样的
- 打开浏览器
- 请求网址:https://www.baidu.com
- 找到百度输入框,输入关键词"王一博"
- 找到 百度一下 按钮并点击
- 关闭浏览器
对于web自动化测试来说,测试的前提需要打开浏览器,通过访问web服务器来对服务器界面进行一系列的操作。对于手工测试来说,这一系列操作的需要测试人员手动测试,比如直接双击浏览器来进行操作。而Web自动化测试如何打开浏览器进行操作呢?
- 对于程序来说,想要打开浏览器就需要安装web驱动(即WebDriver),WebDriver以本地化方式驱动浏览器
(一)安装驱动程序
1. 手动下载驱动
下载入口:https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location/
选择和你的浏览器版本匹配的web驱动程序下载:

浏览器存在不同版本,不同版本的浏览器对应不同的驱动版本。要求驱动版本和浏览器的版本必须匹配。匹配可以指相同版本,也可以指版本有非常小的差异。
手动下载驱动要求比较多,且存在问题也比较明显:
1)要下载不同浏览器的驱动,谷歌浏览器-谷歌浏览器驱动,edge浏览器-edge浏览器驱动
2)根据浏览器的版本下载与之对应版本的驱动
3)浏览器是有自动更新的功能(默认打开),如果每次浏览器更新,都要手动下载相应的web驱动程序,太麻烦了。
因此我们可以引入WebDriverManager 依赖来管理驱动,无需手动下载驱动。
2. 由驱动管理程序自动下载与浏览器版本匹配的驱动(推荐)
驱动管理:是一个开源Java库,以完全自动化的方式对Selenium WebDriver所需要的驱动程序进行管理
引入的配置:
java
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
<scope>test</scope>
</dependency>
三、Selenium
selenium是一个web自动化测试工具,selenium中提供了丰富的方法供给使用者进行web自动化测
试。接下来就是使用selenium来编写web自动化测试脚本。
(一)web自动化示例
百度搜索关键词"王一博"并展示相关词条
1. 新建一个maven项目

2. 安装selenium库
在pom.xml中添加依赖,然后reload
java
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
3. 引入WebDriverManager 依赖来管理驱动
在pom.xml中添加依赖,然后reload
java
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
<scope>test</scope>
</dependency>
4.src -> test -> java -> new -> 创建表 -> 创建java源文件(创建编写测试和执行测试的源文件)


5. 使用selenium编写代码
在编写测试的源文件中创建方法来编写测试用例,然后再运行的源文件中进行调用运行。
java
public void example_test(){
//驱动程序管理的自动化
WebDriverManager.edgedriver().setup();//使用插件管理工具webdrivermanager
EdgeOptions options = new EdgeOptions();//添加浏览器配置
//允许访问所有链接
options.addArguments("--remote-allow-origins=*");
//1、打开浏览器
WebDriver driver = new EdgeDriver(options);
//2.输入百度网址:https://www.baidu.com
driver.get("https://www.baidu.com");
//3、找到输入框并输入"王一博"
driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("王一博");
//4、找到"百度一下"按钮并点击
driver.findElement(By.xpath("//*[id=\"su\"]")).click();
//5、关闭浏览器
driver.quit();
}
(二)selenium+驱动+浏览器的工作原理

驱动要接收selenium脚本发送过来的http请求并解析请求,其实也就是:驱动相当于服务器的功能。