Robotium 基于 Robotium 的自动遍历方案 - 1.1.0 版本

Heyniu · February 26, 2017 · Last by wixed replied at February 28, 2017 · 1745 hits

1.1.0 版本改进

  • 自动捕获崩溃信息
  • 加入守护进程
  • 日志方式改为读取 Logcat,减少 IO
  • 重构代码
  • 简化配置
  • 重启 Activity 时恢复之前状态
  • 添加支持 GPU 过渡渲染、过渡绘制截图(需手动开启,并在 adb 连接时生效)

  • 加入严苛模式

可选项:

  • 配合源码可加入代码覆盖率
  • 配合源码可加入 Leakcanary 内存泄露监控
  • 配合 Fiddler/Charles 可录制接口或监听数据等

守护进程工作原理图

严苛模式 StrictMode

检测项:

  • ThreadPolicy
    • detectCustomSlowCalls >> 自定义耗时操作
    • detectDiskReads >> 读磁盘
    • detectDiskWrites >> 写磁盘
    • detectNetwork >> 检查网络
    • detectResourceMismatches >> 检查资源类型是否匹配
  • VmPolicy
    • detectActivityLeaks >> 检测 Activity 的泄露
    • detectCleartextNetwork >> 检测明文的网络
    • detectFileUriExposure >> 检测 file://或者是 content://
    • detectLeakedClosableObjects >> 检查 Closable 对象
    • detectLeakedRegistrationObjects >> 检测需要注册类型是否解注
    • detectLeakedSqlLiteObjects >> 检测 sqlite 对象,如 cursors

检测到违规项会在日志中体现

注意事项:

  • 关于之前比较多童鞋都遇到环境问题,这里统一回复
    • IDE强烈建议使用IDEA Java,只需配置下 SDK 和签名
  • 关于详细的使用说明
    • 这个等我有空会整理一份出来
    • 如果还不会使用Robotium的朋友,请先找资料了解基本的使用
  • 自动遍历时的跨进程操作目前还是有些问题
    • 具体表现:去到相机、拨号盘等应用,有几率重启 Activity 失败
    • 目前做法:检测到当前 Activity 非被测 App 的 Activity 时重启,重启 Activity 失败达到 3 次后,则重启被测 App
    • 建议:如非必要,跨进程操作加入忽略列表(如点击相机时,相机的资源 ID)
  • 有用到 Robotium 写 UI 自动化用例的童鞋,配合自动遍历效果更佳
  • 强烈建议根据自己项目需求定制化自动遍历

Github

AutoClick

交流群

目前为止自动遍历最大的收货

  • 复现了一个线上长期存在,而手工又复现不了的崩溃

    • 崩溃信息
    Fragment IllegalStateException: Can not perform this action after onSaveInstance
    
  • 遍历出最多的崩溃类型依然是异步请求时更新 UI 导致的崩溃(UI 已经销毁,不应该更新 UI)

后续

待挖掘 Robotium 自动遍历的其他价值,欢迎提供想法和建议

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞

第一个占位,给个赞,待更大评价。

lsy 回复

好快

放假了还这么给力。。不用休息呀

abc123 回复

反正也是闲着

代码库已经更新了最新的吗?下载的感觉没变化哟

qq 申请入群了

—— 来自 TesterHome 官方 安卓客户端

lsy 回复

power 分支哦

楼主我想问一下,注入点击和 accessibilityNodeInfo.performAction(accessibilityNodeInfo.CLICK_ACTION) 使用时的场景区别,我个人认为是 accessibilityNodeInfo 的点击适用于控件点击。注入点击适用于控件的 clickable = false 时 。不知道我的理解对不对

wixed 回复

你实践一下就知道了

赞👍,我都弄完了,也没遍历起来,应该是我的 app 太简单的缘故,建议楼主把登录操作单独封装起来,真的不是每个 app 都要登录

—— 来自 TesterHome 官方 安卓客户端

Heyniu #11 · February 28, 2017 Author
simple 回复

你的 app 不会是纯原生那种简单的吧,哈哈
没登录的话填空就好了

Heyniu 回复

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up