题图:Photo by Ma Fei at Hong Kong
今天聊聊Android的自动化测试,但这里先不讨论具体的技术方案,这些放到后面章节讨论,本文主要来跟大家分享一下自动化测试过程中一定会遇到的一些问题以及针对这些问题提供的一系列辅助服务。
不管是通过什么方案实现的UI自动化,录制回放也好、写自动化脚本也好,都会遇到同样的问题:在不同手机上安装被测应用时弹出的系统提示框,这部分肯定是没办法通过脚本实现的,而且存在兼容性问题:不同手机的安装流程一般是不一样的,那么怎么才能让安装这部分流程自动化呢?
想想去年很火的抢红包插件,其实解决的问题是类似的就是检测屏幕的UI变化然后让系统自动去点击相应的控件元素,我们的主角登场了:AccessibilityService 具体实现参考:https://github.com/logan62334/Jarvis
安装好辅助应用后,点击图标会打开系统的辅助功能页面,这里会看到系统服务中已经注册好了一个叫智能安装服务的条目,打开该服务即可。
大家可以根据不同手机的安装提示进行适配,目前项目只适配了华为和小米的机型。
大家做Android稳定性测试的时候一定用过Monkey吧,但是实际跑的过程中会出现各种各样的问题,比如:关掉WIFI、关掉数据流量、锁掉屏幕等,接下来针对这些问题分析下如何解决:
针对关掉WIFI这种情况比较简单的做法就是通过起一个服务监听网络状态,一旦出现WIFI关闭的情况就自动打开当然这里涉及到权限的一些问题,只适用于root过的手机或者版本比较低的系统没有很严格的权限管理;另外一种情况就是利用部分手机可以调整快捷入口的方式将WIFI这个入口隐藏掉,还有就是可以通过遮挡住通知栏这样下拉操作就不会打开WIFI的快捷入口,数据流量也是一样的道理。
对于锁屏屏幕自动熄灭这样的情况,一种方式就是通过手机系统设置让屏幕常亮,另外一种方式就是通过PowerManager、KeyguardManager等来唤醒解锁Android设备或模拟器,具体实现方式参考:https://github.com/logan62334/Jarvis
另外可能在自动化测试的过程中我们希望控制系统的wifi、数据流量、动画等的状态,那么可以通过广播的形式来实现,具体方式参考:
https://github.com/logan62334/Jarvis
全栈增长工程师
数据驱动未来 技术成就梦想 产品改变世界