自动化

什么是自动化?

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

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

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

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

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

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

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

回归测试

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

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

自动化测试的分类

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

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

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

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

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

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

自动化测试金字塔

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

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

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

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

web自动化

驱动的理解

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

web自动化测试工具selenium

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

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

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

安装selenium 库

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

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

 Chrome for Testing availability

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


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编写的自动化脚本代码中,可以在终端看到创建的驱动服务地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917410.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917410.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917410.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日主题切换网页:用纯前端技术打造随心情变化的动态界面

🎨 每日主题切换网页:用纯前端技术打造随心情变化的动态界面 项目地址:https://github.com/hhse/daily-theme-switcher 在线演示:https://hhse.github.io/daily-theme-switcher 这里写目录标题🎨 每日主题切换网页&…

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution )简介与简单示例

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

uniapp 富文本rich-text 文本首行缩进和图片居中

1. uniapp 富文本rich-text 文本首行缩进和图片居中 1.1. rich-text 文本首行缩进使用 rich-text 组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换…

Apple基础(Xcode③-Singbox Core)

brew install go open ~/.bash_profile export PATH="$PATH:$(go env GOPATH)/bin" 先确保工具链完整 go install github.com/sagernet/gomobile/cmd/gomobile@v0.1.4 go install github.com/sagernet/gomobile/cmd/gobind@v0.1.4 gomobile init -v # 关键:-v …

JVM学习日记(十四)Day14——性能监控与调优(一)

经过前几篇的铺垫,现在开始正式进入调优篇,也是大火实际用的到的和感兴趣的,但是前期的知识积累还是有必要的,所以还对JVM基础没什么了解的,建议还是回看主包的前几篇内容,当然看其他优秀的博主也是可以的。…

使用 Elasticsearch 和 AI 构建智能重复项检测

作者:来自 Elastic Dayananda Srinivas 探索组织如何利用 Elasticsearch 检测和处理贷款或保险申请中的重复项。 Elasticsearch 带来了大量新功能,帮助你为你的使用场景构建最佳搜索方案。深入了解我们的示例 notebooks,开始免费云试用&#…

如何在不依赖 Office 的情况下转换 PDF 为可编辑文档

在日常工作里,我们经常需要处理各种文件格式的转换问题,像Word转PDF或者PDF转Excel这样的需求屡见不鲜。它是一款功能全面的PDF转换工具,能够帮助你轻松应对多种文档处理任务。不仅能够实现PDF与其他格式之间的转换,如Word、Excel…

嵌入式学习笔记-MCU阶段--DAY09

1. oled屏幕的接口IIC应用场合:2.IIC通信原理概念:IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司…

解决 Node.js 托管 React 静态资源的跨域问题

在 Node.js 项目中托管 React 打包后的静态资源时,可能会遇到跨域问题(CORS)。以下是几种解决方案: 1. 使用 Express 中间件设置 CORS 头 const express require(express); const path require(path); const app express();// …

【Linux】多路转接之epoll

优化poll进行拷贝的开销poll开销过大将整个 pollfd 数组拷贝到内核态,以便内核检查 fd 是否就绪(从用户态 → 内核态)。内核检查 fd 状态,并填充 revents。将 pollfd 数组从内核态拷贝回用户态,让应用程序可以读取 rev…

下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目

官网:开发环境搭建 | JEECG 文档中心 一般做开发的电脑里都是有的,没有的只能下载了 前端安装 node官网:https://nodejs.org/zh-cnpnpm安装:通过命令 后端安装: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解决 InputStream 只能读取一次问题

是的,InputStream 的一个重要特性是它通常只能被读取一次。这是因为:输入流通常是单向的、顺序访问的数据源很多流(如网络流、文件流)读取后指针就移动了,无法回退有些流(如Socket流)甚至读取后…

数据分析面试题

技都测试 1、请列举5个 Excel 中常用的函数及写法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 单元格数值≥60,返回 “及格”,否则返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 数值 > 100&#xff0c…

【07】VisionMaster入门到精通——Blob分折

文章目录0 视屏讲解与演示1 案例演示2 参数详解1 运行参数0 视屏讲解与演示 1 案例演示 周长使能查找U型槽 短轴使能查找U型槽 面积筛选区域 当条件不符合是,该模块显示红色,状态为NG 显示二值图像 显示Blob图像 2 参数详解 Blob分折,…

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景

解释 MySQL 中的 EXPLAIN 命令的作用和使用场景 总结性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查询执行计划的命令,它能展示 MySQL 如何执行一个查询,包括使用的索引、表连接顺序、扫描行数等关键信息。主要用于查询性能优化,帮助开发者识别潜…

.env 文件

.env 文件其实就是一个纯文本文件,用来写“环境变量”键值对,格式非常简单 👇✅ .env 文件写法格式:每一行就是一个变量名 值,不要加引号,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

机器学习——K 折交叉验证(K-Fold Cross Validation),案例:逻辑回归 交叉寻找最佳惩罚因子C

什么是交叉验证? 交叉验证是一种将原始数据集划分为若干个子集,反复训练和验证模型的策略。 交叉验证(Cross-Validation)适用于你在模型调参(如逻辑回归中的 C) 最常用的:K 折交叉验证&#…

蓝桥杯----串口

(五)、串口1、串口通信简介制定通信的规则,通信双方按照协议规则进行数据收发,将一个设备的数据传送到另一个设备,扩展硬件系统,串口USART有两根通信线Tx、Rx,可同时双向通信,称之为…

错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException

背景: 代码没有更改,主类位置也没有移动,运行时突然报找不到或无法加载主类的错误 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException编译器上方显示 Java file is located outside of the module source root so it wont …

Lock 接口及实现类详解:从 ReentrantLock 到并发场景实践

在 Java 并发编程中,除了synchronized关键字,java.util.concurrent.locks.Lock接口及其实现类是另一种重要的同步机制。自 JDK 5 引入以来,Lock接口凭借灵活的 API 设计、可中断的锁获取、公平性控制等特性,成为复杂并发场景的首选…