【测试】自动化测试概念篇(C++方向):从零搞懂Web自动化
📌 相关文章推荐
很高兴你点开这篇文章✨
这里会持续更新更多有用的内容,关注我,一起慢慢变好呀
👍 点赞 ⭐ 收藏 💬 评论
文章目录
前言
我没接触自动化测试之前,一直以为自动化测试就是“写代码代替手工点来点去”,但真正开始学才发现,这里面门道还挺多的。
自动化测试不只是写脚本那么简单。你得先搞清楚:自动化到底用来干什么?回归测试是什么?接口自动化和Web自动化有什么区别?自动化测试金字塔又是什么?
- 这篇文章我们将一起了解自动化测试的核心概念和Web自动化的基础知识。如果你也刚接触自动化测试,希望这篇文章能帮你少走一些弯路。
🐾 Web自动化示例的具体实施看这篇文章:链接
一、什么是自动化测试
自动化就是用机器代替人的行为完成操作
-
生活中的自动化例子很多:
自动洒水机、自动洗手液、超市自动闸门。这些都在减少人力消耗,提高生活质量。 -
软件测试中的自动化也是同理:
通过自动化测试减少人力消耗,同时提高测试的质量和效率。
回归测试
回归测试就是软件发新版本时,把所有的老功能重新测一遍,确保新增功能没有破坏原来好用的功能。这个工作如果每次都手工做,成本很高,所以交给自动化来做。
🐾 软件有多个版本需要进行功能的整体回归
- 新版本的开发有可能会对旧版本造成影响,所以新旧版本都要进行测试
- 自动化的主要目的是用来做回归测试
🐾 历史功能
- 每增加一个功能会出现代码的更新/增加/修改/删除…,即会对历史功能造成影响,所以从这方面也要对新旧版本进行测试
二、几个常见的面试题
🐾 自动化测试能取代人工测试吗?
不能。自动化不一定比人工测试更可靠。而且自动化脚本也是人写的,后续功能变更了,脚本也要跟着维护更新。自动化替代不了探索性测试和用户体验测试。
🐾 自动化测试能大幅度降低工作量吗?
不能。正确说法是“一定程度上”降低工作量。说“大幅度”就太绝对了。选择题里看到太绝对的选项,一般都是坑。
三、自动化测试的分类
自动化是一个统称,不是只有一种 。
1. 接口自动化测试
测试后端API接口。不关心界面长什么样,直接测接口的输入输出。优点是稳定、速度快、维护成本低。
2. UI自动化测试
用来测试界面表现,又分两种 :
Web自动化测试:测试网页,模拟人在浏览器上的操作移动端自动化测试:测试手机App,通常用模拟器,在电脑上写脚本操作,肉眼能看到的都要测试
移动端自动化稳定性比接口和Web差,因为受环境影响大(网络、系统版本、手机硬件等)。
四、自动化测试金字塔
测试圈有个很著名的概念叫自动化测试金字塔 。
理想的
-
理想情况下:
单元测试做最多,接口测试次之,UI测试做最少,因为单元测试成本低、跑得快、能快速定位问题。 -
但现实中,很多企业是反过来的——UI测试做最多,单元测试做最少。这叫“冰淇淋蛋筒反模式”。
-
UI测试投入大、维护麻烦、运行慢,但很多公司还是在这上面花最多时间。手工测试和自动化测试应该是互补的,不是互相替代。
实际上的
五、Web自动化测试
1. 手动测试
打开浏览器,百度搜索孙燕姿,即通过手工测试打开浏览器,需要点击浏览器;
2. 自动化测试
1)打开浏览器(程序驱动浏览器)
2)输入百度地址:https://www.baidu.com
3)找到输入框,输入关键词:孙燕姿
4)点击“百度一下”按钮
3. 什么是驱动?
web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界
面进行一系列的操作。对于手工测试来说,这一系列的操作都需要测试人员手动的,一步一步的来执行测试。那么对于自动化程序来说,程序如何才能打开浏览器并执行我们预期的操作流程呢?
- 计算机有了驱动程序就可以与设备(耳机,摄像头,麦克风,键盘,显示器等等设备)进行通信。
4. WebDriver驱动
- 程序要打开浏览器,就需要安装web驱动(即WebDrive)。
它负责把自动化脚本的命令翻译成浏览器能理解的操作。
5. 驱动管理工具
🐾 使用selenium编写自动化脚本,需要提前下载驱动程序 :
- 不同浏览器的驱动是不一样的;
- 不同版本的浏览器也是不一样的(即必须使用和浏览器版本配套的驱动才可以)
🐾 手动安装驱动有个问题:浏览器每次更新,驱动也要跟着手动更新,很麻烦,驱动管理工具的作用就来了!
解决方案是webdriver-manager,自动管理驱动版本,浏览器更新也不会影响自动化执行。
🐾 安装命令 :
pip install webdriver-manager
🐾 安装Selenium
- Selenium是目前最流行的Web自动化测试框架。这里用4.0版本。
🐾 安装命令 :
pip install selenium==4.0.0
六、Web自动化示例
下面这段代码实现了一个自动化的百度搜索:
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
#编写自动化脚本,具体步骤
##1.打开浏览器---驱动管理
ChromeIns=ChromeDriverManager().install()
###创建谷歌浏览器驱动对象
driver=webdriver.Chrome(service=Service(ChromeIns))
time.sleep(2)
##2.输入百度网址:https://www.baidu.com(网址一定要完整,不要写错了)
driver.get("https://www.baidu.com")
##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(2)
##5.关闭浏览器
driver.quit()
🐾 代码逻辑 :
导入需要的模块创建驱动对象,自动下载并安装ChromeDriver打开百度首页通过CSS选择器找到输入框(#kw是百度输入框的id),输入文字找到搜索按钮(#su)并点击关闭浏览器
七、Selenium的工作原理
Selenium、浏览器驱动、浏览器三者之间的交互流程 :
- 自动化脚本在ChromeDriverService中创建一个服务
- 通过这个服务打开WebDriver,服务地址是localhost加一个端口号
- Selenium向浏览器驱动发送HTTP请求,驱动解析请求后打开浏览器,得到一个sessionid(后续操作都要带这个id)
- 之后的所有操作(访问地址、查找元素等)都通过这个服务连接到驱动,然后发送请求
- 驱动收到请求后,转换成浏览器能理解的脚本,发送给浏览器执行
- 浏览器执行完,把结果通过驱动返回给脚本
简化理解:脚本 → 驱动 → 浏览器 → 返回结果
八、知识点汇总
| 知识点 | 核心要点 |
|---|---|
自动化测试 |
用机器代替人执行操作,主要用来做回归测试 |
回归测试 |
新功能开发后,验证历史功能没有被破坏 |
接口自动化 |
测试后端API接口,稳定高效 |
UI自动化 |
测试界面表现,分Web自动化和移动端自动化 |
自动化测试金字塔 |
单元测试最多、接口次之、UI最少(理想) |
WebDriver |
驱动浏览器执行自动化操作 |
webdriver-manager |
自动管理驱动版本 |
Selenium |
Web自动化测试框架 |
工作原理 |
脚本 → 驱动 → 浏览器 → 返回结果 |
九、总结
自动化测试的几个核心点:
概念上 :自动化主要目的是回归测试,不是替代人工;自动化有多种类型(接口、Web、移动端);自动化测试金字塔理论要了解。
实操上 :Web自动化需要Selenium + WebDriver + 浏览器三者配合;用webdriver-manager可以省去手动管理驱动的麻烦;一个最简单的百度搜索脚本也就十来行代码。
🐾 学自动化测试,最重要的是先动手跑起来。把示例代码在自己电脑上跑一遍,能成功打开百度搜索了,后面就好办了。
- 欢迎留言交流
- 期待你的评论与建议
- 留下你的想法吧
谢谢你看到这里呀
如果喜欢这篇内容,点个关注,下次更新不迷路✨
👍 点赞 ⭐ 收藏 💬 评论
更多推荐







所有评论(0)