自动化测试概念篇

news2024/11/17 13:24:36

目录

一、自动化

1.1 自动化概念

1.2 自动化分类

1.3 自动化测试金字塔

二、web自动化测试

2.1 驱动

2.2 安装驱动管理

三、selenium

3.1 ⼀个简单的web自动化示例

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


一、自动化

1.1 自动化概念

在生活中:
  • 自动洒水机,主要通上水就可以自动化洒水并且可以自动的旋转;
  • 自动洗手液,免去了手动挤压可以自动感应出洗手液;
  • 超市自动闸门,不需要手动的开门关门;
生活中的自动化案例有效的减少了人力的消耗,同时也提高了生活的质量。
软件中的自动化测试也是如此,通过自动化测试有效减少人力的消耗的同时,也提高了测试的质量和效率。
自动化的主要目的就是用来进行回归测试。
回归测试是指在软件代码、使用环境或产品需求发生改变时,通过重新执行已经通过的测试用例,以检测产品中是否出现了新的问题或错误的测试过程。这种测试类型主要适用于软件开发周期中的迭代式开发过程和升级维护过程中。
自动化测试能够取代人工测试吗?
自动化测试不一定比人工测试更能保障系统的可靠性,自动化测试是测试人员手工编写,后续如果有功能的变更,自动化也需要进行不定期的维护和更新。
自动化测试可以 大幅度 降低工作量?
错误。或许表达为自动化测试在一定程度上可以降低工作量更加合理。

1.2 自动化分类

1. 接口自动化测试

2. UI/界面自动化: ①客户端自动化测试 ;② web自动化测试

1.3 自动化测试金字塔

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

往往实际开发中,自动化是“冰淇淋蛋筒反模式”。手工测试才能发现更多的问题,投入的精力也更大。

二、web自动化测试

web自动化测试就是 模拟人在浏览器上的操作行为,自动的打开浏览器,访问某个页面,并进行一系列的搜索和验证等行为。

2.1 驱动

对于自动化程序来说,程序如何才能打开浏览器并执行预期的操作流程呢?那么就需要驱动。程序想要打开web浏览器就需要安装web驱动(即WebDriver),WebDriver 以本地化方式驱动浏览器。

2.2 安装驱动管理

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>

三、selenium

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编写代码

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.com
 driver.get("https://www.baidu.com");
 
 //3、找到输⼊框并输⼊“迪丽热巴”
 driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪丽热巴");

 //4、找到“百度⼀下”按钮并点击
 driver.findElement(By.xpath("//*[@id=\"su\"]")).click();
 
 //5、关闭浏览器
 driver.quit();
 }
