关于Web端 —— UI自动化测试

news2024/11/23 22:53:19

在手工测试阶段,针对项目输出了测试用例,如果这些测试用例需要在版本迭代的过程中,需要进行回归测试,通过手工重复地执行测试用例,将会耗费大量的人力。

为此应运而生就有了自动化测试,通过使用自动化工具,将按照测试用例进行点点操作,校验的工作,交给代码程序来执行,测试工作,就变得省心省力了。

  • 重点:测试用例是自动化测试脚本的依据,一切不基于测试用例而写的自动化脚本都是耍流氓。

关于UI自动化测试

UI 自动化的本质
  • 定位元素
  • 操作元素
  • 模拟页面动作
  • 断言结果
  • 生成报告

基于以上5个本质,自动化测试的整体流程是这样的,这里百度登陆功能的测试用例为例:

  1. 对于这条测试用例,需要找到它的定位元素:用户名输入框,密码输入框,登陆按钮
  2. 操作元素:对于这3个定位元素的操作有2种,分别是“输入”与“点击”
  3. 模拟页面动作,也就是测试用例的步骤:

    1. 输入用户名
    2. 输入密码
    3. 点击登陆按钮
  4. 判断结果:将用例中的预期结果与实际结果进行比对,如果一致,代表成功,否则代表失败。对于这条测试用例,登陆成功的标志是,页面右上角出现了用户的头像与用户名,那么,可以通过获取网页中用户名的文本信息,与登录账户的用户名对比,一致的话,代表这条用例通过。

  5. 根据执行结果,自动生成报告,常用的第三方模块:HtmlTestRunnerAllure2 等
适合UI自动化测试的场景

当然,不是所有的测试场景都适合用自动化测试来实现。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【csdn999】

对此,可以参考以下的标准辅助判断:

  1. 项目的需求不会频繁变动
  2. 页面的 UI 已经进入稳定阶段
  3. 项目周期足够长
  4. 大量回归的测试任务

其中,有一些项目是明显不适合使用 UI 自动化测试的,例如视频播放器(暴风影音,腾讯视频,爱奇艺等),音乐播放器(例如网易云音乐,QQ 音乐等)等交动性强,并发依赖强的软件。

原因是,这一类软件,判断视频内容对不对,判断音乐声音与歌词对不对,难度极大。

另外,延伸一个话题:关于自动化测试的覆盖率,面试会问到的一个点。

国内大多数互联网公司的项目迭代周期比较短,因此自动化覆盖率一般都不高。

具体还是要根据项目迭代周期进行描述,参考标准是:

  • 迭代周期是半年或者一年以上的项目,每次需求变动很少,自动化测试的覆盖率一般是60%-70%,主要是覆盖之前的旧功能以及核心场景
  • 迭代周期为一个月的项目, 覆盖率大概是25-30%,主要是覆盖 P0(极重要)级别的绝大多数用例,与 P1(重要)级别中的部分用例
  • 1~2周一个迭代的项目,覆盖率大概是10%,主要是覆盖 P0(极重要)级别,可能会对用户造成严重影响的核心场景

其次,UI 自动化测试的时间切入点主要有2个:

  1. 冒烟测试阶段
  2. 回归测试阶段
UI 自动化测试设计原则
  1. 一个测试用例完成一个功能点测试(常用):一个手工用例对应一个自动化测试用例
  2. 一个脚本是一个完整的场景
  3. 脚本之间独立,不能有依赖(脚本间相互隔离):例如与登陆状态相关的用例:个人中心、订单详情、下单购物等,如果脚本之间不独立,相互依赖,在登陆的测试脚本失败的情况下,会导致个人中心、订单详情、下单购物的测试脚本全军覆灭,后续修复与维护成本高
  4. 设置合适的检查点:通过断言判断用例的成功与否
  5. 设计良好的框架:Python 常用的测试框架有 unittest 与 pytest,利用框架,及对共用的测试模块进行封装,减少自动化测试脚本维护的工作量

总结

END今天的分享就到此结束了,点赞关注不迷路~

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

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

相关文章

MyBatis-plus超神用法--一文带你玩转MP

前言 MyBatis-Plus是一个基于MyBatis的增强工具,提供了很多便捷的功能和增强的功能,以下是一些MyBatis-Plus的超神用法: 通用Mapper:MyBatis-Plus提供了通用Mapper的功能,可以通过继承BaseMapper接口,实现…

算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素

文章目录 对应力扣的题目链接思路分析解决方案 问题一 、239. 滑动窗口最大值 题目链接 : 239. 滑动窗口最大值 - 力扣(LeetCode) 思路分析 : 1、可能首先想到的是暴力破解 ,每一个区间,遍历一遍&#xf…

tracert命令

tracert tracert (跟踪路由)使路由跟踪使用程序,用于确定IP数据包访问目标所采用的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息,来确定从一个主机网络上其他主机的路由。 类似与Linux的traceroute 命令 命令格式 t…

PHP 在线学习平台系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 在线学习平台系统是一套完善的web设计系统mysql数据库 ,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP 在线学习平台系统1 代码 https://download.csdn.net/download/qq_41…

