分享好友 最新资讯首页 最新资讯分类 切换频道
移动端UI自动化过程中的难点及应对策略手机屏幕分辨率「移动端UI自动化过程中的难点及应对策略」
2025-01-14 05:38

阅读本文大约需要2.1分钟。

前言

在之前的文章《》中,我们探讨了衡量自动化稳定性的误报率指标,今天重点针对移动端UI自动化过程中导致误报的几个难点进行展开分析并给出相应的解决方案。

被测应用不稳定

问题1:自动化测试介入时机太早

对于移动应用来说,我们需要准确把握介入时机,不要在项目早期介入UI自动化测试,应该等版本相对比较稳定成熟后再开展UI自动化测试,不然每次业务UI变更带来的自动化用例维护成本会非常高。

问题2:自动化用例设计及选择不合理

在确定要开始做UI自动化测试后,需要先拆解手工测试用例,因为大多数的测试用例都是基于手工测试编写的,在自动化环境下,在流程编排和结果校验方式上需要做适当调整,并且在拆解过程中要优先实现核心模块较稳定的测试用例,因为不稳定的测试用例会给后期的维护和排查问题带来巨大的成本。

问题3:被测应用Debug调试信息阻断测试执行

为了提高研发调试效率,通常移动APP都会在Debug模式下提供很多方便调试用的工具集,比如leakcanary、内存信息Toast等,这些内容在UI自动化过程中反而成了影响稳定性的一个比较大的因素,比如因为leakcanary工作时dump内存导致页面卡顿从而影响执行的稳定性。

对此我们可以增加打包参数通过自定义打包服务来去除Debug相关的工具集,如果有些Debug信息无法提供开关控制,我们可以通过从master上开一个新的分支然后修改源码,每次去rebase主干的方式来关掉相应的Debug调试信息。

有人可能会问干嘛不直接用Release包,主要是因为Release包一般会存在证书信任问题导致无法使用Mock Server。

测试框架不稳定

这里我是基于Appium去做的UI自动化,所以下面有些策略仅适用于Appium。

问题1:手机连接会出现Offline的情况

针对这种情况我们可以通过在每次任务开始前Reset USB来彻底解决,参考:

问题2:An unknown server-side error occurred while processing the command. Original error: Could not proxy command to remote server. Original error: Error: read ECONNRESET

遇到这种问题时,建议在执行测试前重置Appium的Agent,也就是删掉下面跟Appium有关的应用,让Appium重新自动安装:

问题3:WIFI断开及连到其他WIFI的情况

针对这种情况,我们可以自己开发手机Agent应用来控制连接指定WIFI并且在断开连接后自动重连,具体实现我会在后续文章中讲解。

问题4:应用通知栏信息打断测试执行

在自动化测试执行过程中经常会由于其他应用或者本应用的通知弹框阻断测试的执行,对此我们需要禁用通知栏来避免此类问题的发生,具体实现我会在后续文章中讲解。

问题5:Appium并行测试不稳定

在基于Appium做并行自动化测试的过程中会在一台宿主机上同时监听多个端口,这时我们可以通过官方提供的appium-docker-android来为每个设备提供相对独立的测试环境,具体实现我会在后续文章中讲解:

问题6:由于随机的页面延迟造成的控件识别失败

我们可以首先通过隐式等待增加Appium服务端的超时时间,其次通过增加重试机制来避免,重试可以是步骤级别的比如显示等待,也可以是页面级别的,甚至可以是业务流程级别的。

问题7:非预期的弹出对话框

这里包括系统弹框和应用内业务弹框,针对系统弹框,我们可以通过无障碍服务来实现智能点击处理,对于应用内业务弹框,如果是可以通过接口控制的,我们可以Mock掉这个接口,否则我们可以通过watch机制来解决,具体实现我会在后续文章中讲解。

问题8:页面控件属性的细微变化导致识别失败

对于有明确ID的控件可以用ID来直接定位,对于没有ID的控件建议可以通过XPATH模糊匹配来定位,或者可以通过封装组合属性查找来定位,这样可以进一步提高控件的识别率,具体实现我会在后续文章中讲解。

测试脚本不稳定

问题1:缺少等待时间导致断言失败

可以加入一些判断条件,确保页面加载完成再进行UI操作,另外尽量使用逻辑验证,减少数据验证,数据验证更适合接口测试。

问题2:缓存问题

有些case在修改配置后,需要应用冷启动才能生效,我们可以在执行前清除应用缓存数据。

问题3:控件查找超时

