[测试]自动化的概念 及使用Selenium实现Web自动化测试

文章目录

      • 1. 自动化
        • 1.1 自动化概念
        • 1.2 自动化分类
          • 1.2.1 接口自动化
          • 1.2.2 UI自动化
        • 1.3 自动化测试金字塔
      • 2. Web自动化测试
        • 2.1 驱动
      • 3. Selenium
        • 3.1 一个简单的Web自动化示例
        • 3.2 Selenium + 驱动 + 浏览器的工作原理

1. 自动化

1.1 自动化概念

自动化是指自动地代替人的行为完成操作。自动化在生活中处处可见,例如自动洒水机、自动洗手液、超市自动闸门等。这些自动化案例有效减少了人力的消耗,同时也提高了生活的质量。

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

1.2 自动化分类

自动化测试是一个统称,包含多种类型,如接口自动化、Web自动化、移动端自动化等。

1.2.1 接口自动化

什么是接口自动化测试?
接口自动化测试是通过自动化脚本对系统的接口进行测试,验证接口的功能、性能、安全性等。

为什么要做接口自动化测试?

  • 解决手动测试效率低的问题
  • 提高测试覆盖率
  • 减少回归测试的时间
1.2.2 UI自动化

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

移动端自动化测试:

  • 什么是移动端自动化测试?
    移动端自动化测试主要测试程序部署在手机上能否按照预期的结果进行操作。

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

Web自动化测试:

  • 什么是Web自动化测试?
    Web自动化测试是模拟人在浏览器上的操作行为,自动打开浏览器,访问网页,并进行一系列的搜索和验证等行为。

  • 为什么要做Web自动化测试?
    Web自动化测试可以减少手动测试的工作量,提高测试效率,尤其是在回归测试中。

1.3 自动化测试金字塔

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

理想的自动化测试金字塔:

  • 单元测试:最底层,覆盖最多的代码,发现最多的问题
  • 集成测试:中间层,验证模块之间的接口
  • UI测试:最上层,验证用户界面的功能

在这里插入图片描述

实际中的自动化测试“冰淇淋蛋筒反模式”:
在这里插入图片描述

自动化测试需要大量的初始投资,找到“突破点”,与手动测试相比,自动化测试能够产生长期成本上的积极影响。


2. Web自动化测试

Web自动化测试是通过自动化脚本模拟用户在浏览器上的操作行为,自动执行测试用例。

2.1 驱动

Web系统的测试前提是需要打开浏览器,通过访问Web服务器来对服务器界面进行一系列的操作。对于自动化程序来说,程序需要通过Web驱动(WebDriver)来打开浏览器并执行预期的操作流程。

驱动管理:
WebDriverManager是一个开源Java库,用于管理Selenium WebDriver所需的驱动程序(如Chromedriver、geckodriver、msedgedriver等),自动下载、设置和维护驱动程序。

示例代码:

<dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.0.3</version>
</dependency>

3. Selenium

Selenium是一个Web自动化测试工具,提供了丰富的方法供使用者进行Web自动化测试。

3.1 一个简单的Web自动化示例

1)安装Selenium库:

<dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version>
</dependency>

2)使用Selenium编写代码:

public void example_test() {// 驱动程序管理的自动化WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();// 允许访问所有链接options.addArguments("--remote-allow-origins=*");// 1、打开浏览器WebDriver driver = new ChromeDriver(options);// 2、输入百度网址: https://www.baidu.comdriver.get("https://www.baidu.com");// 3、找到输入框并输入“迪丽热巴”driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪丽热巴");// 4、找到“百度一下”按钮并点击driver.findElement(By.xpath("//*[@id=\"su\"]")).click();// 5、关闭浏览器driver.quit();
}
3.2 Selenium + 驱动 + 浏览器的工作原理

在这里插入图片描述