public class runCase {
    public static void main(String[] args) throws InterruptedException {
        example_demo test = new example_demo();
        test.example_test();
    }
}

 运行测试代码之后,测试完成,也可以在代码中添加sleep,以便更好的观察,更改代码为:


   //测试百度搜索关键词:迪丽热巴
    public void example_test() throws InterruptedException {
        //驱动程序管理的⾃动化
        WebDriverManager.chromedriver().setup();

        //增加浏览器配置:创建驱动对象要强制指定运行访问所有的链接
        ChromeOptions options = new ChromeOptions();

        //允许访问所有链接
        options.addArguments("--remote-allow-origins=*");

        //1、打开浏览器
        WebDriver driver = new ChromeDriver(options);
        Thread.sleep(3000);

        //2.输⼊百度⽹址:https://www.baidu.com
        driver.get("https://www.baidu.com");
        Thread.sleep(3000);

        //3、找到输⼊框并输⼊“迪丽热巴”
        driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("迪丽热巴");
        Thread.sleep(3000);

        //4、找到“百度⼀下”按钮并点击
        driver.findElement(By.xpath("//*[@id=\"su\"]")).click();
        Thread.sleep(3000);

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

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

实现web自动化测试需要浏览器、浏览器驱动、selenium自动化脚本。

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

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

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

相关文章

cv::convexityDefects异常

cv::convexityDefects捕捉到cv::Exception OpenCV(4.8.0) C:\GHA-OCV-1\_work\ci-gha-workflow\ci-gha-workflow\opencv\modules\imgproc\src\convhull.cpp:360: error: (-5:Bad argument) The convex hull indices are not monotonous, which can be in the case when the inp…

拓扑排序(初中组)

有向无环图 定义 边有向&#xff0c;无环。英文名叫 Directed Acyclic Graph&#xff0c;缩写是 DAG。一些实际问题中的二元关系都可使用 DAG 来建模。 性质 能 拓扑排序 的图&#xff0c;一定是有向无环图&#xff1b; 如果有环&#xff0c;那么环上的任意两个节点在任意序…

特征构造和降维

特征构造&#xff08;Feature Engineering&#xff09; 特征构造是从现有数据中创建新的特征&#xff0c;以揭示数据中的隐藏关系&#xff0c;从而提高模型表现。这是数据预处理中一个关键步骤&#xff0c;可以显著提升模型的性能。 原理 通过特征构造&#xff0c;我们可以利…

“云计算环境下的等保测评要点分析“

随着云计算技术的广泛应用&#xff0c;企业越来越多地将业务迁移到云端&#xff0c;这不仅带来了灵活性和效率的提升&#xff0c;也对信息安全提出了新的挑战。等保测评作为我国信息安全等级保护制度的重要组成部分&#xff0c;其在云计算环境下的实施具有特殊性。本文将围绕“…

nginx 简单使用方法

nginx是用于 Web 服务、反向代理、内容缓存、负载均衡、媒体流传输等场景的开源软件。 主要作用有三个&#xff1a;1、反向代理 负载均衡动静分离 下载地址&#xff1a;nginx: download nginx执行命令及启动 //假设安装在E:\server\nginx-1.20.0目录下 //cmd命令进入安装文…

如何在 VitePress 中增加一个全局自定义组件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

【Python实战】轻松实现自动发送邮件

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、开发准备三、正式开始四、总结一、前言 本文介绍如何使用Python开源项目“PythonSendMail”,快速实现自动发送带Excel报表附件的邮件。只需要进行简…

操作系统篇--八股文学习第十天| 进程和线程之间有什么区别;并行和并发有什么区别;解释一下用户态和核心态,什么场景下,会发生内核态和用户态的切换?

进程和线程之间有什么区别 答&#xff1a; 进程是资源调度和分配的基本单位。 线程是程序执行的最小单位&#xff0c;线程是进程的子任务&#xff0c;是进程内的执行单元。 一个进程至少有一个线程&#xff0c;一个进程可以运行多个线程&#xff0c;这些线程共享同一块内存…

oracle rac-> rac配置adg避坑注意点

例如源主库db_name为aaa db_unique_name为aaa&#xff0c;实例名为aaa1,aaa2 ORACLE_SID为aaa1,aaa2 tnsnames.ora的服务名配置&#xff1a;aaa/dgaaa 则备库设置参考&#xff1a;db_name相同为aaa&#xff0c;db_unique_name不同为dgaaa&#xff0c;实例名为dgaaa1,dgaaa2…

【LeetCode】56. 区间合并

区间合并 题目描述&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; …

Oracle的一些脚本工具总结

一、操作系统性能 在linux 6 之后&#xff0c;建议使用dstat监控操作系统的各项指标。 使用方法&#xff1a; yum install dstat dstat -cdlrgmnpsy 二、we.sql https://download.csdn.net/download/zengxiangbo/89601165 详见文章关联附件。 Oracle脚本工具&#xff0c;查…

企业安全生产管理是否将成为新的朝阳产业?

这个答案我可以肯定的告诉你&#xff0c;是的&#xff01; 首先朝阳产业是啥&#xff1f;朝阳产业指的是具有广阔发展前景、高成长性和创新性的产业。 但你也有可能不信我说的这句。因为在大多数人看来&#xff0c;安全生产管理这块儿&#xff0c;企业的关注度不多&#xff0…

Oracle Database 确认表空间大小的方法

Oracle Database 确认表空间大小的方法 sql: WITH object_size AS (SELECT segment_name,owner,segment_type,tablespace_name,SUM(bytes) total_bytesFROM dba_segmentsGROUP BY segment_name, owner, segment_type, tablespace_name ), table_size AS (SELECT segment_name …

【探索Linux】P.43(网络层 —— IP协议)

阅读导航 引言一、IP协议基本概念二、IP协议头格式三、网段划分1. 网络号和主机号2. 引入子网掩码&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;默认子网掩码&#xff08;3&#xff09;子网掩码的作用&#xff08;4&#xff09;子网掩码与IP地址的结合&#xff…

探索Python代码质量的守护神:Flake8

文章目录 探索Python代码质量的守护神&#xff1a;Flake8背景&#xff1a;为何选择Flake8&#xff1f;简介&#xff1a;Flake8是什么&#xff1f;安装&#xff1a;如何获取Flake8&#xff1f;使用方法&#xff1a;Flake8的基本命令场景应用&#xff1a;Flake8在实际开发中的作用…

SOMEIPSRV_RPC_13: 不同服务可以共享相同的端口

测试目的&#xff1a; 验证不同的服务是否能够共享同一个传输层协议的端口号。 描述 本测试用例旨在验证在同一个电子控制单元(ECU)上&#xff0c;不同服务的多个服务实例是否能够监听不同的端口&#xff0c;同时确保不同的服务能够共享同一个端口号。 测试拓扑&#xff1a…

接口测试:使用 curl 发送请求

简介 cURL 是一个通过 URL 传输数据的&#xff0c;功能强大的命令行工具。cURL 可以与 Chrome Devtool 工具配合使用&#xff0c;把浏览器发送的真实请求还原出来&#xff0c;附带认证信息&#xff0c;脱离浏览器执行&#xff0c;方便开发者重放请求、修改参数调试&#xff0c;…

SAP HCM 薪酬过账-忽略成本分配的含义

导读 INTRODUCTION 忽略成本分配&#xff1a;昨天分析C0表与C1表的作用&#xff0c;是为今天说的忽略成本分配按钮的铺垫&#xff0c;忽略成本分配这个翻译有点难让人理解&#xff0c;从字母意思感觉就是所有成本类的不拆分处相关的行项目&#xff0c;但是实际不是这样&#xf…

大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ALB快速实现IPv4服务的负载均衡

阿里云应用型负载均衡ALB支持HTTP、HTTPS和QUIC协议&#xff0c;专门面向网络应用层&#xff0c;提供强大的业务处理能力。 为了实现IPv4服务的负载均衡&#xff0c;需要快速创建一个ALB实例&#xff0c;并将来自客户端的访问请求转发至后端服务器。 操作流程 第一步&#x…