移动性能测试 Monkey+battery-historian 电量测试 (五)

金主 · March 09, 2018 · Last by yingzi replied at June 27, 2019 · 15690 hits
本帖已被设为精华帖!
:文章有说的不对的地方,大家可以帮忙指出!
Monkey 测试基本操作介绍(一)
Monkey 测试日志讲解(二)
Monkey+Logcat+DDMS内存泄漏分析以及定位(三)
Monkey+Logcat+traces 查找以及分析定位 ANR 问题(四)
Monkey+battery-historian 电量测试(五)

准备电量数据:

1. 断开adb服务

执行:adb kill-server

2. 开启adb服务

执行:adb start-server或者adb devices
这两步操作的作用:adb作为一种连接的方式,有可能被其他的程序占用,所以我们做电量记录时要避免打开很多可能冲突的东西

3. 收集电池的历史数据

执行:adb shell dumpsys batterystats --enable full-wake-history

4. 重置电池数据

执行:adb shell dumpsys batterystats --reset

5. 使用monkey对要进行电量测试的应用进行操作

执行:adb shell monkey -p 包名 -v 1000

6. 获取电量报告

(这里要注意手机版本,不然后期向Battery Historian导入bugreport.txt文件时会提示“bugreport.txt does not contain a valid bugreport file”,这里也算是一个坑吧)

  1. 从Android 7.0和更高版本的开发设备中获得bug报告:

    cd /Users/weixiangyang/Desktop/

    adb bugreport bugreport.zip

    实例如图:

  2. 从设备6.0和更低版本的开发设备中获得bug报告:

    1. 获取bugreport信息(记录了从开机之后详细的dumpsys,dumpstate和logcat信息):
      adb bugreport > 存放的电脑地址/bugreport.txt
    2. 获取dumpsys信息(获取系统信息:比如内存,CPU,accounts,activities,wifi等信息)
      adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt
      或者获取指定的应用程序的dumpsys信息:
      adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt

7. 使用Battery Historian查看batterystats.txt文件的图形化报告,下载Battery Historian工具,继续往下看

Battery Historian工具简介

Battery Historian 一款由Google提供的Android系统电量分析工具,从手机中导出bugreport文件上传至页面,在网页中生成详细的图表数据来展示手机上各模块电量消耗过程,最后通过App数据的分析制定出相关的电量优化的方法。

Battery Historian工具安装有两种:

1. 安装GO环境、Python、Java环境(这种方法我不管了,亲们自己上GitHub研究)

参看链接:https://github.com/google/battery-historian

2. 通过安装Docker环境来安装(这种简单方便)

  1. Docker官方下载地址: Mac:https://docs.docker.com/docker-for-mac/ Windows:https://docs.docker.com/docker-for-mac/
  2. 查看是否安装成功: 执行:docker version
  3. ***,启动镜像,执行命令: docker run -d -p 9999:9999 bhaavan/battery-historian

查看batterystats.txt文件的图形化报告

1. 使用浏览器访问地址:http://localhost:9999

2. 导入batterystats.txt或者bugreport.zip文件


