NimbleDroid
2018-02-22 小文字前言
本文为NimbleDroid的记录笔记。主要介绍nimbledroid所支持的功能和使用说明。
产品在不断完善,15年时,哥大的杨俊峰创办的nimbledroid才起步,注册即可免费使用;现在已经更加完善并且开始商业化付费服务。
以下主要从分析场景和使用两大块来介绍nimbledroid
- 场景,可以简单理解为应用运行的场景,比如启动流程,和后续的用户交互场景,页面浏览,按钮点击等等
- 使用,即是如何上传应用,使用nimbledroid的服务,以及如何查看报告,分析数据
需要注意的是,在使用nimbledroid的过程中会涉及较多的名词概念,这些概念的定义是为了更好的分析和使用服务。不要把这些概念严苛的推广到整个开发当中,因为并不一定合适/严谨,笔者也不会对这些概念做定义
App冷启动
冷启动是第一个分析场景,并且是每个应用分析过程中都会分析的通用检查。
重启设备,并启动app直到程序首页展示
。这可以看做一个比较好的冷启动示例。
在衡量冷启动 时有三个限定条件:
- App已经被安装在设备上,并且运行过;
- App当前没有处于后台加载中;
- 时间的计算是从App的桌面图标被点击直到我们认为启动已经结束。
这里有一个需要关注的点:NimbleDroid是怎么知道app启动结束了
?
根据官方的解释,他们采用的启发式手法来判定:
- 主Activity已经展示
- 主Activity中加载的进度框动画结束
确定主Activity是通过多次启动app,并等待30s,观察最后一个Activity;如果多次启动,最后得到的Activity都相同,则认为他是我们需要的主Activity
这种判定方法得到的Activity有可能不满足我们的需求,比如有些App是未登录情况展示登录页面,同时未提供自动登录账户。
如果自定判定不满足需求,可以通过自定义章节进行处理。
场景发现
NimbleDroid的爬虫可以自动发现场景,通过自动化的爬虫技术使得人工投入的价值最大化。
在自动发现的过程中,只对最后一步的进行检测,比如交互操作径路为:加载首页=》点击产品=》加入购物车=》点击购物车,那么这个流程中只有最后一步点击购物车后加载的购物车页面会被检测。
如果提供账号,可以进行自动登录操作,以便于检测哪些需要登录后才能执行的操作。
场景的命名默认为执行步骤,也可以手工加以重命名。
为了使检测更加高效,
- 可以提供控件的唯一标识id和类名
- 提供账号信息,自动登录
- 爬虫会爬取可点击的控件/父控件
目前来说,爬虫还有一些限制:
- 不支持scroll和swipe
- 不支持短信发送和二次授权验证
检测与分析
NimbleDroid会检查app的多个维度,也会进行代码诊断分析;
检查分为可量化的数据,以及其他一些报告。
可量化的数据:
- 速度
- 帧率
- 带宽(上行、下行)
- 最大内存使用量
- 磁盘读写速率
- 方法数
- 文件下载大小
其他一些报告数据:
- 内存泄漏
- app崩溃
- 线程时间线
- 方法调用栈
- 网络追踪。
上传APK
上传apk,比较简单,根据页面提示上传apk,点击下一步就可以,不细讲
查阅报告
报告查阅比较核心,涉及到我们能得到什么有价值信息。
App信息页面
包括apk文件名,上传者,上传时间,文件大小,方法数,场景的简化列表
场景详请页面
- 包括导航侧边栏,可以切换到不同维度查看各项数据;
- 速度曲线图,方法调用详情表
- SDK消耗时间饼图
- 时间线图
- app横向比较图
方法数
可以统计不同sdk各自的方法数
持续集成CI
可持续集成相当于把上述完整的一个统计运用于自动流程;因此需要申请配置相关的api key
然后通过gradle 插件实现自动上传检测。这里我们暂时不考虑CI,相关使用配置可以查阅: