1. 自动化

1.1 自动化概念

动的代替人的行为完成操作。
动化在生活中处处可见,
⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。
⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗⼿液
超市⾃动闸⻔,不需要⼿动的开⻔关⻔
⽣活中的⾃动化案例有效的减少了⼈⼒的消耗,同时也提⾼了⽣活的质量。
软件中的⾃动化测试也是如此,通过⾃动化测试有效减少⼈⼒的消耗的同时也提⾼了测试的质量和效率。
⾃动化的主要⽬的就是⽤来进⾏回归测试。什么是回归测试?

1.1.1 回归测试

软件有多个版本需要进⾏功能的整体回归。
为了避免新增功能影响到历史的功能需要进行功能的回归。
软件通常有非常多的版本,软件在不断的迭代更新,当新的版本即将上线,意味着有用户使用新的版本,也有用户在使用旧的版本
新的版本开发可能会影响到旧的版本,如果不对旧版本进行测试,可能会出现新版本上线之后旧版本无法使用或者旧版本出现了功能故障
因此,新版本和旧版本都需要执行测试
常见面试题
1.自动化测试能够取代人工测试吗?
⾃动化测试不⼀定⽐⼈⼯测试更能保障系统的可靠性,⾃动化测试是测试⼈员⼿⼯编写,
后续如果有功能的变更⾃动化也需要进⾏不定期的维护和更新。
2.自动化测试可以大幅度降低工作量         
错误
坑!!“⼀定程度上”和“⼤幅度”的表达⽅式也需要注意
注意:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项~~~

1.2 自动化分类

  • 讲⾃动化分类的⽬的是避免同学们将⾃动化混淆,同时避免讲不同的⾃动化如何实施造成的课时压力
  • 很多同学经常听到⾃动化这个词,但是很容易误以为⾃动化就是⼀个东西,⾃动化是个统称,同学们可以理解为我们常说的吃⽠这样的表达⽅式和⾃动化是⼀样的,吃⽠可以是吃西⽠,吃哈密⽠,吃⾹⽠,⾃动化也包含多种,如接⼝⾃动化,web⾃动化,移动端⾃动化等等...
  • 主要介绍各测试分类为什么需要实施自动化,⽬的和意义

1.2.1 接口自动化

1. 接口自动化是什么

用代码 / 工具自动调用软件接口(前后端传数据的通道),自动发请求、自动校验返回结果,不用人工手动点、手动填参数

2. 为什么做、解决什么问题、目的

  1. 解决手动测接口慢、重复、易错:接口多、场景多,人工反复测很累还容易错
  2. 提前发现 bug:接口是底层,接口错了页面一定错,接口测试早于 UI 测试
  3. 回归测试省力:改完代码自动跑一遍所有接口,防止改坏旧功能
  4. 提高效率:大量用例一键执行,节省人工
  5. 目的保证接口稳定、数据传输正确、业务逻辑无误,降低回归成本

1.2.2 UI自动化

UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、移动端⾃动化测试等等。
移动端自动化测试
什么是移动端自 决了什么问题,⽬的是什么
测试移动端界⾯表现
移动端,顾名思义,就是部署在⼿机上的应⽤程序。移动端⾃动化测试主要测试程序部署在⼿机上能否按照预期的结果的进行操作。
移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测试脚本代码对模拟器上的软件进行操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多
web自动化测试
什么是web⾃动化测试?
为什么要做?解决了什么问题,⽬的是什么
测试web界⾯表现
如何进⾏百度搜索?
通常来说我们手动进行百度搜索的步骤如下,web⾃动化能够代替我们自动的执行。
模拟⼈在浏览器上的操作⾏为,⾃动的打开浏览器,访问百度⾸⻚,并进⾏⼀系列的搜索和验证等行为。

1.3 自动化测试金字塔

⾃动化的类型⾮常多,那么到底哪⼀种是最好的?哪⼀种测试的收益会更佳?
这⾥我们介绍测试圈内⾮常著名的⾃动化测试⾦字塔
理想的自动化测试金字塔表达了自动化测试的理想情况,利用较少的时间和精力在单元测试上就能够发现更多有效的问题。
上图是理想化的自动化测试金字塔,然而在企业中,实际上是冰淇淋蛋筒反模式
自动化需要⼤量的初始投资,找到“突破点”,与⼿动测试相⽐,我们开始看到它对⻓期成本产⽣的
积极影响,也能够清楚,这两种测试活动都是完全兼容,产⽣短期和⻓期利益。

2. web自动化测试

学到这里,希望同学们对自动化测试能够有一定的了解。然后实际在企业中,我们需要对某一个特定的软件进行自动化的实施,包含但不限于软件所有界面的UI自动化测试、所有接口的接口自动化测试。
接下来我们将正式步入web自动化测试的学习,了解企业中是如何使用工具来统一编写和管理自动化用例。

