软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

17 | 精益求精:聊聊提高GUI测试稳定性的关键技术

后续文章详细展开
重试机制
模糊匹配技术
组合属性定位
异常场景恢复模式
解决思路
数据被修改
解决思路
控件识别失败
测试脚本分支处理
解决思路
定位元素失效
解决思路
被测软件弹出对话框
操作系统弹出对话框
测试数据问题
随机的页面延迟
被测系统的A/B测试
页面控件属性的细微变化
非预计的弹出对话框
不稳定因素
知识体系搭建
知识点回顾
思考题
GUI测试稳定性
GUI测试
GUI测试稳定性问题

该思维导图由 AI 生成,仅供参考

不知不觉,我已经介绍完了 GUI 测试相关的知识点,你可以先回顾一下这些知识点,是否还有不清楚的地方,也欢迎你给我留言进行讨论。同时,我希望这些知识点,已经帮你搭建了 GUI 自动化测试的知识体系。
那么,今天我将从实际工程应用的角度,和你一起聊聊 GUI 测试的稳定性问题。
如果你所在的公司已经规模化地开展了 GUI 测试,那我相信你们也一定遇到过测试稳定性的问题。GUI 自动化测试稳定性,最典型的表现形式就是,同样的测试用例在同样的环境上,时而测试通过,时而测试失败。 这也是影响 GUI 测试健康发展的一个重要障碍,严重降低了 GUI 测试的可信性。
所以,今天我分享的主题就是,如何提高 GUI 测试的稳定性。虽然从理论上来讲,GUI 测试有可能做到 100% 稳定,但在实际项目中,这是一个几乎无法达到的目标。根据我的经验,如果能够做到 95% 以上的稳定性,就已经非常不错了。
要提高 GUI 测试稳定性,首先你需要知道到底是什么原因引起的不稳定。你必须找出尽可能多的不稳定因素,然后找到每一类不稳定因素对应的解决方案。
为此,根据我的实践经验,以及所遇到的场景,我为你总结了五种造成 GUI 测试不稳定的因素:
非预计的弹出对话框;
页面控件属性的细微变化;
被测系统的 A/B 测试;
随机的页面延迟造成控件识别失败;
测试数据问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文从实际工程应用的角度出发,分享了GUI测试稳定性问题的原因及解决思路。作者总结了五种造成GUI测试不稳定的因素,包括非预计的弹出对话框、页面控件属性的细微变化、被测系统的A/B测试、随机的页面延迟和测试数据问题。针对这些因素,作者提出了相应的解决思路,如引入“异常场景恢复模式”处理非预计的弹出对话框,使用“组合属性”定位控件并加入“模糊匹配”技术应对页面控件属性的细微变化等。通过具体的场景和解决思路,为读者提供了实用的技术指导,帮助他们提高GUI测试的稳定性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件测试 52 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • sylan215
    1. 非预期弹框: 对于非预期的弹框也可以通过检查置顶窗口是否是预期软件窗口,从而确定是否被第三方弹框影响。 2. 页面控件变化: 如果是 selenium 的话,建议优先使用 xpath,这样就算 id、clases、name 等控件属性改变,只有不是页面改版,应该不会影响自动化稳定性。 3. A/B 测试页面: 判断当前页面属于哪个分支,然后走兼任处理逻辑,同意这个方案。其实很多地方都可以通过类似的兼容方案进行处理,比如第一个非预期弹框,也可以算是异常场景的兼容处理。 4. 页面延迟: 重试机制确实是个好办法,但是如果用例都是因为重试才执行正确,有可能会漏出和缓存相关的问题,因为重试应该算一个独立测试场景了,现在是把它作为主要测试场景了。 这地方我记得 selenium 有一个函数可以设定一个最大超时时间,在这个时间之前都会等待,一旦超时时间内满足了继续执行的条件,也可以立刻执行,这个方法还是比较不错的,既保证了用例操作的预期性,也解决了延迟的不可控的问题。 5. 测试数据问题: 构造自动化数据时要特别注意,构造一些带特殊字段的数据库信息,最好是超出常人操作的数据信息,这样可以有效避免数据被误修改的风险,当然,还有一个处理办法在 15 讲的时候提到过,就是先检查测试数据是否存在/异常,不存在或异常都进行重建即可,这部分也算是测试代码的兼容处理吧。 以上,欢迎沟通交流,公众号「sylan215」

    作者回复: 非常高质量的留言,已经关注你的公众号了👍

    2018-08-06
    4
    57
  • 张红占
    能否通过实例讲解 总结的有点high level

    作者回复: 这部分内容的确可以通过实例讲解,但是这样的篇幅会比较大,而且重点也不会太突出,所以选择了总结问题以及对应解决思路的讲解方法。

    2018-08-06
    2
  • 涅槃Ls
    打卡17

    作者回复: 感谢支持

    2018-08-08
  • hi !girl
    老师,步骤级别、页面级别和业务流程级别的重试机制可以给一个实例吗

    作者回复: 步骤和页面级别的retry是会在测试框架中实现的,往往是在try catch中实现重试,而用例级别的retry会在用例调用级别,也就是发起测试的ci流水线中实现。

    2018-08-06
  • 图·美克尔
    异常场景恢复模式是将在整个操作过程外加try catch实现的吗?

    作者回复: 最简单的实现的确是通过try catch

    2018-08-06
  • Robert小七
    异常恢复场景是否包含了重试机智?如何解决定位失败后可能产生的无限重试?

    作者回复: 如果启用了异常场景恢复模式,那么通常的流程是先有三次步骤级别重试,如果失败了才会启动异常场景恢复模式。一般不会出现无限重试的场景

    2018-08-06
  • Cynthia🌸
    页面延迟那个,具体表现应该就是找不到元素吧,那么等一等是不是就可以找到了? 我记得selenium里面有等待函数,而且还可以用sleep。 之前做过的项目,最早没有加等待,就经常因为不稳定而报错,加上等待之后这种概率少多了
    2018-08-07
    1
    13
  • 捷后愚生
    老师全面总结了GUI测试稳定性的种种问题,如果在面试过程中被问到“你是如何应对GUI自动化测试不稳定问题”时,根据老师这篇文章回到,底气十足。 学习到老师的解决问题的思路,一是遇到问题,不是马上就想着具体怎么解决,而是先分析出现问题的原因。如在面试中。被问到“你是如何应对GUI自动化测试不稳定问题”时,你直接给出几条解决措施,看上去已经回到了面试官的问题,但是如果你能用先分析问题原因,再给出解决方案,给人的感觉思维缜密。二是遇到需要机器解决的问题,想想如果人工去解决、去操作是怎么做的,是不是有可借鉴的地方。 因为网络原因,页面元素出现的时间长短不同,在代码层面,加入等待机制,也是解决稳定性问题的一个方法。
    2020-07-11
    7
  • why
    感谢,我知道面试中,面试官问我解决过什么问题,我答什么了。
    2020-11-14
    3
  • 口水窝
    网络不稳定,无线与流量切换,浏览器版本升级等造成GUI测试不稳定。
    2019-04-02
    2
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部