Appium默认情况下每个执行请求都有超时时间包括查找控件,有时候由于设备性能太差导致执行时间过长,从而导致Appium Server断开连接,这时需要通过修改Appium Capabilities中的newCommandTimeout字段的值来增加超时时间或者更好新一点的设备。

问题4:手机屏幕分辨率问题

由于测试设备品牌型号各异,我们写自动化脚本的过程中需要针对不同机型做适当的适配,比如曲面屏、全面屏等。

测试环境不稳定

问题1:动态类的数据导致页面总是变化

有些非工具型应用,会有很多AI推荐类的信息流,这时我们可以借助Mock来提供稳定的数据环境。

问题2:测试账号被修改

可以通过账号保护服务或者在测试执行前通过接口重置账号状态来解决自动化测试账号被滥用更改的情况,另外我们自动化测试脚本中可能会有涉及测试账号状态操作的Case,这时候最好给这个模块提供独立的自动化测试账号,做隔离避免互相干扰。

问题3:测试账号被风控

我们的测试账号在使用过程中经常会由于中了风控的策略弹出各种验证码弹框,导致测试执行失败,这时我们需要将自动化测试账号加到白名单中来避免,另外还要注意白名单的有效期,最好可以申请时间长一点或者提供到期提醒避免再次被风控拦截。

问题4:网络环境不稳定

有时候在办公网环境下做自动化会遇到AP连接数太多导致自动化设备的网络出现抖动,这时我们可以通过增加独立AP的方式来解决。

问题5:代理IP变更

如果我们使用了MockServer,经常会由于MockServer的IP地址变更导致测试执行失败,一般情况下代理都是我们手工配置在手机的WIFI设置中的,针对这种情况我们需要动态更改设备代理信息,具体实现可以参考《》。

今天就先分享到这里,后续会针对文中的一些具体问题做详细方案的讲解,欢迎有兴趣的同学跟我讨论。

最新文章
消息称OPPO Find X8系列手机拥有三种尺寸机身,超大杯采用一加同款京东方屏x8手机「消息称OPPO Find X8系列手机拥有三种尺寸机身,超大杯采用一加同款京东方屏」
IT之家 8 月 14 日消息,博主 @数码闲聊站 今日发文爆料:OPPO Find X8 系列手机开了 3 块屏幕,一个 6.5-6.6 英寸左右的相对小
160亿克朗援助乌克兰!瑞典历史最大军事援助硬刚俄罗斯
根据 Jonson 的介绍,大约 70% 的新援助可以在 2025 年交付。自今年 1 月上任以来,美国总统唐纳德·特朗普一直试图促成停火,以
手机怎么群发信息苹果手机怎么群发短信「手机怎么群发信息」
在现代通讯中,群发信息已成为一种高效便捷的沟通方式,无论是节日祝福、活动通知还是工作协调,都能通过群发功能迅速传达给多人
小米SU7事故,责任如何认定?保险怎么赔?律师、保险专家们这样说
每经记者:涂颖浩 袁园    每经编辑:廖丹近日,一辆在高速公路上遭遇严重交通事故致3人死亡,事故责任如何认定,引发广泛关
微信分身怎么弄步骤图解华为手机微信分身怎么弄「微信分身怎么弄步骤图解」
其实微信工作应该和生活分离其实我们只要设置微信分身就可以同时登陆两个账号了,那么微信分身怎么弄?下面小编就跟大家分享微信
一部从21楼掉下来的手机,让消费者读懂了“华为质量”荣耀手机质量怎么样「一部从21楼掉下来的手机,让消费者读懂了“华为质量”」
记者 张文礼10月22日上午,华为消费者业务CEO余承东亲自在新浪微博上转发了一条消息,并对这条消息评论道:这样的高度非常惊险,
手机版本怎么更新手机系统升级「手机版本怎么更新」
在数字化时代,智能手机已成为我们日常生活中不可或缺的一部分。随着技术的不断进步,手机系统版本也会持续更新,以带来更好的性
安徽建工:4月2日融券净卖出6800股,连续3日累计净卖出13.76万股
证券之星消息,4月2日,(600502)融资买入613.63万元,融资偿还459.16万元,融资净买入154.46万元,融资余额3.72亿元。融券方面
上海金山警方“金护”反诈“智护万家”
原标题:任你“七十二变” 我自有“如来神掌”(主题)上海金山警方“金护”反诈“智护万家”(副题)法治日报记者 余东明 张海
miui+ 15.00.84小米手机系统「miui+ 15.00.84」
  miui+是一个帮助小米手机电脑互联的应用。有了这个miui+应用,手机文件可以随意传送给连接的电脑,甚至手机的屏幕也可以实时
推荐文章