响应式成人高考自考教育机构网站模板源码下载带后台

模板信息: 模板编号:30558 模板编码:UTF8 模板分类:学校、教育、培训、科研 适合行业:教育机构类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原创设计、手工书写DIVC…

LeetCode----149. 直线上最多的点数

 题目 给你一个数组 points ,其中 points[i] [ x i x_i xi​, y i y_i yi​] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1: 输入:points [[1,1],[2,2],[3,3]] 输出:3 示例 2: 输入…

【通信原理】第三章 随机过程——例题

一、随机过程 1. 数学特征 ① 随机信号(三角函数表达式) ② 随机信号(求和表达式) 2. 功率谱密度 ① 相位确定,求功率谱密度 ② 已知相位分布,求功率谱密度 ③ 信号为两信号之和,求功率谱密度…

闲置电脑做什么副业赚钱?盘点如何利用电脑赚钱的方法

对于很多人来说,手机的强大功能使闲置的电脑被遗忘在角落。虽然现在手机已经取代电脑的很多用途。但是实际上,网络上还是有很多项目是手机不能展开的,而电脑方方面面都可以,所以,只要你愿意花些时间和精力,…

ConcurrentHashMap 源码解析

目录 一. 前言 二. 源码解析 2.1. 类结构 2.2. 基本属性 2.3. 构造方法 2.4. 增加元素 2.4.1. initTable() 2.4.2. helpTransfer() 2.4.3. transfer() 2.4.4. treeifyBin() 2.4.5. addCount() 2.5. 获取元素 2.6. remove() & replace() 2.7. clear() 2.8. s…

研发管理和项目管理有哪些痛点

研发管理和项目管理有哪些痛点 研发管理和项目管理有:1.项目进度把控难;2.绩效考核难;3.部门信息不同步;4.人力资源不均衡;5.需求管理难。项目进度把控难是研发管理和项目管理中的名列前茅痛点,要解决该问题…

引用类型;强引用;软引用;弱引用和虚引用

概述 平时在编写代码的时候内存都是由jvm管理,对象的回收也是jvm在管理; 但是有些时候jvm无法回收对象,最后就会抛出oom异常. 那么那些回收不了的对象肯定有区别于能回收的对象; 先上一波引用类型介绍 强引用 比如平常我们直…

Go进阶之rpc和grpc

文章目录 Go环境安装1)windows2)linux go语言编码规范1.1 包名:package1.2 ⽂件名1.3 结构体命名1.4 接⼝命名1.5 变量命名1.6 常量命名2.1 包注释2.2 结构(接⼝)注释2.3 函数(⽅法)注释2.4 代码…

三维变换与投影-计算机图形学

目录 三维变换与投影 三维变换原理 为什么C语言头文件要专门放在一个.h文件中呢? 斜投影原理 介绍一下什么是UGC 入口 透视投影 透视投影坐标系 三维变换与投影 三维变换原理 如何把三维物体投影到两维物体上 齐次坐标 加上一维,方便运算 …

chatGPT培训老师AIGC培训讲师叶梓:大模型这么火,我们在使用时应该关注些什么?-6

以下为叶老师讲义分享: P25-P29 提示工程的模式 节省计算资源: 在微调过程中,不需要重新训练整个模型,因此可以节省计算资源。 提高特定任务上的性能: 通过微调,模型可以适应特定任务的语言特征和模式…

实时定位与路径优化:跑腿App系统开发中的地理信息技术

本文将介绍如何使用地理信息技术实现实时定位和路径优化功能,以提高跑腿服务的效率。 实时定位 用户位置获取 # 示例:获取用户的实时位置 def get_user_location(user_id):# 使用GPS或网络定位技术获取用户的地理坐标# 返回经度和纬度信息return lon…

随笔记录-springboot_ConfigFileApplicationListener

SimpleApplicationEventMulticaster、 BootstrapApplicationListener、ConfigFileApplicationListener 加载流程 SpringApplication#run(java.lang.Class<?>[], java.lang.String[]) SpringApplication#run(java.lang.String…) SpringApplication#prepareEnvironment…

竞赛选题 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 图像识别 火车票识别系统 该项目较为新颖&#xff0c;适…

Pod控制器详解

目录 一、Pod控制器及其功用 二、Deployment控制器 三、StatefulSet控制器 四、DaemonSet控制器 五、Job控制器 六、CronJob 控制器 一、Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层…

DNS(Domain Name System) in detail

什么是 DNS&#xff1f; DNS&#xff08;域名系统&#xff09;为我们提供了一种与互联网上的设备进行通信的简单方法&#xff0c;而无需记住复数。就像每个房子都有一个唯一的地址来直接向它发送邮件一样&#xff0c;互联网上的每台计算机都有自己唯一的地址来与之通信&#xf…

Vue+OpenLayers 创建地图并显示鼠标所在经纬度

1、效果 2、创建地图 本文用的是高德地图 页面 <div class"map" id"map"></div><div id"mouse-position" class"position_coordinate"></div>初始化地图 var gaodeLayer new TileLayer({title: "高德地…