2.1 驱动

上面给⼤家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界面进行⼀系列的操作。对于手工测试来说,这⼀系列的操作都需要测试⼈员手动的,⼀步⼀步的来执⾏测试。那么对于自动化程序来说,程序如何才能打开浏览器并执行我们预期的操作流程呢?
驱动⼀词应用广泛,同学们都不会陌⽣。
车有了驱动才能够让车跑起来。
计算机有了驱动程序就可以与设备(⽿机,摄像头,⻨克⻛,键盘,显⽰器等等设备)进⾏通信。
程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化⽅式驱动浏览
器。

2.1.1 安装驱动管理

selenium安装谷歌浏览器驱动

这里我们采用谷歌

淘宝镜像:CNPM Binaries Mirror

必须使用跟浏览器版本配套的驱动才可以,若版本不匹配,则无法开发浏览器

Chrome 驱动只要求前 3 段大版本一致(148.0.7778),最后一位差 1 完全兼容,不会报错。

下载之后把安装包进行解压

浏览器若更新了呢?----意味着目前已下载的驱动无法使用~~~
每次浏览器更新都需要重新下载新的驱动,整个流程非常冗余/麻烦

若通过安装驱动的方式来启动浏览器,每次浏览器更新后对应的驱动也需要更新,为了解决这个问
题,selenium中提供了驱动管理⼯具webdriver-manager,有了webdriver-manager无需手动安装浏览器驱动,即使浏览器更新也不会影响自动化的执行。
命令:pip install webdriver-manager

安装完成
驱动管理:
webdriver-manager⽀持的python版本为:3.7~3.11
WebDriver Manager是⼀个开源的命令⾏⼯具,它可以⾃动下载和安装适⽤于不同浏览器的
WebDriver。通过使⽤WebDriver Manager,我们可以确保浏览器驱动版本始终与浏览器版本保持⼀致,从而避免因版本不匹配而导致的各种问题。

2.1.2 selenium库

安装selenium库
selenium版本很多,统⼀使用selenium 4.0.0版本
pip install selenium==4.0.0

安装完毕

3. Selenium

万事俱备,只欠东风。
接下来就是使⽤selenium来编写web自动化测试脚本。 selenium是⼀个web⾃动化测试⼯具,selenium中提供了丰富的方法供给使用者进⾏web⾃动化测试。

3.1 一个简单的web自动化示例

1)检查python解释器,确定selenium库和WebDriverManager库都安装成功并加载到当前项目中
2)使用selenium编写代码
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
# #编写自动化脚本,具体步骤
# #1.打开浏览器----驱动管理
ChromeIns = "D:\\chromedriver-win64\\chromedriver.exe" #ChromeDriverManager().install()
#创建谷歌浏览器驱动对象
driver  = webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
#2.输入百度网址:https://www.baidu.com
driver.get("https://www.baidu.com")
time.sleep(2)
#3.找到百度输入框,输入关键词“迪丽热巴"
driver.find_element(By.CSS_SELECTOR,"#chat-textarea").send_keys("迪丽热巴")
time.sleep(2)
#4.点击“百度一下”按钮
driver.find_element(By.CSS_SELECTOR,"#chat-submit-button").click()
time.sleep(15)
#5.关闭浏览器
driver.quit()

注意:驱动管理方式初始化浏览器 代码在运行的时候会自动帮你下载浏览器驱动 有的时候它的下载驱动链接会被屏蔽掉 就无法正常访问 驱动下载不成功 代码就会报错  ,改成手动下载 加指定驱动路径,驱动是提前下载好的  ,就不会再去下载了,不过浏览器会自动更新,小版本一般不影响,大版本更新了 要重新下载驱动  
简单来说 就是没有自动帮我们下载好 对应浏览器的驱动 所以我们需要手动下载 并且指定手动下载好的驱动的路径

3.2 selenium+驱动+浏览器的工作原理

实现web⾃动化测试需要浏览器、浏览器驱动、selenium⾃动化脚本。这三者是如何交互最终实现
web的⾃动化测试?
1. 通过selenium编写的⾃动化脚本代码中在ChromeDriverService中创建⼀个服务
2. 通过创建好的服务打开webdriver,安装在本地的驱动服务IP为localhost,PORT为
ChromeDriverService中创建的端⼝号,该服务地址为selenium向webdriver发送请求的服务地
址。
3. 向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
4. 打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过创建好的服务链接到
webdriver,然后使⽤execute发送请求
5. 驱动收到请求并对请求进⾏解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执行对应动作
6. 浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