• 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实现中文录入的逻辑

    哈喽,喜欢这篇文章的话烦请点个赞哦!万分感谢(*^▽^*)PS:有问题可以联系我们哦v ceshiren001
    更多技术文章

  • 相关阅读:
    linux查看远程仓库的分支
    十分钟轻松入门 nw.js 实现桌面应用程序
    如何快速提升教育直播间人气
    设计原则之【里氏替换原则】
    【洛谷算法题】P1425-小鱼的游泳时间【入门1顺序结构】
    博客系统项目
    Java基础面试-面向对象
    动态域名解析
    如何实现矩阵的重采样问题
    Linux文件出现“M-oM-;M-?” ^M 等情况
  • 原文地址:https://blog.csdn.net/Tester_muller/article/details/126376399