举爪爪打招呼

很高兴你点开这篇文章✨

这里会持续更新更多有用的内容,关注我,一起慢慢变好呀

👍 点赞 ⭐ 收藏 💬 评论


前言

我没接触自动化测试之前,一直以为自动化测试就是“写代码代替手工点来点去”,但真正开始学才发现,这里面门道还挺多的

自动化测试不只是写脚本那么简单。你得先搞清楚:自动化到底用来干什么?回归测试是什么?接口自动化和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()

🐾 代码逻辑

  1. 导入需要的模块
  2. 创建驱动对象,自动下载并安装ChromeDriver
  3. 打开百度首页
  4. 通过CSS选择器找到输入框(#kw是百度输入框的id),输入文字
  5. 找到搜索按钮(#su)并点击
  6. 关闭浏览器

七、Selenium的工作原理

Selenium、浏览器驱动、浏览器三者之间的交互流程

  1. 自动化脚本在ChromeDriverService中创建一个服务
  2. 通过这个服务打开WebDriver,服务地址是localhost加一个端口号
  3. Selenium向浏览器驱动发送HTTP请求,驱动解析请求后打开浏览器,得到一个sessionid(后续操作都要带这个id)
  4. 之后的所有操作(访问地址、查找元素等)都通过这个服务连接到驱动,然后发送请求
  5. 驱动收到请求后,转换成浏览器能理解的脚本,发送给浏览器执行
  6. 浏览器执行完,把结果通过驱动返回给脚本

简化理解:脚本 → 驱动 → 浏览器 → 返回结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


八、知识点汇总

知识点 核心要点
自动化测试 用机器代替人执行操作,主要用来做回归测试
回归测试 新功能开发后,验证历史功能没有被破坏
接口自动化 测试后端API接口,稳定高效
UI自动化 测试界面表现,分Web自动化和移动端自动化
自动化测试金字塔 单元测试最多、接口次之、UI最少(理想)
WebDriver 驱动浏览器执行自动化操作
webdriver-manager 自动管理驱动版本
Selenium Web自动化测试框架
工作原理 脚本 → 驱动 → 浏览器 → 返回结果

九、总结

自动化测试的几个核心点

概念上 :自动化主要目的是回归测试,不是替代人工;自动化有多种类型(接口、Web、移动端);自动化测试金字塔理论要了解。


实操上 :Web自动化需要Selenium + WebDriver + 浏览器三者配合;用webdriver-manager可以省去手动管理驱动的麻烦;一个最简单的百度搜索脚本也就十来行代码。

🐾 学自动化测试,最重要的是先动手跑起来。把示例代码在自己电脑上跑一遍,能成功打开百度搜索了,后面就好办了。

  1. 欢迎留言交流
  2. 期待你的评论与建议
  3. 留下你的想法吧

举爪爪求关注

谢谢你看到这里呀

如果喜欢这篇内容,点个关注,下次更新不迷路✨

👍 点赞 ⭐ 收藏 💬 评论

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