文章目录
- 1. 自动化
- 1.1 自动化概念
- 1.2 自动化分类
- 1.2.1 接口自动化
- 1.2.2 UI自动化
- 1.3 自动化测试金字塔
- 2. Web自动化测试
- 2.1 驱动
- 3. Selenium
- 3.1 一个简单的Web自动化示例
- 3.2 Selenium + 驱动 + 浏览器的工作原理
1. 自动化
1.1 自动化概念
自动化是指自动地代替人的行为完成操作。自动化在生活中处处可见,例如自动洒水机、自动洗手液、超市自动闸门等。这些自动化案例有效减少了人力的消耗,同时也提高了生活的质量。
软件中的自动化测试也是如此,通过自动化测试有效减少人力的消耗,同时提高测试的质量和效率。自动化的主要目的是进行回归测试。
1.2 自动化分类
自动化测试是一个统称,包含多种类型,如接口自动化、Web自动化、移动端自动化等。
1.2.1 接口自动化
什么是接口自动化测试?
接口自动化测试是通过自动化脚本对系统的接口进行测试,验证接口的功能、性能、安全性等。
为什么要做接口自动化测试?
- 解决手动测试效率低的问题
- 提高测试覆盖率
- 减少回归测试的时间
1.2.2 UI自动化
UI测试也称为界面测试,常见的UI自动化测试包含Web自动化测试、移动端自动化测试等。
移动端自动化测试:
-
什么是移动端自动化测试?
移动端自动化测试主要测试程序部署在手机上能否按照预期的结果进行操作。 -
为什么要做移动端自动化测试?
移动端测试通常不是将程序部署在移动端上进行测试,而是需要安装模拟器,在电脑上编写自动化测试脚本代码对模拟器上的软件进行操作。
Web自动化测试:
-
什么是Web自动化测试?
Web自动化测试是模拟人在浏览器上的操作行为,自动打开浏览器,访问网页,并进行一系列的搜索和验证等行为。 -
为什么要做Web自动化测试?
Web自动化测试可以减少手动测试的工作量,提高测试效率,尤其是在回归测试中。
1.3 自动化测试金字塔
自动化测试金字塔表达了自动化测试的理想情况,利用较少的时间和精力在单元测试上就能够发现更多有效的问题。
理想的自动化测试金字塔:
- 单元测试:最底层,覆盖最多的代码,发现最多的问题
- 集成测试:中间层,验证模块之间的接口
- UI测试:最上层,验证用户界面的功能
实际中的自动化测试“冰淇淋蛋筒反模式”:
自动化测试需要大量的初始投资,找到“突破点”,与手动测试相比,自动化测试能够产生长期成本上的积极影响。
2. Web自动化测试
Web自动化测试是通过自动化脚本模拟用户在浏览器上的操作行为,自动执行测试用例。
2.1 驱动
Web系统的测试前提是需要打开浏览器,通过访问Web服务器来对服务器界面进行一系列的操作。对于自动化程序来说,程序需要通过Web驱动(WebDriver)来打开浏览器并执行预期的操作流程。
驱动管理:
WebDriverManager是一个开源Java库,用于管理Selenium WebDriver所需的驱动程序(如Chromedriver、geckodriver、msedgedriver等),自动下载、设置和维护驱动程序。
示例代码:
<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.0.3</version>
</dependency>
3. Selenium
Selenium是一个Web自动化测试工具,提供了丰富的方法供使用者进行Web自动化测试。
3.1 一个简单的Web自动化示例
1)安装Selenium库:
<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version>
</dependency>
2)使用Selenium编写代码:
public void example_test() {// 驱动程序管理的自动化WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();// 允许访问所有链接options.addArguments("--remote-allow-origins=*");// 1、打开浏览器WebDriver driver = new ChromeDriver(options);// 2、输入百度网址: https://www.baidu.comdriver.get("https://www.baidu.com");// 3、找到输入框并输入“迪丽热巴”driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪丽热巴");// 4、找到“百度一下”按钮并点击driver.findElement(By.xpath("//*[@id=\"su\"]")).click();// 5、关闭浏览器driver.quit();
}
3.2 Selenium + 驱动 + 浏览器的工作原理
实现Web自动化测试需要浏览器、浏览器驱动、Selenium自动化脚本。这三者通过以下步骤交互:
- 创建服务:通过Selenium编写的自动化脚本代码在ChromeDriverService中创建一个服务。
- 打开WebDriver:通过创建好的服务打开WebDriver,安装在本地的驱动服务IP为localhost,PORT为ChromeDriverService中创建的端口号。
- 发送HTTP请求:向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid。
- 执行操作:打开浏览器后,所有的Selenium操作(访问地址、查找元素等)均通过创建好的服务链接到WebDriver,然后使用execute发送请求。
- 解析请求:驱动收到请求并对请求进行解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执行对应动作。
- 返回结果:浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。