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

Heyniu · February 26, 2017 · Last by wixed replied at February 28, 2017 · 1630 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 回复

好快

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

peter 回复

反正也是闲着

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

qq申请入群了

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

lsy 回复

power分支哦

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

wixed 回复

你实践一下就知道了

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

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

Heyniu #11 · February 28, 2017 作者
simple 回复

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

Heyniu 回复

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