实现Web自动化测试需要浏览器、浏览器驱动、Selenium自动化脚本。这三者通过以下步骤交互:

  1. 创建服务:通过Selenium编写的自动化脚本代码在ChromeDriverService中创建一个服务。
  2. 打开WebDriver:通过创建好的服务打开WebDriver,安装在本地的驱动服务IP为localhost,PORT为ChromeDriverService中创建的端口号。
  3. 发送HTTP请求:向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid。
  4. 执行操作:打开浏览器后,所有的Selenium操作(访问地址、查找元素等)均通过创建好的服务链接到WebDriver,然后使用execute发送请求。
  5. 解析请求:驱动收到请求并对请求进行解析,转成浏览器能够解析的脚本并发送给浏览器,浏览器通过请求的内容执行对应动作。
  6. 返回结果:浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。

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

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

相关文章

Python教程(三):类对象、闭包、装饰器、类型注解、MRO

Python总结&#xff08;三&#xff09; 本系列其他教程&#xff1a; Python教程(一)&#xff1a;基本语法、流程控制、数据容器 Python教程(二)&#xff1a;函数、异常、模块&包、文件读取、常用模块 文章目录 Python总结&#xff08;三&#xff09;一、类&对象1.1 成…

什么是 HTML?

HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup LanguageHTML 不是一种编程语言&#xff0c;而是一种标记语言标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页HTML 文档包含了HTML 标签及文本内容HTML文档也叫做 web 页面 HT…

【Hadoop】Hadoop的简要介绍

Hadoop是一个由Apache基金会所开发的分布式系统基础架构&#xff0c;主要用于解决海量数据的存储及分析计算问题。以下是对Hadoop的详细介绍&#xff1a; 目录 一、Hadoop的起源与发展 二、Hadoop的核心组件 1.HDFS&#xff1a; 2.MapReduce&#xff1a; 3.YARN&#xff…

如何用AI制作PPT,轻松实现高效演示

如何用AI制作PPT&#xff0c;轻松实现高效演示&#xff01;在今天这个快节奏的时代&#xff0c;我们的工作方式越来越依赖智能工具。而当涉及到演示文稿时&#xff0c;传统的PPT制作方式往往繁琐且耗时。很多人一提到制作PPT就头大&#xff0c;特别是在内容需要多次修改、调整布…

Canoe Panel基础功能介绍

文章目录 一、新建 Panel 面板二、添加 Panel 面板三、删除 Panel 面板四、Panel视图&#xff08;views&#xff09;五、控件布局1. 对齐布局2. 控件大小布局 六、Panel 属性设置1. 设置背景色和背景图片2. 调整 Panel 画布大小 提示&#xff1a;如何使用 Panel 面板参考 CANoe…

超声重建,3D重建 超声三维重建,三维可视化平台 UR 3D Reconstruction

1. 超声波3D重建技术的实现方法与算法 技术概述 3D超声重建是一种基于2D超声图像生成3D体积数据的技术&#xff0c;广泛应用于医学影像领域。通过重建和可视化三维结构&#xff0c;3D超声能够显著提高诊断精度和效率&#xff0c;同时减少医生的脑力负担。本技术文档将详细阐述…

2.2 企业级ESLint/Prettier规则定制

文章目录 1. 为什么需要企业级代码规范2. 工具选型对比3. 完整配置流程3.1 项目初始化3.2 ESLint深度配置3.3 Prettier精细配置3.4 解决规则冲突4. 高级定制方案4.1 自定义ESLint规则4.2 扩展Prettier插件5. 团队协作策略5.1 配置共享方案5.2 版本控制策略6. CI/CD集成7. 常见问…

QT创建项目(项目模板、构建系统、选择类、构建套件)

1. 项目模版 项目类型界面技术适用场景核心依赖模块开发语言Qt Widget ApplicationC Widgets传统桌面应用&#xff08;复杂控件&#xff09;Qt WidgetsCQt Console Application无 GUI命令行工具、服务Qt CoreCQt Quick ApplicationQML/Quick现代跨平台应用&#xff08;动画/触…

oracle11.2.0.4 RAC 保姆级静默安装(二) DB数据库软件

1.响应文件配置 [rootdb11g1 software]# su - oracle [oracledb11g1 ~]$ cd /software/database/ [oracledb11g1 database]$ cd response/ [oracledb11g1 response]$ vi db_install.rsp oracle.install.optionINSTALL_DB_SWONLY ORACLE_HOSTNAMEdb11g1 UNIX_GROUP_NAME…

