自动化测试概念篇

目录

一、自动化

1.自动化概念

1.1 回归测试

2. 自动化分类

2.1 接口自动化

2.2 UI自动化

3. 自动化测试金字塔

二、web自动化测试

1. 驱动

1.1 安装驱动管理

1.2 selenium库

三、selenium

1. 一个简单的web自动化示例

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


一、自动化

1.自动化概念

        自动化测试是指使用自动化工具或框架来执行测试用例的过程。它能够显著减少人工测试的重复性工作,提高测试的准确性和效率。

例如:

  • 自动洒水机,只要通上水就可以自动化洒水并且可以自动的旋转。
  • 自动洗手液,免去了手动挤压,可以自动感应出洗手液。
  • 超市自动闸门,不需要手动的开门关门。

        生活中的自动化案例有效的减少了人力的消耗,同时也提高了生活的质量。

        软件中的自动化测试也是如此,通过自动化测试有效减少人力消耗的同时也提高了测试的质量和效率。

        自动化的主要目的就是用来进行回归测试。那什么是回归测试呢?

1.1 回归测试

        回归测试是自动化测试中的一个重要组成部分,它确保在软件更新或修改后,原有功能仍然按预期工作。自动化回归测试可以快速验证软件的稳定性和可靠性。

软件版本更新后,为了避免新增功能影响到历史的功能需要进行功能的回归。

🌴高频面试题

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

        自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写,后续如果有功能的变更自动化也需要进行不定期的维护和更新。

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

错误。

坑!!!“⼀定程度上”和“大幅度”的表达方式需要特别注意。

2. 自动化分类

自动化测试可以根据测试对象和测试层面的不同进行分类。

2.1 接口自动化

        接口自动化测试专注于测试系统组件之间的接口。它通过模拟请求和验证响应来确保接口的正确性和性能。

2.2 UI自动化

        UI自动化测试关注用户界面元素的测试,包括按钮点击、表单填写等交互操作。它确保用户界面的可用性和一致性。

        UI测试也称为界面测试,常见的UI自动化测试包含web自动化测试、移动端自动化测试等等。

🌴移动端自动化测试

        移动端,顾名思义,就是部署在手机上的应用程序。移动端自动化测试主要测试程序部署在手机上能否按照预期的结果的进行操作。

        移动端测试通常不是将程序部署在移动端上进行测试,而是需要安装模拟器,在电脑上编写自动化测试脚本代码对模拟器上的软件进行操作。

        移动端测试难度相对较大,移动端测试的稳定性要比接口自动化测试和web自动化测试的稳定性要差很多,原因主要是移动端测试受到的环境影响比较多。

🌴web自动化测试

        模拟人在浏览器上的操作行为,自动的打开浏览器,访问百度首页,并进行一系列的搜索和验证等行为。

3. 自动化测试金字塔

        自动化测试金字塔是一种分层的测试策略,从底层的基础测试到顶层的端到端测试,每一层都构建在下一层的基础上,以实现高效的测试覆盖。

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

        然而实际上在企业中,自动化往往是“冰淇淋蛋筒反模式”:

        自动化需要大量的初始投资,找到“突破点”,与手动测试相比,我们开始看到它对长期成本产生的积极影响,也能够清楚,这两种测试活动都是完全兼容,产生短期和长期利益。

二、web自动化测试

        Web自动化测试是针对Web应用程序的自动化测试,它利用特定的工具和框架来模拟用户与Web页面的交互。

1. 驱动

        web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界面进行⼀系列的操作。对于手工测试来说,这一系列的操作都需要测试人员手动的⼀步⼀步的来执行测试。那么对于自动化程序来说,程序如何才能打开浏览器并执行我们预期的操作流程呢?

驱动一词应用广泛,相信大家都不陌生。

汽车有了驱动才能够跑起来。

计算机有了驱动程序就可以与设备(耳机,摄像头,麦克风,键盘,显示器等等设备)进行通信。

        程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化方式驱动浏览器。

1.1 安装驱动管理

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

命令:pip install webdriver-manager

驱动管理:

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

1.2 selenium库

命令:pip install selenium==4.0.0

三、selenium

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

1. 一个简单的web自动化示例

1)检查python解释器,确定selenium库和WebDriverManager库都安装成功并加载到当前项目中

2)使用selenium编写代码

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.ie.service import Service
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")
time.sleep(2)

#3.找到输入框并输入“网易云音乐”
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("网易云音乐")
time.sleep(2)

#4.找到“百度一下”按钮并点击
driver.find_element(By.CSS_SELECTOR,"#su").click()
time.sleep(2)

#5.关闭浏览器
driver.quit()

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. 浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/882197.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统编程】第二十二弹---操作系统核心概念:进程创建与终止机制详解

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、进程创建 1.1、fork函数重识 1.2、fork函数返回值 1.3、写时拷贝 1.4、fork常规用法 1.5、fork调用失败的原因 2、进程…

图像压缩编码(4)--H.26x系列视频压缩编码_2

目录 H.261 视频编码标准 H.261的编码与解码 1) 帧内/帧间编码 2)运动补偿 3)量化 4)环路滤波器 5)缓存器 压缩数据的分层 数据复用结构 H.264的编码与解码 H.261 视频编码标准 实际应用时,要求有…

