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

news2024/12/28 19:20:28

目录

前言:

大家常说 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.coloradmin.cn/o/784082.html

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

相关文章

[BSidesCF 2020]Had a bad day1

进入环境,一上来就是一段激励的话,没有啥特别的,源码中也没有看见啥有用的提示 但主要是有,参数的传递,加上前面的index.php,想到了PHP伪协议,或许我们可以直接查看一下隐藏源码 报错了&#xf…

nfs服务器的描述,搭建和使用

前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:RodmaChen nfs服务器的描述,搭建和使用 NFS概述工作原理优缺点 nfs服务器搭建服务端客户端 NFS概述 NFS(Network File System)是一种基…

GPT-3.5:ChatGPT的奇妙之处和革命性进步

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

【Koa】[NoSQL] Koa中相关介绍和使用Redis MongoDB增删改查

目录 NoSQL非关系型数据库关系型数据库(RMDB)介绍非关系型数据库(NoSQL)介绍Redis & MongoDB 在 Koa 中使用 Redis (了解)Redis 的安装和使用在 Koa 中连接 和 调用 Redis 在 Koa 中使用 MongoDBMongoDB 的安装MongoShell 操作…

day35KMP算法

1.什么是KMP算法 解决字符串匹配问题;看文本串是否出现过模式串; 文本串:aabaabaaf; 模式串:aabaaf; 暴力解法:两层for循环,时间复杂度:O(m*n) m n分别是长度; kmp解决&a…

HTML中的焦点管理

前言 焦点作为页面交互中的重要一环,涉及到的知识点也比较多,有必要做一个统一的总结。 HTML 中的可获取焦点的元素 具有 href 属性的 HTMLAnchorElement/HTMLAreaElement非禁用态的 HTMLInputElement/HTMLSelectElement/HTMLTextAreaElement/HTMLBut…

C++实现简单内存池

/写一个简单的内存池class Cgirl { public:int bh;//编号int xw;//胸围static char* m_pool; //内存池的初始地址//内存池初始化函数、static bool initpool() {cout << "调用初始化函数\n\n";m_pool (char*)malloc(18);//向堆内存空间申请18字节if (m_pool …

100天精通Golang(基础入门篇)——第17天:深入解析Go语言中的指针

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

F#奇妙游(17):F#与真空一维平面大地抛石飞行力学

F#还能干点啥 距离上一次更新已经过去了很久&#xff08;40分钟之久&#xff01;&#xff09;&#xff0c;这段时间我在学习F#&#xff0c;并且在工作&#xff08;划掉&#xff0c;躺肥并没有工作要做&#xff09;中使用F#。 那干点啥呢&#xff1f;还是老本行吧&#xff0c;…

ELK 使用kibana查询和分析nginx日志

背景&#xff1a;使用kibana查询和分析nginx请求日志&#xff0c;方便开发人员查询系统日志和分析系统问题。 setp 1、定义Index patterns 2、定义Discover(Search 查询数据) 3、定义Visualizations 3.1 定义Vertical Bar 3.2 、Choose a source 3.3、定义图表 4、定义…

spring boot中常用的安全框架 Security框架 利用Security框架实现用户登录验证token和用户授权(接口权限控制)

spring boot中常用的安全框架 Security 和 Shiro 框架 Security 两大核心功能 认证 和 授权 重量级 Shiro 轻量级框架 不限于web 开发 在不使用安全框架的时候 一般我们利用过滤器和 aop自己实现 权限验证 用户登录 Security 实现逻辑 输入用户名和密码 提交把提交用户名和…

mysql的存储引擎以及适用场景

目录 mysql的体系结构 存储引擎简介 三种存储引擎的区别 如何选择使用哪种的存储引擎&#xff1f; mysql的体系结构 连接层 最上层是一些客户端的链接服务&#xff0c;主要完成一些类似于连接处理&#xff0c;授权认证&#xff0c;以相关的安全方案。服务器也会为安全接入每…

位运算修行手册

*明明自觉学会了不少知识&#xff0c;可真正开始做题时&#xff0c;却还是出现了“一支笔&#xff0c;一双手&#xff0c;一道力扣&#xff08;Leetcode&#xff09;做一宿”的窘境&#xff1f;你是否也有过这样的经历&#xff0c;题型不算很难&#xff0c;看题解也能弄明白&am…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例&#xff0c;MyISAM引擎是不支持事务操作的&#xff0c;一般要支持事务都会使用InnoDB引擎&#xff0c;根据MySQL 的官方文档说明&#xff0c;从MySQL 5.5.5 开始的默认存储引擎是 InnoDB&#xff0c;之前默认的都是 MyISAM&#xff…

【node】使用express+gitee搭建图床,并解决防盗链问题

首先创建一个gitee的项目&#xff0c;详细步骤我就不一一说明 注解&#xff1a;大家记得将这个项目开源&#xff0c;还有记得获取自己的私钥&#xff0c;私钥操作如下&#xff1a; node依赖下载&#xff1a; "axios": "cors": "express"…

FPGA设计时序分析一、时序路径

目录 一、前言 二、时序路径 2.1 时序路径构成 2.2 时序路径分类 2.3 数据捕获 2.4 Fast corner/Slow corner 2.5 Vivado时序报告 三、参考资料 一、前言 时序路径字面容易简单地理解为时钟路径&#xff0c;事实时钟存在的意义是为了数据的处理、传输&#xff0c;因此严…

记一次简单的MySql注入试验

试验环境&#xff1a; 1.已经搭建好的php服务器&#xff0c;并可以通过访问到localhost/index.php&#xff1b; 2.已经安装好数据库&#xff0c;并创建表test&#xff0c;表内有name、age等字段&#xff0c;并随便创建几个假数据用于测试&#xff1b;如图&#xff1a; 开始测…

docker 禅道 远程链接 MySQL

主要的坑在下边 红色字体&#xff1a;认真看 第一种方法 搜索镜像 docker search zentao 拉取镜像 docker pull easysoft/zentao:latest 启动容器 –name [容器名] 设置容器名称 -p [主机端口]:80 绑定端口 -v /home/zentao/zentaopms:/www/zentaopms 挂载数据目录 /h…

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版&#xff0c;我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀&#xff08;宏定义&#xff09; #setTableSuffix("Controller")##保存文件&#xff08;宏定义&#xff…

PHP8知识详解:PHP8开发工具VS Code的安装

作为PHP8的开发工具有很多&#xff0c;具有IDE功能的有phpstorm、Visual Studio Code、Sublime Text、NetBeans、Eclipse、Codelobster、PHP Designer等&#xff0c;当然还有很多轻量的工具&#xff0c;比如Notepad、Editplus等。本文给你介绍的是万能编辑器Visual Studio Code…