UI 自动化稳定性用例实战经验分享!

目录

前言:

大家常说 UI 自动化不稳定,那又如何提高稳定性呢?

操作界面非预期的弹框、广告、浮层

测试系统的 A/B 策略

总结:


前言:

稳定性测试是软件测试的一个重要方面,它旨在评估软件在不同负载和压力条件下的稳定性和可靠性。稳定性测试可以通过自动化测试来实现,其中 UI 自动化测试是一种常用的方法。

大家常说 UI 自动化不稳定,那又如何提高稳定性呢?

    UI 自动化测试稳定性,最常见的就是同一套测试用例在同样的环境上,时而测试通过,时而测试不通过。这样的测试结果产生了很多无效的缺陷,特别是自动化测试已经与公司内部平台接入了相应缺陷系统,使用对于开发、产品以及 QA 常常说自动化测试做了很多无用功。

      要提高 UI 测试稳定性,首先我们需要知道到底是什么原因引起的。尽可能的找出那些引起不稳定因素,然后找到相关不稳定因素对应的解决措施。

      根据目前公司的项目实践经验以及遇到的场景,总结了以下几种原因:

  • 操作界面非预期的弹框、广告、浮层
  • 页面元素发生了变化
  • 测试数据原因
  • 页面控件点击失效或者未加载出来
  • 测试系统的 A/B 策略

操作界面非预期的弹框、广告、浮层

  • 系统层面、第三方软件一些意外弹框,例如第三方软件的广告、系统权限提示、系统更新提示

    • 解决方案:
      • 关闭系统更新、浏览器更新
      • 尽量不要安装非必要的第三方软件,目前第三方软件常用推送广告
      • 保证测试机器干净,减少非必要的异常出现
  • 测试软件本身弹框,例如详情页根据用户画像,自动推送一些广告弹框,这种一般很难知道在什么时候会出现,导致测试用例执行不成功

    • 解决方案:
      • 增加黑名单机制,将遇见过得弹框都记录到黑名单里面,在元素定位封装时增加黑名单判断
      • 自动失败异常弹框算法
      • 增加用例失败重试机制,结合上面两种方案

页面元素发生了变化

  • 页面增加新功能,导致页面元素发生改变
    • 解决方案:
      • 尽量不要使用元素本身的 ID、name、class 定位,尽量使用 xpath 定位方式
      • 采用模糊匹配
      • 采用组合定位策略
  • 开发修改了元素名称 (公司将前端改写成了 vue)

    • 解决方案:
      • 使用不改变的值进行定位,例如控件的文本,例如不管怎么改,登录 文案不会改变
      • 如果是页面改版,就需要修改定位
  • 终极解决方案

    • 定时扫描页面元素是否发生改变,使用 page_source 获取页面元素分析,一旦改变是否影响用例执行,及时修改用例

测试数据原因

  • 主要是用例执行的前置操作未完成,例如用例依赖前面用例执行产生数据或者已有历史数据被其他人删除
    • 解决方案:
      • 可以通过 API 生成数据
      • 通过 数据库 生成数据
      • 通过 API 和 数据库 造数据效率比较高且准确,前提对于相应数据库结构和 api 需要比较熟悉

页面控件点击失效或者未加载出来

  • 网络或者服务器偶尔响应比较慢
    • 解决方案:
      • 脚本增加智能等待
      • 脚本增加重试机制
  • 页面控件元素点击无效
    • 解决方案
      • 增加异常处理,是否点击操作太快、元素是否可见、元素被遮挡等处理
      • 可以增加 1-2 次重复点击,例如第一次点击失败,再点击一次
      • 使用 js 定位操作

测试系统的 A/B 策略

由于公司运营活动,每次选择不同的城市进行,导致同一个城市不同时间看见页面不一样,效果也不一样

  • 解决方案
    • 测试用例编写兼容处理,根据不同时期,拿到活动标识,调用不同逻辑进行处理

总结:

  • 操作界面非预期的弹框、广告、浮层,主要采用方案:保证测试机器干净关闭系统更新增加黑名单机制自动失败异常弹框算法失败重试机制
  • 页面元素发生了变化,主要采用方案:采用模糊匹配使用 xpath 定位采用组合定位策略使用 page_source 获取页面元素分析元素是否发生改变
  • 测试数据原因,主要采用方案:通过 API 和 数据库 造数据
  • 页面控件点击失效或者未加载出来,主要采用方案:增加智能等待和重试机制增加异常处理使用 js 定位
  • 测试系统的 A/B 策略,主要采用方案:测试用例编写兼容处理

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

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

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

相关文章

一起学SF框架系列5.8-spring-Beans-注解bean解析4-bean解析

前面三节主要讲了如何加载注解Bean的BeanDefinition,执行环节是在DefaultBeanDefinitionDocumentReader.parseBeanDefinitions中用BeanDefinitionParserDelegate.parseCustomElement(ele)加载的,实际上没对注解真正进行解析。本节主要讲述注解bean如何被…

Mysql关于进程中的死锁和解除锁

Mysql 经常会遇到语句或者存储过程长时间没有反应,大概率就是挂掉了,或者死锁了。 可通过如下几种方式来查看当前进程状态 1. 查询数据库所有的进程状态 SHOW PROCESSLIST SELECT * FROM information_schema.PROCESSLIST; 2. 查询在锁的事务 SELECT…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

从Vue2到Vue3【五】——新的组件(Fragment、Teleport、Suspense)

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API(第一章)从Vue2到Vue3【二】Composition API(第二章)从Vue2到Vue3【三】Composition API(第三章)从Vue2到Vue3【四】C…

网络通信原理(第十八课)

