弱不禁风的UI自动化脚本,迎来了他第一次版本升级的洗礼,33%的通过率,他蒙了,我还好

于是,开启了漫漫无边的脚本维护之路...

版本升级脚本维护的背景是这样的,我们的UI自动化处于初期的阶段,除了自动化平台的基础搭建,前端组件基本都是在脚本编写的过程中不断增加的,在版本升级前,我与另外一位同事正在进行全员测试脚本的整体调试,调试过程自然不言而喻。就在我们以为黎明即将到来的时候,迎来了版本升级包,哈哈哈~~~ 黎明的梦,碎了一地

系统版本升级,让本就弱不禁风的脚本,在风中飘零~多么凄惨的现场,通过率直接掉到了33%

本次系统升级导致脚本维护的主要原因:

1. 前端组件变更:

  • 表单项增加一层span的变更,直接导致了上千个页面元素的维护工作;

本来我是有一丝庆幸的,因为元素都是手写的,表单项有固定格式的xpath,通过正则表达式可以轻松的适配到新版本的组件,这样维护的工作量就很小了;然而,我忘了还有一大批通过浏览器的复制xpath是没有任何规则的!!!悔不当初,没有坚持让大家使用手写xpath,果然,速度牺牲的一定是质量,对UI来说就是要命的稳定性及可维护性

  • 表格组件表格头增加div层级

表格也是页面中非常常用的组件,但跟这次表单项组件的变更相比,表格组件的变更就显得微不足道了,因为我们做了表格操作及断言的组件封装,只需要在组件层做相应的处理即可;对页面元素及用例脚本不需要做任何的维护工作。

果然应对前端组件的变更,最好的办法就是创建组件层,即使前端框架的更替,对脚本的影响都是可预估的;原本计划下期做的工作,在这次升级中就已经迫切感受到它的重要性,也非常庆幸先做了一些复杂组件的封装

2. 业务变更:

  • 增加必输项
  • 修改表单项名称
  • 调整菜单项顺序
  • 修改业务提示信息内容
  • ...

业务变更与脚本维护直接挂钩,基本都是要修改UI用例脚本内容的。

当然除了“调整菜单项顺序”这一项,手工xpath一般不会受元素顺序的影响,所以即使调整菜单顺序,也是没有影响的;所以,非常不推荐复制xpath的方式,虽然比手写快,但是稳定性是真的差。

3. 加载延时:

由于网络不稳定及系统并发执行UI用例的原因,导致HTTP通讯经常延时,在断言业务成功或失败的提示信息时,常常因等待时间不够而导致用例失败。

此时则有两个方案:

第一,设置较长的强制等待时间;

第二,单独设置包含提示信息内容的元素

由于通讯时间不稳定,若使用大量的长时间的固定等待时间,每条用例执行时间至少提高60s,从时间成本考虑非常不划算;如果采用第二种方案,则需设置更多页面元素,大大增加了后期元素维护的工作量;

考虑再三,决定采取两种方案的折中方案,将断言提示信息的操作单独封装组件,并设置60s的隐式等待时间。这样,既保证了时间成本,又避免了大量的元素维护,唯一的缺陷是当断言提示信息失败时,会强制等待60s,且无法提示实际的提示信息。

再补充一下感想吧

1. UI自动化用例选取,切勿追多

维护的痛苦就在于用例多、乱,乱是因为没有统一的命名和业务划分规范,而多,是迫于高层的压力~~~很无可奈何

在追求数量的情况下,势必就牺牲了质量。维护的过程中发现存在10%~15%的用例脚本的无效的、甚至的重复的、无意义的;还有20%~30%的用例脚本,是界面字段校验。UI自动化的流程,第一步就是选取UI自动化用例,而非是照着功能用例逐个编写;第一步的失败(不,是没有),就注定了维护工作是一项极其艰难的任务。UI用例的选取,一般第一阶段是选取核心业务正向流程,保证核心业务的正常运行;其次第二轮,选取次要业务的正向流程/核心业务的反向业务流程,一般来说做到业务正向及反向的自动化就已经实现了UI自动化的价值

2. 用例隔离性,适可而止

为了用例间的隔离性,通常需要以大量的前置条件为代价,但只要不涉及维护操作类的用例,其实可以使用已有的内置数据进行,节省一定的时间成本

3.规范很重要

任何东西没有规范就很乱,当维护其他同事的用例,就非常的痛苦,毕竟一千个人心中有一千个哈姆雷特,这是任何人都没法改变的事情,所以规范制定的越细,其他人接手可读性就更强,维护中的沟通成本也会越低

