一、自动化
1. 自动化概念
自动的代替人的行为完成操作,通过自动化测试有效减少人力的消耗的同时也提高了测试的质量和效率
常见面试题
1.自动化测试能够取代人工测试吗?
自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写,后续如果有功能的变更自动化也需要进行不定期的维护和更新
2.自动化测试可以大幅度降低工作量?
错误!!!
一定程度上 和大幅度 的表达方式也需要注意
测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项
2. 自动化分类
- 接口自动化
- UI自动化
UI测试也称为界面测试,常见的UI自动化测试包含web自动化测试、移动端自动化测试等等
- 移动端自动化测试
移动端,顾名思义,就是部署在手机上的应用程序。移动端自动化测试主要测试程序部署在手机上能否按照预期的结果的进行操作,移动端测试通常不是将程序部署在移动端上进行测试,而是需要安装模拟器,在电脑上编写自动化测试脚本代码对模拟器上的软件进行操作 - web自动化测试
模拟人在浏览器上的操作行为,自动的打开浏览器,访问需要访问的内容
3. 自动化测试金字塔
最早提出来的时候是一个三层的金字塔,从上到下分别是UI界面/Service服务/Unit单元测试,随着敏捷测试的不断推进,测试金字塔出现一些变种
这种下宽上窄的三角形结构,代表在各层自动化的建议投入分配比例,越接近底层的单元测试建议的投入最多,接口测试居中,界面层建议的投入最少

原则上单元测试需要开发人员承担,很多团队中开发人手不足,优先保障功能的实现,在单元测试的投入不够,并且很多开发人员的单元测试经验不足,导致很多团队中不做单元测试或者被动执行流于形式,有人提出了金字塔结构的反模式:蛋筒冰激凌模式和纸杯蛋糕模式

二、web自动化测试
1. 驱动
车有了驱动才能够让车跑起来
计算机有了驱动程序就可以与设备(耳机,摄像头,麦克风,键盘,显示器等等设备)进行通信

安装驱动管理
xml
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
<scope>test</scope>
</dependency>
三、Selenium
1. 一个简单的web自动化示例
1)安装selenium库
xml
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
2)使用selenium编写代码
java
public void search() throws InterruptedException {
//1.打开浏览器(驱动)
WebDriverManager.chromedriver().setup();
//2)添加浏览器配置
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver driver = new ChromeDriver(options);
Thread.sleep(2000);
//2.输入网址:https://www.baidu.com/
driver.get("https://www.baidu.com/");
//3.找到输入框,输入搜索内容
Thread.sleep(2000);
driver.findElement(By.cssSelector("#chat-textarea")).sendKeys("周杰伦");
//4.找到搜索按钮,点击
driver.findElement(By.cssSelector("#chat-submit-button")).click();
//5.关闭浏览器
Thread.sleep(5000);
driver.quit();
}
2. selenium+驱动+浏览器的工作原理
A. Client 端(你的代码)
是什么:你用 Python、Java 或 C# 写的测试脚本(引用了 Selenium 的库)。
作用:它是发号施令的"大脑"。
具体行为:当你写下一句 driver.get("https://www.google.com") 时,Selenium 库并不会直接操作浏览器(因为 Python 根本不懂怎么控制 Chrome),而是把这行代码转换成一个标准的 HTTP RESTful 请求。
B. Driver 端(中间人/翻译官)
是什么:那个你需要单独下载的 chromedriver.exe (Chrome) 或 geckodriver (Firefox)
作用:它是服务器。当你运行脚本时,驱动程序会启动一个轻量级的 Web Server(通常监听在 9515 或类似端口)
具体行为:
它时刻监听来自 Client 的 HTTP 请求
收到请求后,它解析请求内容(比如"打开网页")
它将这个通用请求翻译"成浏览器能听懂的原生指令(Chrome 使用 CDP 协议,Firefox 使用 Marionette 协议)
C. Browser 端(浏览器)
是什么:真实的 Chrome 或 Firefox 应用程序
作用:执行命令的"手脚"
具体行为:接收 Driver 的原生指令,执行点击、输入、滚动等操作,并将执行结果(或报错信息)返回给 Driver
总结来说:
代码 发送 HTTP 请求
Driver 解析请求并操控浏览器
浏览器 执行操作
本期内容到此为止,喜欢的话请点个赞,谢谢观看!!!