自动化测试-Selenium(一),简介

自动化测试-Selenium

1. 什么是自动化测试

1.1 自动化测试介绍

自动化测试是一种通过自动化工具执行测试用例来验证软件功能和性能的过程。与手动测试不同,自动化测试使用脚本和软件来自动执行测试步骤,记录结果,并比较预期输出和实际输出。自动化测试的主要目标是提高测试效率、减少人为错误、增加测试覆盖率,并在软件开发生命周期的不同阶段提供持续反馈。

简单来说,就是将人工要做的测试工作尽心转换,让代码去执行测试工作,这样是为了提高测试效率,提高测试产品的质量。

1.2 自动化测试的优点

  1. 效率高:自动化测试可以快速执行大量的测试用例,显著减少测试时间。
  2. 重复性好:测试脚本可以反复使用,适用于回归测试,确保新版本软件没有引入新的问题。
  3. 精确度高:自动化测试可以减少人为错误,提供更可靠的测试结果。
  4. 覆盖面广:能够轻松覆盖不同的操作系统、浏览器、设备等,增加测试覆盖面。
  5. 可持续集成:自动化测试易于集成到持续集成/持续部署(CI/CD)管道中,支持持续测试和反馈。

2. 自动化测试的类型

自动化测试主要包括三大类:UI自动化测试、接口自动化测试和单元测试自动化。

2.1 UI自动化测试

概述: UI(用户界面)自动化测试通过自动化工具模拟用户在应用程序界面上的操作,验证用户界面功能是否正常。它主要关注用户与应用程序的交互,包括按钮点击、文本输入、页面导航等。

工具:

  • Selenium:广泛用于Web应用的自动化测试。
  • Appium:用于移动应用(iOS和Android)的自动化测试。
  • Cypress:现代Web测试框架,适用于前端应用的快速测试。

优点:

  • 可以模拟真实用户的操作,确保用户界面功能正常。
  • 能够在不同环境(浏览器、设备)中进行测试。

缺点:

  • 测试脚本容易受UI变化影响,需要频繁维护。
  • 执行速度相对较慢,不适合频繁变动的项目。

2.2 接口自动化测试

概述: 接口自动化测试(API测试)通过直接调用API接口,验证应用程序的业务逻辑和数据处理是否正确。它通常不涉及用户界面,主要测试应用程序的后端服务和数据交换。

工具:

  • Postman:常用的API开发和测试工具。
  • RestAssured:用于Java的RESTful服务测试框架。
  • SoapUI:用于SOAP和REST API测试的工具。

优点:

  • 不受UI变化影响,维护成本低。
  • 执行速度快,适合频繁变动的项目。
  • 可以进行功能、性能、安全等多种类型的测试。

缺点:

  • 需要了解API的实现和业务逻辑。
  • 无法直接验证用户界面的功能。

2.3 单元测试自动化

概述: 单元测试自动化通过测试应用程序的最小可测试单元(通常是一个函数或方法),确保代码的正确性和健壮性。单元测试通常由开发人员编写,并在开发过程中频繁运行。

工具:

  • JUnit:用于Java的单元测试框架。
  • NUnit:用于.NET的单元测试框架。
  • pytest:用于Python的单元测试框架。

优点:

  • 快速发现和修复代码中的错误。
  • 提供详细的代码覆盖率报告。
  • 易于集成到持续集成/持续部署(CI/CD)管道中。

缺点:

  • 需要开发人员编写测试代码。
  • 无法测试整个应用程序的集成和用户界面。

3. Selenium 介绍

3.1 什么是Selenium