日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(22):给与和得到相关用法

日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(22):给与和得到相关用法 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) あげます :给(2)もらいます(いただきます) 得到。(3) くれました :主要是给我。3、单词(1)日语单词(2)日语片假名…

Qt5中视口(ViewPort)与窗口(Window)

在Qt中&#xff0c;setViewport和setWindow是用于控制坐标系映射的核心方法&#xff0c;二者共同决定了绘图逻辑与物理设备之间的转换关系。以下是关键点总结&#xff1a; ‌1. 视口&#xff08;Viewport&#xff09;与窗口&#xff08;Window&#xff09;的核心区别‌ ‌视口…

迪威 3D 模型发布系统:制造业产品展示革新利器

在竞争激烈的制造业领域&#xff0c;如何将产品全方位、直观地呈现给客户&#xff0c;成为企业脱颖而出的关键。传统的产品展示方式往往受限于平面资料或有限的实物展示&#xff0c;难以让客户深入了解产品的复杂结构与精妙细节。迪威 3D 模型发布系统的问世&#xff0c;为制造…

EasyCVR安防视频汇聚平台助力工业园区构建“感、存、知、用”一体化智能监管体系

在现代工业园区的安全管理和高效运营中&#xff0c;视频监控系统扮演着不可或缺的角色。然而&#xff0c;随着园区规模的扩大和业务的复杂化&#xff0c;传统的视频监控系统面临着诸多挑战&#xff0c;如设备众多难以统一管理、数据存储分散、智能分析能力不足、信息利用率低下…

解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败

文章目录 解决 Redis 后台持久化失败的问题&#xff1a;内存不足导致 fork 失败问题背景与成因解决方案修改内核参数 vm.overcommit_memory增加系统内存或 Swap 空间调整 Redis 配置 stop-writes-on-bgsave-error 在 Docker 环境中的注意事项总结 解决 Redis 后台持久化失败的问…

反射、反射调用以及修改成员变量,成员方法,构造函数、反射的应用

DAY11.2 Java核心基础 反射&#xff08;第二弹&#xff09; 第一弹请访问链接&#xff1a; 反射&#xff08;第一篇&#xff09; getMethod(String name, Class… parameterTypes)getMethods()getDeclaredMethod(String name,Class… parameterTypes)getDeclaredMethods() …

【鸿蒙开发】Hi3861学习笔记- 外部中断

00. 目录 文章目录 00. 目录01. 概述02. EXTI相关API03. 硬件设计04. 软件设计05. 实验现象06. 附录 01. 概述 我们在做按键控制实验时&#xff0c;虽然能实现 IO 口输入功能&#xff0c;但代码是一直在检测 IO 输入口的变化&#xff0c;因此效率不高&#xff0c;特别是在一些…

使用 crontab 定时同步服务器文件到本地

https://www.dong-blog.fun/post/1987 1. 安装 sshpass sshpass 是一个可以自动输入密码的工具。如果未安装&#xff0c;运行以下命令安装&#xff1a; • 对于 Debian/Ubuntu 系统&#xff1a; apt update && apt install sshpass• 对于 CentOS/RHEL 系统&#xf…

反射机制的理解

一、getName 方法解析 代码功能 public static String getName(String key) throws IOException {Properties properties new Properties();FileInputStream in new FileInputStream("D:\\路径...\\application.properties");properties.load(in); // 加载配置文…

Visual studio + Qt 项目配置管理

Visual studio Qt 项目配置管理 1.本机顺利安装 vs 和 Qt 软件 ​ 并且设置好Qt 的环境变量比如 E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include //这里是你电脑上Qt的路径&#xff0c;每台电脑不一样…

通过 Python 爬虫提高股票选股胜率

此贴为Python爬虫技术学习贴 在股票中&#xff0c;即便有了选股规则&#xff0c;从5000多只股票中筛选出符合规则的股票也是十分困难的&#xff0c;于是想通过爬虫来实现自动化的快速选股。全文用GP代替股票 实现方案 1、指定两套规则&#xff0c;第一套弱约束&#xff0c;第…