网络通信原理(第十八课) 4.1 回顾 1.什么是TCP/IP 目前应用广泛的网络通信协议集 国际互联网上电脑相互通信的规则、约定。 2.主机通信的三要素 IP地址:用来标识一个节点的网络地址(区分网络中电脑身份的地址,如人有名字) 子网掩码:配合IP地址确定网络号 IP路由:网…

10分钟内入门 ArcGIS Pro

本文来源:GIS荟 大家好,这篇文章大概会花费你10分钟的时间,带你入门 ArcGIS Pro 的使用,不过前提是你有 ArcMap 使用经验。 我将从工程文件组织方式、软件界面、常用功能、编辑器、制图这5个维度给大家介绍。 演示使用的 ArcGI…

【Nodejs】nodejs内置模块(中)

1.路劲处理模块 path 1.1 模块概览 在nodejs中,path是个使用频率很高,但却让人又爱又恨的模块。部分因为文档说的不够清晰,部分因为接口的平台差异性。将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了。 1.…

计算机网络模型

计算机网络模型 网络模型网络模型中各层对应的协议封装与分用TCP/IP协议簇的组成 网络模型 OSI 七层模型 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP四层模型 应用层、传输层、网络层、网络接口层 TCP/IP五层模型 应用层、传输层、网络层、数据链路…

iOS transform rotate总结

研究了一下transform的旋转设置,调了半天还以为是旋转写错了,发现是两个不同的view对象写错了,不管怎么说,还是记录一下旋转相关的操作吧。 参数都是弧度。 以一个图片来举例。 let img UIImageView.init() img.image UIImage…

k8s集群环境的搭建

1.环境规划 1.1 集群类型 Kubernetes集群大致分为两类:一主多从和多主多从。 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。 多主多从:多台Master和多台Node节点…

ubuntu与windows之间的文件共享

最近在做项目,需要用到ubuntu进行代码编译生成可执行文件,但是我个人阅读和编写代码喜欢用source insight这个软件IDE。安利一下这个软件,阅读代码和编辑代码真的很棒啊,谁用谁知道吧! 由于在ubuntu中安装source insig…

RocketMQ基本概念与入门

文章目录 MQ基本结构依赖案例:productConsumer 核心概念1.nameserver2.broker3.主题队列4.queue队列5. 生产者6.消费者分组和生产者分组7.消费点位 MQ基本结构 message: 消息数据对象product: 程序代码,生成消息,发送消息到队列consumer: 程序代码,监听(绑定)队列,获取消息,执行…

全志F1C200S嵌入式驱动开发(spi-nor image制作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 一般soc系统里面添加spi-nor flash芯片,特别是对linux soc来说,都是把它当成文件系统来使用的。spi-nor flash和spi-nand flash相比,虽然空间小了点,但是胜在稳定,这是很多工业…

(二)RabbitMQ【安装Erlang、安装RabbitMQ 、账户管理、管控台、Docker安装 】

Lison <dreamlison163.com>, v1.0.0, 2023.06.22 RabbitMQ【安装Erlang、安装RabbitMQ 、账户管理、管控台、Docker安装 】 文章目录 RabbitMQ【安装Erlang、安装RabbitMQ 、账户管理、管控台、Docker安装 】**安装Erlang**安装RabbitMQ账户管理管控台Docker安装RabbitM…

大数据技术之Hive2

目录标题 3、Hive 数据类型3.1 基本数据类型&#xff1a;3.2 集合数据类型&#xff1a;3.3 类型转化 4、DDL数据定义4.1 创建数据库4.2 查询数据库4.3 创建表4.4 管理表4.5 外部表4.6 管理表与外部表的相互转换4.7 分区表4.7.1 分区表基本操作4.7.2 分区表注意事项 4.7 修改表4…

【后端面经】微服务架构(1-4) | 降级:为什么每次大促的时候总是要把退款之类的服务停掉?

文章目录 一、 前置知识1、什么是降级?2、降级的典型应用3、为什么要降级?4、降级的分类5、如何降级?A) 降级的应用场景B) 跨服务降级C) 提供有损服务二、面试环节1、面试准备2、基本流程3、亮点方案A) 读写服务降级写服务B) 快慢路径降级慢路径三、章节汇总 在熔断章…

Flutter Widget Life Cycle 组件生命周期

Flutter Widget Life Cycle 组件生命周期 视频 前言 了解 widget 生命周期&#xff0c;对我们开发组件还是很重要的。 今天会把无状态、有状态组件的几个生命周期函数一起过下。 原文 https://ducafecat.com/blog/flutter-widget-life-cycle 参考 https://api.flutter.dev/f…

chrome解决http自动跳转https问题

1.地址栏输入&#xff1a; chrome://net-internals/#hsts 2.找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 3.再次访问http域名不再自动跳转https了。

【Linux后端服务器开发】HTTPS协议

目录 一、加密算法 二、中间人攻击 三、CA认证 一、加密算法 HTTPS协议是什么&#xff1f;HTTPS协议也是一个应用层协议&#xff0c;是在HTTP协议的基础上引入了一个加密层。 HTTP协议内容是按照文本的方式明文传输的&#xff0c;这就导致在传输过程中出现一些被篡改的情况…

vray GPU渲染如何设置?最适合 VRay 渲染的 GPU 是什么?

Chaos 提供的 Vray GPU是一个独立的渲染引擎&#xff0c;提供 GPU 硬件加速。它还与 CPU&#xff08;处理器&#xff09;配合使用&#xff0c;并利用 CPU 和 GPU 硬件进行无缝混合渲染。 GPU 渲染使 Vray GPU 渲染引擎能够在系统的 GPU 而不是 CPU 上执行光线跟踪计算。由于 G…