本节⽬标:

  • ⾃动化测试
  • Web⾃动化测试
  • selenium

1. ⾃动化

1.1 ⾃动化概念

    ⾃动化在⽣活中处处可⻅,⾃动的代替⼈的⾏为完成操作。

    ⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。

    ⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗⼿液

    超市⾃动闸⻔,不需要⼿动的开⻔关⻔

    ⽣活中的⾃动化案例有效的减少了⼈⼒的消耗,同时也提⾼了⽣活的质量。

    软件中的⾃动化测试也是如此,通过⾃动化测试有效减少⼈⼒的消耗的同时也提⾼了测试的质量和效率。

    • 测试人员编写自动化测试脚本
    • 增加新的功能:测试人员需要同步增加对应的自动化脚本
    • 自动化测试报错:测试人员需要维护并解决自动化脚本问题

    ⾃动化的主要⽬的就是⽤来进⾏回归测试。回归测试是什么要讲到位

    1.1.1 回归测试

    软件有多个版本需要进⾏功能的整体回归。

    为了避免新增功能影响到历史的功能需要进⾏功能的回归。

    常⻅⾯试题

    1.⾃动化测试能够取代⼈⼯测试吗?

    ⾃动化测试不⼀定⽐⼈⼯测试更能保障系统的可靠性,⾃动化测试是测试⼈员⼿⼯编写,后续如果有功能的变更⾃动化也需要进⾏不定期的维护和更新。

    2.⾃动化测试可以⼤幅度降低⼯作量?

    错误

    坑!!“⼀定程度上”和“⼤幅度”的表达⽅式也需要注意

    tips:测试笔试中的选择题尽量不要选择说的太死或者太绝对的选项 

    1.2 ⾃动化分类

    • 很多同学经常听到⾃动化这个词,但是很容易误以为⾃动化就是⼀个东西,⾃动化是个统称,同

    学们可以理解为我们常说的吃⽠这样的表达⽅式和⾃动化是⼀样的,吃⽠可以是吃西⽠,吃哈密

    ⽠,吃⾹⽠,⾃动化也包含多种,如接⼝⾃动化,web⾃动化,移动端⾃动化等等...

    • 主要介绍各测试分类为什么需要实施⾃动化,⽬的和意义

    1.2.1 接⼝⾃动化

    什么是接⼝⾃动化测试?

    为什么要做?解决了什么问题,⽬的是什么

    1.2.2 UI⾃动化

    UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、客户端⾃动化测试等等。

    客户端:pc端  移动端

    1.2.2.1 移动端⾃动化测试

    什么是移动端⾃动化测试?

    为什么要做?解决了什么问题,⽬的是什么

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

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

    移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多,诸如什么呢????

    1.2.2.2 web⾃动化测试

    什么是web⾃动化测试?

    为什么要做?解决了什么问题,⽬的是什么

    如何进⾏百度搜索?

    通常来说我们⼿动进⾏百度搜索的步骤如下,web⾃动化能够代替我们⾃动的执⾏。

    模拟⼈在浏览器上的操作⾏为,⾃动的打开浏览器,访问百度⾸⻚,并进⾏⼀系列的搜索和验证等⾏为。

    1.3 ⾃动化测试⾦字塔

    ⾃动化的类型⾮常多,那么到底哪⼀种是最好的?哪⼀种测试的收益会更佳?

    这⾥我们介绍测试圈内⾮常著名的⾃动化测试⾦字塔

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

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

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

    2. web⾃动化测试

    学到这⾥,希望同学们对⾃动化测试能够有⼀定的了解。然后实际在企业中,我们需要对某⼀个特定的软件进⾏⾃动化的实施,包含但不限于软件所有界⾯的UI⾃动化测试、所有接⼝的接⼝⾃动化测试。

    接下来我们将正式步⼊web⾃动化测试的学习,了解企业中是如何使⽤⼯具来统⼀编写和管理⾃动化⽤例。

    2.1 驱动

    上⾯给⼤家已经介绍过,web系统的测试前提是需要打开浏览器,通过访问web服务器来对服务器界⾯进⾏⼀系列的操作。对于⼿⼯测试来说,这⼀系列的操作都需要测试⼈员⼿动的,⼀步⼀步的来执⾏测试。那么对于⾃动化程序来说,程序如何才能打开浏览器并执⾏我们预期的操作流程呢?

    驱动⼀词应⽤⼴泛,同学们都不会陌⽣。

    ⻋有了驱动才能够让⻋跑起来。

    计算机有了驱动程序就可以与设备(⽿机,摄像头,⻨克⻛,键盘,显⽰器等等设备)进⾏通信。

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

    器。

    2.1.1 安装驱动管理

    驱动管理:

    WebDriverManager是⼀个开源Java库,以完全⾃动化的⽅式对Selenium WebDriver所需的驱动程 序(如chromedriver、geckodriver、msedgedriver等)进⾏管理(即下载、设置和维护),⾃版本5起,WebDriverManager还提供了其他相关功能,如发现本地系统中安装的浏览器的能⼒,构建 WebDriver对象(如ChromeDriver、FirefoxDriver、EdgeDriver等)

            <dependency><groupId>io.github.bonigarcia</groupId><artifactId>webdrivermanager</artifactId><version>5.8.0</version><scope>test</scope></dependency>

    3. Selenium

    万事俱备,只⽋东⻛。

    接下来就是使⽤selenium来编写web⾃动化测试脚本。

    selenium是⼀个web⾃动化测试⼯具,selenium中提供了丰富的⽅法供给使⽤者进⾏web⾃动化测

    试。

    3.1 ⼀个简单的web⾃动化⽰例

    1)安装selenium库

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

    2)使⽤selenium编写代码

    package com.example.seleniumaototest;import io.github.bonigarcia.wdm.WebDriverManager;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;public class FirstTest {//测试百度搜索关键词迪丽热巴public void test01() throws InterruptedException {//1.打开浏览器WebDriverManager.chromedriver().setup();//增加浏览器配置,创建对象时允许访问所有链接ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");WebDriver driver = new ChromeDriver(options);Thread.sleep(1000);//2.输入完整网址:https://www.baidu.comdriver.get("https://www.baidu.com");Thread.sleep(1000);//3.找到输入框,输入“迪丽热巴”driver.findElement(By.cssSelector("#kw")).sendKeys("迪丽热巴");Thread.sleep(1000);///4.找到百度一下driver.findElement(By.cssSelector("#su")).click();Thread.sleep(1000);//5.关闭浏览器driver.quit();}
    }
    

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

    驱动需要接收、解析请求,发送请求给浏览器,那么驱动到底是什么样的⻆⾊呢?

    验证⽅式:

    1)执⾏selenium编写的⾃动化脚本代码中,可以在终端看到创建的驱动服务地址。

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

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

    相关文章

    Java中给List<T> 对象集合去重

    Java中给List 对象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

    最小二乘法MSE

    最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知识: 矩阵相关公式y(339−11430126−395−87422−309)y\begin{pmatrix} 339&a…

    Pixel 4D 3.4.4.0 | 支持丰富的壁纸资源,高清画质,高度的个性化设置能力,智能推荐功能

    Pixel 4D是一款功能强大且用户体验良好的动态壁纸应用。它提供了丰富的壁纸资源和高清画质&#xff0c;让用户可以轻松找到自己喜欢的壁纸。此外&#xff0c;该应用还具备高度的个性化设置能力&#xff0c;允许用户根据自己的喜好调整壁纸效果。智能推荐功能则能帮助用户发现更…

    <PhotoShop><JavaScript><脚本>基于JavaScript,利用脚本实现PS软件批量替换图片,并转换为智能对象?

    前言 PhotoShop软件支持JavaScript脚本,来扩展软件的功能,官方本身也提供了一些常用脚本,如图像处理等,同时也支持自定义的JavaScript脚本。 环境配置 系统:windows 平台:visual studio code 语言:JavaScript 软件:PhotoShop 2022 版本:23.2.1 概述 本文利用Java…

    【Linux】System V - 基于建造者模式的信号量

    目录 信号量和P、V原语 信号量集结构体 信号量操作接口 semget semctl semop 封装Sem 关于建造者模式 信号量和P、V原语 信号量和 P、V 原语由 Dijkstra &#xff08;迪杰斯特拉&#xff09;提出 信号量值含义 S>0: S 表⽰可⽤资源的个数 S0: 表⽰⽆可⽤资源&a…

    机器学习(11):岭回归Ridge

    岭回归是失损函数通过添加所有权重的平方和的乘积(L2)来惩罚模型的复杂度。均方差除以2是因为方便求导&#xff0c;w_j指所有的权重系数, λ指惩罚型系数&#xff0c;又叫正则项力度特点:岭回归不会将权重压缩到零&#xff0c;这意味着所有特征都会保留在模型中&#xff0c;但它…

    调整Idea缓存目录,释放C盘空间

    本文使用 Idea2024 Idea 会将一些配置默认缓存在C盘&#xff0c;使用久了会占用大量空间&#xff08;本人的Idea占用了将近5个G&#xff0c;以至于不得不进行迁移&#xff09; 缓存目录主要涉及以下四个目录&#xff0c;四个目录可以分为两组&#xff0c;每组目录必须一起调整 …

    手搓栅格工具-山体阴影

    一、概述 山体阴影工具通过为栅格中的每个像元确定照明度&#xff0c;来获取表面的假定照明度。 通过设置假定光源的位置并计算每个像元相对于相邻像元的照明度值来实现此目的。 它可以显著增强用于分析或图形显示的表面的可视化效果&#xff0c;尤其是在使用透明度时。 默认情…

    Censtos docker安装方法

    #设置防火墙 systemctl stop firewalld.service setenforce 0 #安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-utils&#xff1a;提供了 yum-config-manager 工具。 #device mapper&#xff1a; 是Linux内核中支持逻辑卷管理的通用设备映射机制…

    单片机51 day46

    单片机 一&#xff1a;基础概念 一&#xff1a;单片机最小系统 单片机&#xff1a;电源时钟&#xff08;晶振&#xff09;复位 //实现的最小组件 电源&#xff1a;5V直流 时钟(晶振)&#xff1a;决定系统运行的速率 一般12M&#xff08;不超过50M&#xff09;&#xff0c…

    【无标题】解锁未来无线网络的无限可能——Mesh自组网设备

    在科技迅猛发展的今天&#xff0c;无线网络已经成为了现代生活不可或缺的一部分。无论是在家庭中娱乐观看视频、在线游戏&#xff0c;还是在企业中进行办公、远程协作&#xff0c;网络的稳定性和覆盖范围都直接影响着我们的使用体验。传统的Wi-Fi网络在面临多设备同时连接或大面…

    Libevent(5)之使用教程(4)工具

    Libevent(5)之使用教程(4)工具函数 Author: Once Day Date: 2025年8月3日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 本文档翻译于&#xff1a;Fast portable non-blo…

    Linux指令(3):

    1. cal指令&#xff1a;我们的cal指令有日历的意思看上面&#xff0c;我们输入一个cal指令&#xff0c;可以查看当前月的日历&#xff0c;我们给cal指令后面加上 - 3&#xff0c;他就会显示这个月为中间的三个月的日历&#xff0c;但是-4 不行&#xff0c;-5 也不行。只能 - 3。…

    MLS平滑滤波

    1.前言 最近在学习&#xff0c;因此查阅相关资料&#xff0c;该怎么表述感觉有些困难 2.代码 2.1代码1 使用全局坐标系 参考&#xff1a;python点云移动最小二乘法(Moving Least Squares)平滑_移动最小二乘法python-CSDN博客 def Moving_Least_Squares_Smoothing_v1_expla…

    华为2288H V5服务器闪红灯 无法开机案例

    广东某客户1台华为2288H V5服务器&#xff0c;由于单位外围电力维修导致服务器有过一次异常断电。结果来电之后发现服务器无法开机&#xff0c;开机面板上有个红色心跳指示灯&#xff0c; 工程师到客户现场后通过192.168.2.100登陆到2288H V5服务器的BMC管理口&#xff0c;打算…

    SRIO入门之官方例程仿真验证

    仿真SRIO事务时序仿真之前先完成下面两步操作&#xff1a;1.Vivado软件版本2020.1&#xff0c;创建好工程及SRIO的IP核2.右键综合化的IP核&#xff0c;然后选择打开IP示例工程直接运行仿真分别将request和response两个模块添加到仿真窗口进行查看运行1000us左右就可以看到信号动…

    CMake进阶: 使用FetchContent方法基于gTest的C++单元测试

    目录 1.前言 2.FetchContent详解 2.1.FetchContent简介 2.2.FetchContent_Declare 2.2.1.简介 2.2.2.关键特性 2.2.3.常见示例 2.3.FetchContent_MakeAvailable 2.3.1.简介 2.3.2.核心功能与工作流程 2.3.3.示例用法 2.3.4.关键特性 2.3.5.常见问题与解决方案 3.…

    亚马逊广告投放:如何减少无效曝光提高ROI

    “为什么广告花费高但转化率低&#xff1f;”“如何判断关键词是否值得继续投放&#xff1f;”“曝光量暴涨但订单没增加怎么办&#xff1f;”“ACOS居高不下该如何优化&#xff1f;”“手动广告和自动广告的预算怎么分配&#xff1f;”如果你也在为这些问题头疼&#xff0c;说…

    Ethereum:拥抱开源,OpenZeppelin 未来的两大基石 Relayers 与 Monitor

    不知道大家是否注意到&#xff0c;OpenZeppelin 正在经历一次重大的战略转型。他们决定在 2026 年 7 月 1 日正式关闭其广受好评的 SaaS 平台——Defender&#xff0c;并将重心全面转向开源工具的建设。 这一举动在社区引发了广泛的讨论&#xff0c;也标志着 OpenZeppelin 希望…

    HFSS许可监控与分析

    在电磁仿真领域&#xff0c;HFSS&#xff08;High Frequency Structure Simulator&#xff09;因其卓越的性能和广泛的应用而受到用户的青睐。然而&#xff0c;随着企业和研究机构对HFSS使用需求的不断增长&#xff0c;如何有效监控和分析HFSS许可证的使用情况&#xff0c;以确…