自动化测试准备工作:概念篇

自动化

什么是自动化?

超市的自动闸门,不需要手动的开门关门生活中的自动动化案例有效的减少了人力的消耗,同时也提高了生活的质量。

软件自动化测试同理,通过编写自动化测试程序(减少人力和时间的消耗,提高软件的测试质量),自动化测试主要是用来进行回归测试。

针对自动化这个问题,非常容易出两道面试题

  • 自动化测试能够取代人工测试吗?

自动化测试不能取代人工测试,首先自动化测试不一定比人工测试更能保证系统的可靠性**,**再者自动化测试是由测试人员进行编写的也需要进行不定期的维护和更新。

  • 自动化测试可以大幅度降低工作量?

这是一个坑,只能说自动化测试可以一定程度上进行降低工作量,大幅进行降低工作量这个太绝对。

回归测试

当软件新增加一个功能后,在新版本上线之前需要将之前产品存在的功能重新进行测试,防止新功能的上线导致之前的功能出现故障。

因此,新旧版本都需要执行测试。

自动化测试的分类

想要进行清楚自动化主要是围绕着软件的哪些方面进行的测试,首先要清楚软件通常有哪几个部分?

软件主要分为两大类:浏览器进行打开的软件、终端可以进行打开的软件(app)

浏览器进行打开的软件又分为web前端和后端服务器

app分为客户端和后端的服务器

所以说自动化的分类就分为接口自动化 和前端自动化。

前端自动化又分为web界面测试自动化和客户端界面测试自动化。

自动化测试金字塔

⾃动化的类型⾮常多,那么到底哪⼀种是最好的?哪⼀种测试的收益会更佳? 这⾥我们介绍测试圈内⾮常著名的⾃动化测试⾦字塔

理想的⾃动化测试⾦字塔表达了⾃动化测试的理想情况,利⽤较少的时间和精⼒在单元测试上就能够 发现更多有效的问题。

然后实际上在企业中,自动化往往是"冰淇淋蛋筒反模式" ,如下图所示

在实际的开发中通过UI自动化和接口自动化发现的问题是非常有限的,并且开发人员并不是很重视单元测试,因此实际上手动进行探索测试的回报率是最高的,因此有了冰淇淋蛋筒反模式。

web自动化

驱动的理解

我们在进行学习操作系统的时候就了解过驱动,驱动位于硬件的上层,操作系统的下层,通过驱动实现硬件和软件的交互。

web自动化测试工具selenium

我们要进行在百度进行搜索"感动中国的十大人物"

手动:手动打开浏览器,需要点击浏览器软件,然后进行搜索,这种情况是手工进行驱动浏览器的打开

自动化:① 打开浏览器 ②输入百度网址 ③找到输入框,输入关键词"感动中国的十大人物" ④点击"百度一下"按钮,这种请i况下就是程序驱动浏览器打开。

安装selenium 库

安装对应浏览器的驱动 (以chorme浏览器为例)

通过下面的网址进行下载对应的驱动

Chrome for Testing availability

编写自动化进行测试的小 demo 验证浏览器的驱动是否安装成功并进行体会自动化测试

python 复制代码
import time
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

# 设置 Chrome 浏览器的路径
chrome_options = Options()
chrome_options.binary_location = "C:/Program Files/Google/Chrome/Application/chrome.exe"  # 修改为你自己的路径

# 使用 webdriver_manager 自动下载 ChromeDriver,并创建 Service 对象
service = Service(ChromeDriverManager().install())  # 正确实例化 Service 类

# 启动浏览器
driver = webdriver.Chrome(service=service, options=chrome_options)

driver.get("https://www.baidu.com")


#找到搜索框,输入关键词
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("感动中国十大人物")
time.sleep(2)

#点击百度一下
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(2)

#关闭浏览器
driver.close()

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

这三者是如何进行交互的呢?

具体步骤解析如下:

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

验证方式:执行selenium编写的自动化脚本代码中,可以在终端看到创建的驱动服务地址。

相关推荐
狂师8 小时前
AI时代我们要如何玩抓包测试:Reqable + AI Agent
前端·程序员·测试
冬奇Lab19 小时前
LLM 驱动的自动化测试系列(13):Flaky Test 不是重跑几次就能解决的分类问题
人工智能·测试
AI测试布道师21 小时前
CodexQA Code Wiki:让一个陌生仓库,先回答“从哪读起”
aigc·测试
匠测AI说21 小时前
AI for Testing 提效实战 · 执行自动化(三):把 AI 接进 CI——红灯一亮,AI 已把根因贴在 PR 评论区
人工智能·测试
落梦纷飞1 天前
开发与测试怎么闭环?聊聊把「用例生成技能」交给写代码的那个 Agent
e2e·测试
闻缺陷则喜何志丹1 天前
详细设计说明书的内容要求
算法·测试·存储
冬奇Lab2 天前
LLM 驱动的自动化测试系列(12):像素 diff 之外,谁真的在让 LLM「看懂」UI 变化
人工智能·测试
ClouGence2 天前
Katalon Studio、Testim、mabl、CueCast 4 款自动化测试工具怎么选?
测试
stillstream_ink2 天前
一个缺失的状态校验,让 Mall4j 的订单系统开了 4 个后门
mysql·测试
货拉拉技术2 天前
货拉拉业务 Agent 评测平台的工程实践与深度思考
测试