【C++】list详解及模拟实现

目录 1. list介绍 2. list使用 2.1 修改相关 2.2 遍历 2.3 构造 2.4 迭代器 2.5 容量相关 2.6 元素访问 2.7 操作相关 3. 模拟实现 3.1 节点类 3.1.1 初始结构 3.1.2 节点的构造函数 3.2 迭代器类 3.2.1 初始结构 3.2.2 迭代器 3.2.3 迭代器-- 3.2.4 解引…

基于VUE的医院抗生素使用审核流程信息化管理系统

开发背景 随着医疗行业的快速发展和信息技术的不断进步,医院内部管理系统的信息化建设变得尤为重要。抗生素作为治疗感染性疾病的重要药物,在临床使用过程中需要严格控制以避免滥用导致的耐药性问题。传统的抗生素使用审核流程往往依赖于人工审核&#x…

第十一章 从0-1搭建一个简单的JavaWeb系统(三)

目录 一、工程代码结构 二、代码实现 三、运行效果 四、未完待续 本章节的每一段代码,建议全部自己敲一遍,加深印象,切勿直接复制黏贴。 一、工程代码结构 本章节实现注销(退出)功能,以下图片中标红的…

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件,能够智能识别搜索引擎蜘蛛与普通访客,确保蜘蛛访问时展示原始内容,从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客,该插件则优先显示广告内容&#…

【网络】高级IO——select版本TCP服务器

目录 前言 一,select函数 1.1.参数一:nfds 1.2.参数二: readfds, writefds, exceptfds 1.2.1.fd_set类型和相关操作宏 1.2.2.readfds, writefds, exceptfds 1.2.3.怎么理解 readfds, writefds, exceptfds是输入输出型参数 1.3.参数三…

面试速通宝典——1

1. 内存有哪几种类型? ‌‌‌‌  内存分为五个区,堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量&#…

2024-1.2.12-Android-Studio配置

本地博客: https://k1t0111.github.io/ K1T0 最近在做一些app方向的移动技术开发学习,但是由于AS的配置问题,市面上找不到最新的2024版本的AS的相关配置。笔者也是踩了很多坑,因此想写一篇文章记录一下最新的AS 2024 1.2.12的对应java环境的一…

springboot框架VUE3学院网站系统开发mysql数据库设计java编程计算机网页源码maven项目

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

python 识别省市、区县并组建三级信息数据库

一、网址: 全国行政区划信息查询平台 二、分析并搭建框架 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载json数据,填充到页面的option中。 1、第一步&#xff1a…

探秘 Web Bluetooth API:连接蓝牙设备的新利器

引言 随着物联网技术的快速发展,蓝牙设备在日常生活中扮演着越来越重要的角色。而在 Web 开发领域,Web Bluetooth API 的出现为我们提供了一种全新的方式来连接和控制蓝牙设备。本文将深入探讨 Web Bluetooth API 的使用方法和原理,帮助开发…

浅显易懂的Git教程

Git概述 SVN与Git的对比 SVN(Subversion) 类型:集中式版本控制系统 工作流程: 从中央服务器下载最新版本到本地。在本地进行开发。提交更改回中央服务器。 优点: 简单易用,适合小型团队。版本历史清…

vs2022快捷键异常不起作用解决办法

安装了新版本的vs2022,安装成功后,发现快捷键发生异常,之前常用的快捷键要么发生改变,要么无法使用,比如原来注释代码的快捷键是ctrlec,最新安装版本变成了ctrlkc,以前编译代码的快捷键是F6或者…

初始MYSQL数据库(6)—— 事务

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 目录 事务的概念 事务的ACID特性 使用事务 查看支持事务的存储引擎 事务的语法 保存点 自动/手动提交事务 事务的隔离性和…

Python模拟鼠标轨迹[Python]

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。 二.鼠标轨迹算法实…

【原创】java+swing+mysql仓库管理系统设计与实现

个人主页:程序员杨工 个人简介:从事软件开发多年,前后端均有涉猎,具有丰富的开发经验 博客内容:全栈开发,分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片,希望和大家…

Qt开发技巧(四)“tr“使用,时间类使用,Qt容器取值,类对象的删除,QPainter画家类,QString的转换,用好 QVariant类型

继续讲一些Qt技巧操作 1.非必要不用"tr" 如果程序运行场景确定是某一固定语言,就不需要用tr,"tr"之主要针对多语种翻译的,因为tr的本意是包含英文,然后翻译到其他语言比如中文,不要滥用tr,如果没有…

‌内网穿透技术‌总结

内网穿透是一种网络技术,通过它可以使外部网络用户访问内部网络中的设备和服务。一般情况下,内网是无法直接访问的,因为它位于一个封闭的局域网中,无法从外部访问。而通过内网穿透,可以将内部网络中的设备和服务暴露在…

底盘四轮转向运动学解析(含代码)

目录 写在前面的话四轮转向运动学解析四轮转向理论图解robot_control.py 完整代码关键参数完整代码 公式解析(根据代码)反相--模式1详细图解 正相--模式2轴心--模式3 写在前面的话 网上找了很多资料,对于四轮转向运动学描述的很少&#xff0…