17 | 精益求精:聊聊提高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
《软件测试 52 讲》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(24)
- 最新
- 精选
- sylan2151. 非预期弹框: 对于非预期的弹框也可以通过检查置顶窗口是否是预期软件窗口,从而确定是否被第三方弹框影响。 2. 页面控件变化: 如果是 selenium 的话,建议优先使用 xpath,这样就算 id、clases、name 等控件属性改变,只有不是页面改版,应该不会影响自动化稳定性。 3. A/B 测试页面: 判断当前页面属于哪个分支,然后走兼任处理逻辑,同意这个方案。其实很多地方都可以通过类似的兼容方案进行处理,比如第一个非预期弹框,也可以算是异常场景的兼容处理。 4. 页面延迟: 重试机制确实是个好办法,但是如果用例都是因为重试才执行正确,有可能会漏出和缓存相关的问题,因为重试应该算一个独立测试场景了,现在是把它作为主要测试场景了。 这地方我记得 selenium 有一个函数可以设定一个最大超时时间,在这个时间之前都会等待,一旦超时时间内满足了继续执行的条件,也可以立刻执行,这个方法还是比较不错的,既保证了用例操作的预期性,也解决了延迟的不可控的问题。 5. 测试数据问题: 构造自动化数据时要特别注意,构造一些带特殊字段的数据库信息,最好是超出常人操作的数据信息,这样可以有效避免数据被误修改的风险,当然,还有一个处理办法在 15 讲的时候提到过,就是先检查测试数据是否存在/异常,不存在或异常都进行重建即可,这部分也算是测试代码的兼容处理吧。 以上,欢迎沟通交流,公众号「sylan215」
作者回复: 非常高质量的留言,已经关注你的公众号了👍
2018-08-06457 - 张红占能否通过实例讲解 总结的有点high level
作者回复: 这部分内容的确可以通过实例讲解,但是这样的篇幅会比较大,而且重点也不会太突出,所以选择了总结问题以及对应解决思路的讲解方法。
2018-08-062 - 涅槃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-07113
- 捷后愚生老师全面总结了GUI测试稳定性的种种问题,如果在面试过程中被问到“你是如何应对GUI自动化测试不稳定问题”时,根据老师这篇文章回到,底气十足。 学习到老师的解决问题的思路,一是遇到问题,不是马上就想着具体怎么解决,而是先分析出现问题的原因。如在面试中。被问到“你是如何应对GUI自动化测试不稳定问题”时,你直接给出几条解决措施,看上去已经回到了面试官的问题,但是如果你能用先分析问题原因,再给出解决方案,给人的感觉思维缜密。二是遇到需要机器解决的问题,想想如果人工去解决、去操作是怎么做的,是不是有可借鉴的地方。 因为网络原因,页面元素出现的时间长短不同,在代码层面,加入等待机制,也是解决稳定性问题的一个方法。2020-07-117
- why感谢,我知道面试中,面试官问我解决过什么问题,我答什么了。2020-11-143
- 口水窝网络不稳定,无线与流量切换,浏览器版本升级等造成GUI测试不稳定。2019-04-022
收起评论