UI自动化 | 痛彻心扉的脚本维护之路相关推荐

  1. 软件测试知识点和面试题--UI自动化篇

    主流自动化测试框架介绍 软件测试的自动化一般可以分为3层 * 代码层的单元测试 * 接口层的集成测试 * UI 层的测试 1)代码层自动化 代码层的自动化一般指针对代码进行的单元测试,比较常用的单元测 ...

  2. TW使用经验杂谈(四)--UI自动化脚本规范思考

    TW使用经验杂谈(四)–UI自动化脚本规范思考 在确定使用TW实施基于ui自动化时候,对H2O的按系统功能统计了一下,5大主页83个功能481个业务用例,然后再按步骤.校验.逻辑条件数量来准备,这将是 ...

  3. java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)

    前言 游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖airtest的图片识别,我们可以直接跳过元素检查,以图片对比的形式进行自动化,虽然效率可能会 ...

  4. 软件测试|测试开发之路--UI 自动化常用设计模式

    接上一次的帖子,今天讲一下我再 UI 自动化中常用的设计模式. 由于网上已经有非常多的文章详细讲解了设计模式的编码实现,所以我今天也就不讲实现细节了. 就是讲我也讲不出什么花来,只是网上的文章基本都是 ...

  5. UI自动化脚本运行找不到元素解决方案

    UI自动化解密之元素定位后为啥放在脚本里面找不到 我们是否在浏览器F12下面,进行右键Copy Element Xpath/Css 时,放在浏览器里面直接就能够正确查找,为什么放在脚本里面就找不到了呢 ...

  6. python脚本写ui自动化_如何用Airtest编写UI自动化脚本

    前言 游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖airtest的图片识别,我们可以直接跳过元素检查,以图片对比的形式进行自动化,虽然效率可能会 ...

  7. python运维脚本部署jdk_基于Java/Python搭建Web UI自动化环境

    Java搭建UI自动化测试环境 下载JDK8 https://www.cnblogs.com/thloveyl/p/12378124.html 配置Java环境 1.解压Jdk压缩包 2.配置环境变量 ...

  8. (转)iOS编程高性能之路-自动化编译脚本(1)

    入门 自动化编译脚本在网上已经有很多了,当然好处也是显而易见,可以让我们脱离xcode ide的编译,当然对于需要编译打包多个应用优势就很明显,避免了我们人为操作可能的出错,和机械重复的枯燥. 自动化 ...

  9. Web UI自动化框架大比拼

    引子 对于测试从业者来说,手工测试是一个绕不过去的坎.当年我校招毕业以测试工程师岗位进了一家互联网公司.入职第一天就被师父"拉去干活",至今印象深刻,是一个投顾管理平台(投资顾问管 ...

最新文章

  1. R语言ggplot2可视化为长文本轴标签自动换行美化可视化结构实战:Wrap long text axis labels
  2. vector在java中用什么_在java中使用Vector是否安全?
  3. 无忧技术带您预览DFS(分布式文件系统)管理控制台
  4. 使用ViewPager加载页面出现空白
  5. ASP.NET【4】--ASHX
  6. 每天一道LeetCode-----在字符方格中查找某个单词
  7. 教育部公布学位“撤销授权”高校,5年内不得重新申请!
  8. 腾讯云成为国内首家FinOps基金会顶级会员
  9. C语言 · 龟兔赛跑预测
  10. Java基础学习记录
  11. GitHub上如何创建文件夹
  12. ~~堆(数据结构)(附模板题 AcWing 838. 堆排序)
  13. 基于盐+Sha算法的安全密码保护机制
  14. Spring_day04--课程安排_回顾SSH框架知识点_SSH框架整合思想
  15. 【优化调度】基于matlab粒子群算法求解梯级水电站调度优化问题【含Matlab源码 767期】
  16. Sql Server 中常用的字符串函数
  17. 社工找出幕后诈骗的黑手技巧篇
  18. 一二线城市 Java 程序员一般考虑入职的互联网公司清单?
  19. 7-14 电话聊天狂人 (25 分)
  20. 洛谷 P4544 [USACO10NOV]Buying Feed G)(单调队列优化DP)

热门文章

  1. 数据采集—数据采集技术
  2. Web简易二手网购网页
  3. 如何解决抖音服务器维修中,干货丨关于抖音限流的各种问题,以及「解决方案」...
  4. 百择电商:抖音什么情况下会被限流?
  5. lv双肩包尺寸对照表_2016最有人气MONOGRAM LV双肩包有哪些颜色与尺寸-美丽包包网...
  6. 信息学奥赛一本通:1168:大整数加法
  7. 詹姆斯·西蒙斯 - 金融业的数学大师
  8. maven 搭建ssm多模块项目(web+service)
  9. 市值从100亿缩水到3亿仅用三年,转型的趣店无“底“可抄?
  10. 爬虫—微博博主动态及相册的请求构造规律