Selenium 是一个开源的自动化测试框架,专门用于Web应用程序的自动化测试。它支持多种编程语言(如Java、Python、C#、Ruby等)以及多种浏览器(如Chrome、Firefox、Safari、Edge等)。Selenium 主要包括以下几个组件:

  • Selenium WebDriver:核心组件,提供跨浏览器的API,用于与浏览器交互。
  • Selenium IDE:浏览器插件,提供录制和回放功能,适合快速生成测试脚本。
  • Selenium Grid:用于分布式测试,支持在多个浏览器和操作系统上并行执行测试。
  • Selenium RC(Remote Control):Selenium 1中的组件,已被WebDriver取代,但在一些老旧系统中仍有使用。

Selenium 最广泛使用的是WebDriver,它可以直接与浏览器进行通信,模拟用户操作,进行功能测试、回归测试等。

一句话来讲就是:Selenium 是做UI自动化测试的一个工具。

3.2 为什么使用Selenium

多浏览器支持:Selenium支持多种浏览器,如Chrome、Firefox、Safari、Edge等,能够保证在不同浏览器上测试Web应用的一致性。

多语言支持:Selenium支持多种编程语言,如Java、Python、C#、Ruby等,适应不同开发团队的需求。

开源:Selenium是开源工具,不需要购买许可证,可以降低测试成本。---- 免费

跨平台支持:Selenium可以在不同的操作系统(如Windows、macOS、Linux等)上运行,具有良好的跨平台兼容性。

灵活性和可扩展性:Selenium可以与其他工具(如TestNG、JUnit、Maven、Jenkins等)集成,支持构建复杂的自动化测试框架,满足各种自动化测试需求。

社区和文档:Selenium拥有庞大的社区支持和丰富的文档资源,方便学习和解决问题。

3.3 Selenium的工作原理

Selenium WebDriver的工作原理可以分为以下几个步骤:

  1. 初始化WebDriver
    选择并初始化对应的浏览器驱动程序(如ChromeDriver、GeckoDriver等)。

  2. 启动浏览器
    WebDriver通过驱动程序启动指定的浏览器实例。

  3. 加载网页
    WebDriver命令浏览器打开指定的URL,加载网页。

  4. 执行操作
    WebDriver通过调用浏览器驱动程序,执行测试脚本中的各种操作,如查找元素、点击按钮、输入文本、提交表单等。这些操作通过浏览器驱动程序转换为相应的浏览器指令。

  5. 获取结果
    WebDriver获取操作结果,并将结果返回给测试脚本,如元素的属性值、页面的标题、文本内容等。

  6. 验证结果
    测试脚本根据预期结果对实际结果进行验证,判断测试是否通过。

  7. 关闭浏览器
    测试执行完成后,WebDriver关闭浏览器实例,释放资源。

image-20240606121859142

这里主要有三个角色:

1)自动化脚本代码(在idea里面写的代码)

2)驱动:有了这个驱动就可以对页面进行操作

3)浏览器

简单点来说,就是我们idea中的代码和浏览器是通过驱动来交互的。这个驱动就是一个中间人,idea中的代码会构造成一个请求发送给驱动,驱动收到并解析这个请求,然后就执行相应的操作。

3.4 示例

以简单的测试为例,使用Selenium WebDriver在Chrome浏览器中打开一个网页,查找元素并执行点击操作:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
    public static void main(String[] args) {
        // 初始化WebDriver
        WebDriver driver = new ChromeDriver();

        // 打开指定的URL
        driver.get("http://example.com");

        // 查找元素
        WebElement element = driver.findElement(By.xxxxx);

        // 执行点击操作
        element.click();

        // 关闭浏览器
        driver.quit();
    }
}

在这个示例中,ChromeDriver 启动Chrome浏览器,WebDriver加载指定的URL并查找ID为myElement的元素,执行点击操作,最后关闭浏览器。

总结

Selenium 是一个功能强大、灵活性高的自动化测试工具,能够大幅提高Web应用测试的效率和准确性。其多语言、多浏览器、跨平台支持以及广泛的社区资源,使其成为自动化测试的首选工具之一。

4. Selenium 环境搭建(Java)

在这片文章中,详细介绍了Selenium的环境搭建流程

的效率和准确性。其多语言、多浏览器、跨平台支持以及广泛的社区资源,使其成为自动化测试的首选工具之一。

4. Selenium 环境搭建(Java)

在这片文章中,详细介绍了Selenium的环境搭建流程

[Selenium环境搭建]: https://blog.csdn.net/m0_73292466/article/details/139421961

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

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

相关文章

第十一篇——信息增量:信息压缩中的保守主义原则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过信息中的保守主义,我想到了现实中人的保守主义一样&#…

【InternLM实战营第二期笔记】07:OpenCompass :是骡子是马,拉出来溜溜

文章目录 课程实操 课程 评测的意义是什么呢?我最近也在想。看到这节开头的内容后忽然有个顿悟:如果大模型最终也会变成一种基础工具(类比软件),稳定或可预期的效果需要先于用户感知构建出来,评测 case 就…

项目方案:社会视频资源整合接入汇聚系统解决方案(五)

目录 一、概述 1.1 应用背景 1.2 总体目标 1.3 设计原则 1.4 设计依据 1.5 术语解释 二、需求分析 2.1 政策分析 2.2 业务分析 2.3 系统需求 三、系统总体设计 3.1设计思路 3.2总体架构 3.3联网技术要求 四、视频整合及汇聚接入 4.1设计概述 4.2社会视频资源分…

javascript动态绑定

介绍 先来看看ai的解释 动态绑定机制是面向对象编程中的一个核心概念,特别是在Java这样的语言中。它允许在运行时根据对象的实际类型来决定调用哪个方法,而不是在编译时。这是多态性的关键特性之一。 在Java中,动态绑定是通过方法调用和方法…

安卓事件交互(按键事件、触摸事件、手势识别、手势冲突处理)

本章介绍App开发常见的以下事件交互技术,主要包括:如何检测并接管按键事件,如何对触摸事件进行分发、拦截与处理,如何根据触摸行为辨别几种手势动作,如何正确避免手势冲突的意外状况。 按键事件 本节介绍App开发对按…

人脸考勤项目实训

