Android 系统服务在测试流程中的应用

本文基于uiautomator1.0测试脚本介绍自动化测试技术的应用,介绍如何获取Context、通过app包名启动app、数据库的应用、App运行监控、uiatutomator1.0中文录入支持。

shell 进程的 Context

类似uiautomator1.0通过shell启动的应用是无法直接获取Context的,但是有些Android服务是依赖于context的,shell应用虽然不自带context,但是可以通过ActivityThread.systemMain()初始化一个shell类型的context。通过该context可以使用PackageManager、ActivityManager,sqlite等服务,但是需要动态权限和app权限的操作是无法正常调用的。下面就是该Context的具体应用介绍。

PackageManager 运用

通过Context获取PackageManager可以获取系统安装应用的信息以及已安装应用的启动Intent。

数据库应用

使用数据库方式与普通应用一致,流程是首先创建SqliteHelper继承SQLiteOpenHelper,处理数据库创建、升级的表结构更新逻辑,需要注意的是构造参数中databaseName要使用绝对路径并且context不能为null。

 

设备当前 App 运行状态监控

我们在测试过程中有时需要统计相关Activity展示的信息,并统计何时打开了页面并停留多长时间,以及应用的crash、ANR、系统ANR等信息。我们可以通过接管系统ActivityController来实现。

接管系统ActivityController需要实现IActivityController.Stub接口,并在回调方法内实现应用Activity切换、应用崩溃、应用ANR、系统ANR等异常的统计业务,通过ActivityManager#setActivityController方法接管系统服务,示例代码如下:

运行 app 的进程监控

测试过程中被测app有可能会关联多个pid,如果你想统计被测应用的进程执行周期那么下面的内容会对你有所帮助。

我们可以通过ProcessObserver根据pid统计process执行周期,并通过uid与app进行关联来实现统计指定应用的process变化周期。示例代码如下:

 

uiatutomator1.0 录入中文

大家都知道uiatutomator2.0支持中文录入,uiatutomator1.0原声是不支持中文录入的,其实Android自动化测试框架的中文录入是通过AccessibilityNodeInfo来实现文本录入的,但是系统版本过低时是不支持直接录入中文的,下面的代码是基于AccessibilityNodeInfo实现中文录入的逻辑

 

 

学习安排上

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。【保证100%免费】

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值