记载这里我遇到一个坑,就是文件上传后,submit提交按钮不显示

  1. 原因:本质是web某些资源没有加载出来,其中的一些资源需要访问google服务器,但是这些资源被墙了,无法访问。只要解决了墙的问题,submit的问题也就迎刃而解了。
  2. 解决方案:
    1. 想办法谷歌(我啦,用同事们买的国外服务器😆
    2. 想办法将无法加载的资源替换为可以加载的资源,参考:https://github.com/waquer/ReplaceGoogleCDN

有同学说***之后还是无法显示submit提交按钮,我这里提供下他的解决方案

执行:go run setup.go(必须要***,不然资源下载不到)
参考链接:https://blog.csdn.net/super_spy/article/details/51966956

3. 导入成功后,成功展示电量分析结果,下面我就要来贴神图

电量变化曲折图:

系统统计数据图:

英文看不懂?来来来,我再贴个翻译后的,这样内容一目了然,我也不用解释了

注意个细节啊,这个报告竟然还有Errors与Warnings日志?看图

数据解析

CPU runing: cpu运行的状态
Kernel only uptime: 只有kernell运行
Userspace wakelock: 用户空间申请的锁
Screen: 屏幕是否点亮
Top app: 当前在内存中的应用,按内存占用率排序
Activity Manager Proc: 活跃的用户进程
Crashes(logcat): 某个时间点出现crash的应用
Doze: 是否进入doze模式
Device active: 和Doze相反
JobScheduler: 异步作业调度
SyncManager: 同步操作
Temp White List: 电量优化白名单
Phone call: 是否打电话
GPS: 是否使用GPS
Network connectivity: 网络连接状态(wifi、mobile是否连接)
Mobile signal strength: 移动信号强度(great\good\moderate\poor)
Wifi scan: 是否在扫描wifi信号
Wifi supplicant: 是否有wifi请求
Wifi radio: 是否正在通过wifi传输数据
Wifi signal strength: wifi信号强度
Wifi running: wifi组件是否在工作(未传输数据)
Wifi on: 同上
Audio: 音频子系统?
Camera: 相机是否在工作
Video:是否在播放视频
Foreground process: 前台进程
Package install: 是否在进行包安装
Package active: 包管理在工作
Battery level: 电池当前电量
Temperature: 电池温度
Plugged: 连接usb或者充电
Charging on: 在充电
Logcat misc: 是否在导出日志

电量优化参考:https://www.jianshu.com/p/5d83d8649c98

最后,monkey系列算是更新完了,喜欢的宝贝们可以给个赞哈!😆

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 71 条回复 时间 点赞
金主 Monkey 测试基本操作介绍 (一) 中提及了此贴 09 Mar 16:33
金主 Monkey 测试日志讲解 (二) 中提及了此贴 09 Mar 16:33
恒温 将本帖设为了精华贴 09 Mar 16:35

顶一下

支持一下,不错。

IOS的电量测试有什么方案吗

金主 #9 · March 09, 2018 作者
Vin 回复

暂时没研究

@JinZhu 小姐姐,你辣么腻害,让这帮测试小哥哥怎么混

这波操作很6,给你点个赞,越写越厉害了。

好棒 支持下

金主 #13 · March 11, 2018 作者
小马 回复

惭愧😪

@JinZhu 小姐姐,我可以加你好友吗,我有问题想向你请教啦

金主 回复

关键不知道这个采集到的数据准确吗?指导性意义大不大呢?

厉害

金主 #17 · March 12, 2018 作者
小萨 回复

操作尽量是在未充电情况下,这样采集电量数据还算准确

厉害了啊!我的妹

中文翻译的配置文件能否共享一份

厉害了

看了一遍,整理得全面,果断一个小小打赏,哈哈

金主 #22 · March 14, 2018 作者
afantishui 回复

感谢帅哥的打赏😂

23Floor has been deleted

用docker安装的,不***访问不了:

GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/hot-sneaks/jquery-ui.css net::ERR_CONNECTION_RESET
localhost/:8 GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js net::ERR_CONNECTION_RESET
金主 #25 · March 15, 2018 作者
water 回复

所以才有了第三步,启动镜像

金主 回复

就是通过镜像启动的,还是存在这个问题

金主 回复

正在想办法***TAT

金主 #28 · March 15, 2018 作者
water 回复

翻吧翻吧,我翻了整整一天,最后还是用的同事买的服务器😪

您好,想请教一个问题,我在安装好docker,docker-version也显示正确后,根据run -d -p…命令运行battery-historian时出错显示找不到镜像,当时是可以***的,不知道是不是我遗漏了什么,一直不知道该如何解决错误

金主 #30 · March 20, 2018 作者
jbj 回复

你加我微信吧,我要看下具体日志,微信个人信息中有的

金主 #31 · March 20, 2018 作者
81—1 回复

共享不了,你没有相关环境,给你也打不开,最多只能看下我截得图😰

金主 回复

哦,应该是改docker里某个生成HTML的脚本文件吧,方便就给个吧,或者告诉哪个文件也行,我一直没找到。

金主 #33 · March 20, 2018 作者
81—1 回复

通过adb bugreport bugreport.zip获取电量报告,再访问谷歌浏览器进行解析

金主 回复

中文咋来的呢,环境我的都好了的。

金主 回复

http://ownerworld.win:8081/
我的服务器,想请教你是咋翻译的。

金主 #36 · March 20, 2018 作者
81—1 回复

我的浏览器自带翻译功能呢!😰

金主 回复

😱 你说的是chrome的翻译么,那个不准额。

金主 #38 · March 20, 2018 作者
81—1 回复

大概意思是明白的,你现在获取到解析报告了吧

金主 回复

我一直是能获取的,只是希望能汉化batter-history。

金主 #40 · March 20, 2018 作者
81—1 回复

嗯,那我这没有办法哦,你们公司现在开始做这块的测试啦?

金主 回复

移动设备性能越来越强,在电池技术没有突破性进展的基础下,用户对电量的需求已经有超过流量的趋势了。

金主 #42 · March 20, 2018 作者
81—1 回复

好官方的回答

金主 回复

意思就是:学个技能,好吹牛皮。

我怎么弄都是提示“”bugreport.zip does not contain a valid bugreport file“”

@JinZhu 楼主非常感谢分享 ,能出个流量测试的么。

天之依 回复

adb bugreport > bugreport.txt

之前搭建过这个工具,可以得到 最后结果;然后的,这是测量么,不是测试么?

好厉害啊,姐姐。

提交bugreport.txt后,Battery Historian为什么没有显示我上传的文件?难道这个也必须要***吗?急

金主 #50 · April 18, 2018 作者
hui_jian 回复

对啊,谷歌浏览器要***的

金主 #51 · April 18, 2018 作者
hui_jian 回复

该文件有部分内容要访问谷歌服务器进行解析的

金主 回复

我现在***了,为什么还是加载不出来

金主 #53 · April 19, 2018 作者
hui_jian 回复

截图,我瞅瞅,Docker*没成功?还是谷歌没*成功?

又学习了一波,人又漂亮技术又好,还这么细心。。。。

金主 回复

我是用ssr***的,youtube我都可以看,应该没问题吧

金主 回复


我这样应该是没问题吧

金主 #58 · April 19, 2018 作者
hui_jian 回复

你谷歌浏览器能访问其他链接不?我觉得你谷歌浏览器没***成功

金主 回复

我谷歌浏览器其他链接也可以啊,国外的都能访问,google官网都可以,android官网也可以

金主 回复

windows电脑也需要安装dock吗,难道是我没有安装dock?

金主 #61 · April 19, 2018 作者

那你试着提交bugreport.zip的文件,看能否显示出提交按钮

金主 回复

没办法

必须安装dock环境吗

金主 #64 · April 19, 2018 作者
hui_jian 回复

没安装docker,你的Battery Historian工具是怎么安装的?

金主 回复


这样安装的

金主 #66 · April 19, 2018 作者
hui_jian 回复

😂 这这这,你加我qq聊吧:2359465121

金主 #67 · April 20, 2018 作者

go run setup.go

请问6.0以及以下版本没看到adb shell dumpsys batterystats这个文件的用处

7.0的手机adb bugreport bugreport.zip 这个命令没用。


adb bugreport > 存放的电脑地址/bugreport.txt

adb shell dumpsys batterystats > 存放的电脑地址/batterystats.txt

adb shell dumpsys batterystats > 包名 > 存放的电脑地址/batterystats.txt

这几个命令获取的文件上传之后没内容。

7.0的手机adb bugreport bugreport.zip没用,如下图

希望楼主可以加入自动化测试微信群,互相学习,互相成长。aitestwork。谢谢

72Floor has been deleted

adb bugreport bugreport.zip 7.0以上机型,生成后,文件存到了手机的一个文件夹,是没有权限获取的对么,除非root了手机?我尝试把它存到本地电脑提示拒绝访问。楼主大人,获取后能直接获取到文件么?

金主 Monkey+battery-historian 电量测试 (五) 中提及了此贴 22 Nov 10:43
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 13 Dec 14:44

我们是用功耗仪来测的,7.0以上的手机拿不到电量值吧!好像必须得root还是必须得开发机来着

7.0手机获取不到电量报告

回复楼上部分问题:1.关于bugreport获取的电量数据的准确性,bugreport是以一个xml文件(framework下一个叫power_profile.xml的文件)为基准值来计算在测试期间的电量消耗,如果这个xml文件未被修改过,xml的功耗基准都是Google的默认值,对DOU测试分析有一定的参考意义;2.关于获取bugreport,在Google开发者网站上(https://developer.android.com/studio/profile/battery-historianbugreport的方法,如下:),有如何获取
For devices running Android 7.0 and higher:
adb bugreport > [path/]bugreport.zip

For devices running Android 6.0 and lower:
adb bugreport > [path/]bugreport.txt

如果在使用命令时无法导出7.0以上的bugreport,很有可能是因为你的adb版本过低导致的,这个命令是不需要root权限的,默认权限即可
adb命令介绍(https://developer.android.com/studio/command-line/adb),
adb版本下载(https://developer.android.com/studio/releases/platform-tools

Seamus 回复

@Seamus 请问下,有没有遇到导入后生成报告是空白,报错信息:
Errors
strconv.ParseFloat: parsing "p": invalid syntax
could not parse aggregated battery stats
device capacity is 0

template: checkin.html:154:31: executing "checkin" at <.CheckinSummary.Wifi...>: can't evaluate field WifiTransmitTime in type aggregated.Checkin,有人遇到过这个错误吗?

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