分享好友 最新资讯首页 最新资讯分类 切换频道
移动端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设置中的,针对这种情况我们需要动态更改设备代理信息,具体实现可以参考《》。

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

最新文章
安卓手机怎么遥控电视手机智能遥控「安卓手机怎么遥控电视」
在数字化时代,手机已经不仅仅是一个通讯工具,它逐渐演变成为我们生活中的“万能遥控器”。其中,利用安卓手机遥控电视的功能,
2024下半年可以闭眼买的4款手机,全是护眼屏,安心用5年护眼手机「2024下半年可以闭眼买的4款手机,全是护眼屏,安心用5年」
哎呀,说到手机,咱们可得聊聊那些让人眼前一亮的新玩意儿!如今的手机市场,简直就是百花齐放,尤其是2024年的下半场,各大厂商
GPU类型 gpu类型手机手机gpu「GPU类型 gpu类型手机」
【TechWeb】现在年轻人对手游的喜爱度丝毫不亚于端游,手游能让用户随时随地迅速开启沉浸娱乐体验,但于此同时也对手机硬件各方
极窄边框 小米4S渲染图曝光小米手机4s「极窄边框 小米4S渲染图曝光」
  雷军今日宣布1月15日将发布重量旗舰产品,尽管他未透露任何细节信息,不过普遍预测它就是近期备受关注的小米4的升级版--小米
鸿蒙手机自动横屏哪里设置,鸿蒙锁定横屏手机怎么调横竖屏「鸿蒙手机自动横屏哪里设置,鸿蒙锁定横屏」
1、打开设置:在主屏幕上找到并点击设置图标。 进入显示设置:在设置界面中,向下滚动并点击显示选项。 找到屏幕旋转设置:在显
2022手机上有没有类似崩溃大陆的手机单机游戏 类似崩溃大陆的游戏合集手机动作游戏「2022手机上有没有类似崩溃大陆的手机单机游戏 类似崩溃大陆的游戏合集」
不知道大家对崩溃大陆这款游戏有没有了解,这款游戏是画风偏向像素风的冒险游戏,那么2022手机上有没有类似崩溃大陆的手机单机游
第三方存管业务招商银行手机银行「第三方存管业务」
第三方存管业务第三方存管业务,是指按照《中华人民共和国证券法》的有关规定,招商银行作为证券公司客户保证金的存管银行,与证
OPPO手机品牌LOGO设计创意理念与品牌形象欣赏oppo手机是哪个国家的品牌「OPPO手机品牌LOGO设计创意理念与品牌形象欣赏」
品牌介绍:OPPO(广东移动通信有限公司)是一家致力于研发数码电子产品的国有企业,总部在广东,市值2000亿,创始人陈明永,于2004
mfacebookfacebook手机版下载「mfacebook」
mfacebook下载安装,mfacebookv1.1.3.2是一款免费的手机交友聊天应用,提供了而且体积也减少了好多,有超多的特效和滤镜等着你来
360行车记录仪为什么连接不上WiFi360行车记录仪怎么连接手机「360行车记录仪为什么连接不上WiFi」
当360行车记录仪连接不上WiFi时,通常会有以下几个原因和解决方法:首先,如果输入的WiFi密码正确,但仍然无法连接WiFi,可以尝
推荐文章