其中所用到的工具借鉴了目前大多是测试普遍用到的第三方监测APK,但较多博客都未对使用方法以及注意事项有详细的说明,个人整理一番,仅供借鉴和个人记忆
工具:耗电监控(PowerTutor)
1.使用PowerTutor检测耗电值
测试前先记录平均电压,可以使用一段时间手机,记录下手机不同耗电阶段时的电压,取平均数:
步骤:启动应用—》点击Stop Profiler—》点击System Viewer—》切换到Stat View视图页面,记录Voltage电压值
方法:
建议:
1.测试场景、执行步骤以及网络环境一致
2.可以使用bat或者python将个别简单步骤进行自动化实现,具体命令可百度
测试步骤:
3.启动应用,进入测试场景,保持1分钟以上,等待电压稳定
4.启动监测工具,点击“StarProfiler”激活检测程序,点击“ApplicationViewer”进入被检测应用列表,点击被测应用,进入详情信息可查看当前应用的LCD、CPU的功耗走势(ChartView)、占比饼图(PieView)、当前运行情况(StatView)关注AveragePower数据即可,即平均数值,待测试时间到达后,记录当前AveragePower数值即可
5.测试完毕后停止工具检测即可
工具:流量检测(ITest)
建议:
1.测试场景、执行步骤以及网络环境一致
2.可以使用bat或者python将个别简单步骤进行自动化实现,具体命令可百度
测试步骤:
1.启动测试工具,增加需监控的应用,设置监控指标以及根据需要进行logcat以及弱网的设置
2.启动被测应用,进入测试场景,等1分钟数据平稳
3.启动监测工具,点击启动监控案件
4.测试时间完成后,点击停止监控,数据保存到提示的存储目录
数据分析:
1.CPU:当前每次记录的耗损,计算平均值即可
2.内存:当前应用每次记录占用整机内存,计算平均即可
3.数据上传下载:记录的数据为持续增长性,即操作应用10分钟,导出的文本数据:[last数据-first数据=测试时间内消耗的数据流量]
android-【DDMS->heap】工具-内存检测工具(内存泄露的检测工具)内存测试:安装android-studio,安装SDK并配置
Heap监测应用进程-内存使用情况
打开DDMS视图
1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的;
2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”;
3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息;
4. 点击选中想要监测的进程,比如system_process进程;
5. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标;
6. 点击Heap视图中的“Cause GC”按钮(清理内存);
7. 此时在Heap视图中就会看到当前选中的进程的内存使用量的详细情况。
说明:
a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;
b) 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化;
c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。
如何才能知道我们的程序是否有内存泄漏的可能性呢?
这里需要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类,类型的对象。
在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。
可以这样判断:
a) 不断的反复操作当前应用,同时注意观察data object的Total Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大,
直到到达一个上限后导致进程被kill掉。
d) 此处已system_process进程为例,在我的测试环境中system_process进程,所占用的内存的data object的Total Size,正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。
在我们的程序中,要是出现某个进程出现了不断增加的现象,可能该应用就存在泄漏的问题。如果某个进程在操作过程中出现程序崩溃,可能该应用程序已申请不到空间,可能存在内存泄露。
内存抖动:
使用AndroidStudio工具:
勾选EnableADBIntergration
勾选待测试的包以及选择视图
内存尽量测试单一场景,便于分析
内存泄漏场景设计思维:
在执行第一次时,进入测试场景GC后,若存在泄露,在第二次进入后,同样GC回收后,如果依然泄露,那么会在上一次基础上造成内存增长,保持一个持续增长的趋势,从而达到测试目的,也同样测试出在该场景可能存在泄露问题
下载“”蜜源app“”,0投资,既省钱,又可以赚钱(平台会付给我邀请费3元每人,激活后,你也可以邀请其他人赚邀请费):
Step 1: 应用宝或者苹果商店下载“蜜源”,这样下载比较安全,经过平台的病毒等检测
Setp 2: 使用手机注册后,需要激活码激活,输入 FaIlFA 激活即可
不懂得,可以私信聊