第一章 Python-----Anaconda安装 文章目录 第一章 Python-----Anaconda安装前言一、Anaconda是什么?二、Anaconda的前世今生二、Windows安装步骤1.官网下载2.安装步骤安装虚拟环境 总结 前言 工欲善其事必先利其器,项目第一步,安装我们的环境…

Mysql的底层实现逻辑

Mysql5.x和Mysql8性能的差异 整体性能有所提高, 在非高并发场景下,他们2这使用区别不大,性能没有明显的区别。 只有高并发时,mysql8才体现他的优势。 2. Mysql数据存储结构Innodb逻辑结构 数据选用B树结构存储数据&#xff0…

基于STM32的595级联的Proteus仿真

文章目录 一、595级联1.题目要求2.思路3.仿真图3.1 未仿真时3.2 模式A3.2 模式B3.3 故障模式 二、总结 一、595级联 1.题目要求 STM32单片机,以及三个LED灯对应红黄绿灯,IIC的OLED显示屏,温湿度传感器DHT11,两个独立按键和两个5…

深度学习的实用性探究:虚幻还是现实?

深度学习的实用性探究:虚幻还是现实? 深度学习作为人工智能领域的一个热点,已经在学术和工业界引起了广泛的关注。尽管深度学习技术显示出惊人的性能和潜力,但有时它们给人的感觉是“虚”的,或许是因为它们的抽象性和…

react修改本地运行项目的端口

一、描述 如果你想让项目在你想要的端口打开的话,就需要进行设置 二、代码 设置一下pages.json文件就可以了,如下: 如果想打开项目不需要点击下面的链接地址,让他运行npm run dev之后自己直接打开到浏览器的话,在后…

猫头虎分享已解决Bug || Uncaught TypeError: Cannot set property ‘innerHTML‘ of null**

猫头虎分享已解决Bug || Uncaught TypeError: Cannot set property ‘innerHTML’ of null** 原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 &#x…

盘点2024年5月Sui生态发展,了解Sui近期成长历程!

2024年5月是Sui的第一个生日月,Sui迎来了它的上线一周年纪念日。在过去的一年中Sui在技术进步与创新、生态系统的扩展、社区发展与合作伙伴关系以及重大项目和应用推出方面取得重要进展,展示了其作为下一代区块链平台的潜力。 以下是Sui的近期成长历程集…

一、Electron 环境初步搭建

新建一个文件夹,然后进行 npm init -y 进行初始化,然后我们在进行 npm i electron --save-dev , 此时我们按照官网的教程进行一个初步的搭建, 1.在 package.json 文件进行修改 {"name": "electron-ui","version…

pyqt QlineEdit内部增加按钮方法

按钮放在QlineEdit内部,界面更紧凑,体现了按钮和文本框的强关联。 def addButton(self,lineEdit):btn QtWidgets.QPushButton("")icon1 QtGui.QIcon()icon1.addPixmap(QtGui.QPixmap(":/image/images/th.png"), QtGui.QIcon.Norm…

同盾中文点选验证码识别方法

中文验证码一直是识别的难题,首先他分类的种类很多,常见中文都有3500个,而且一般中文验证码都会有变形,导致每一个文字都需要大量训练样本。假设每一个汉字样本需要100个,100350035万个样本,所以标记的样本…

DeepSORT(目标跟踪算法)中的数值表格与调参的关系

DeepSORT(目标跟踪算法)中的数值表格与调参的关系 flyfish DeepSORT(目标跟踪算法)中的马氏距离详解(很详细) DeepSORT(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原…

【最新鸿蒙应用开发】——类Web开发范式1——生命周期

兼容JS的类Web开发范式 类Web命令式开发的生命周期 1. 应用生命周期 1.1. app.js 每个应用可以在app.js自定义应用级生命周期的实现逻辑,包括: onCreate:在应用生成时被调用的生命周期函数。 onDestroy:在应用销毁时被调用的生…

使用 C# 学习面向对象编程:第 2 部分

C# 类属性简介 属性在面向对象编程中起着至关重要的作用。它们允许我们从类外部访问类的私有变量。在类中使用私有变量是很好的。属性看起来像变量和方法的组合。属性有部分:“get 和 set”方法。get 方法应该返回变量,而 set 方法应该为其赋值。 步骤…

技术前沿 |【大模型InstructBLIP进行指令微调】

大模型InstructBLIP进行指令微调 一、引言二、InstructBLIP模型介绍三、指令微调训练通用视觉语言模型的应用潜力四、InstructBLIP的指令微调训练步骤五、实验结果与讨论六、结论与展望 一、引言 随着人工智能技术的快速发展,视觉语言模型(Vision-Langu…

【Java】解决Java报错:ArrayIndexOutOfBoundsException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 直接访问数组越界2.2 循环中的索引错误2.3 多维数组的错误访问 3. 解决方案3.1 检查数组长度3.2 正确使用循环3.3 多维数组的正确访问 4. 预防措施4.1 使用增强型 for 循环4.2 编写防御性代码4.3 单元测试 结语 引言 在Java编程…